@sapudex/web-components 0.143.0 → 0.172.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 (508) hide show
  1. package/.eslintignore +1 -0
  2. package/bundle.esm.js +9 -0
  3. package/dist/Badge.d.ts +21 -14
  4. package/dist/Badge.js +20 -26
  5. package/dist/Badge.js.map +1 -1
  6. package/dist/Breadcrumbs.d.ts +23 -21
  7. package/dist/Breadcrumbs.js +58 -40
  8. package/dist/Breadcrumbs.js.map +1 -1
  9. package/dist/BreadcrumbsItem.js +0 -1
  10. package/dist/BreadcrumbsItem.js.map +1 -1
  11. package/dist/Checkbox.js +0 -1
  12. package/dist/Checkbox.js.map +1 -1
  13. package/dist/CountrySelector.d.ts +9 -3
  14. package/dist/CountrySelector.js +48 -19
  15. package/dist/CountrySelector.js.map +1 -1
  16. package/dist/DatePicker.d.ts +2 -2
  17. package/dist/DatePicker.js.map +1 -1
  18. package/dist/Dropdown.js +0 -3
  19. package/dist/Dropdown.js.map +1 -1
  20. package/dist/Footer.d.ts +53 -10
  21. package/dist/Footer.js +41 -11
  22. package/dist/Footer.js.map +1 -1
  23. package/dist/Link.d.ts +2 -5
  24. package/dist/Link.js +4 -8
  25. package/dist/Link.js.map +1 -1
  26. package/dist/List.d.ts +16 -1
  27. package/dist/List.js +154 -100
  28. package/dist/List.js.map +1 -1
  29. package/dist/ListItem.d.ts +1 -0
  30. package/dist/ListItem.js +3 -0
  31. package/dist/ListItem.js.map +1 -1
  32. package/dist/MastheadItem.d.ts +12 -2
  33. package/dist/MastheadItem.js +34 -7
  34. package/dist/MastheadItem.js.map +1 -1
  35. package/dist/MastheadMenu.d.ts +1 -0
  36. package/dist/MastheadMenu.js +13 -4
  37. package/dist/MastheadMenu.js.map +1 -1
  38. package/dist/MastheadMenuItem.d.ts +10 -0
  39. package/dist/MastheadMenuItem.js +24 -3
  40. package/dist/MastheadMenuItem.js.map +1 -1
  41. package/dist/MastheadMobileMenu.js +2 -2
  42. package/dist/MastheadMobileMenu.js.map +1 -1
  43. package/dist/MastheadProfileMenu.js +2 -2
  44. package/dist/MastheadProfileMenu.js.map +1 -1
  45. package/dist/MastheadShell.d.ts +4 -0
  46. package/dist/MastheadShell.js +21 -5
  47. package/dist/MastheadShell.js.map +1 -1
  48. package/dist/Pagination.d.ts +13 -3
  49. package/dist/Pagination.js +90 -57
  50. package/dist/Pagination.js.map +1 -1
  51. package/dist/PhoneNumberField.d.ts +3 -0
  52. package/dist/PhoneNumberField.js +9 -4
  53. package/dist/PhoneNumberField.js.map +1 -1
  54. package/dist/RangeSlider.js +0 -1
  55. package/dist/RangeSlider.js.map +1 -1
  56. package/dist/Search.d.ts +5 -4
  57. package/dist/Search.js +13 -13
  58. package/dist/Search.js.map +1 -1
  59. package/dist/SearchableListBase.d.ts +7 -1
  60. package/dist/SearchableListBase.js +47 -4
  61. package/dist/SearchableListBase.js.map +1 -1
  62. package/dist/SecondaryNavigation.d.ts +2 -2
  63. package/dist/SecondaryNavigation.js +20 -10
  64. package/dist/SecondaryNavigation.js.map +1 -1
  65. package/dist/SecondaryNavigationItem.d.ts +6 -3
  66. package/dist/SecondaryNavigationItem.js +50 -26
  67. package/dist/SecondaryNavigationItem.js.map +1 -1
  68. package/dist/SecondaryNavigationSubItem.d.ts +1 -0
  69. package/dist/SecondaryNavigationSubItem.js +3 -0
  70. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  71. package/dist/SegmentedButton.d.ts +2 -2
  72. package/dist/SegmentedButton.js.map +1 -1
  73. package/dist/SelectBox.d.ts +6 -9
  74. package/dist/SelectBox.js +50 -55
  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-8623b7b1.js → bundle.esm-981c5cbb.js} +187 -191
  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/assets/{parameters-bundle.css-c897ae23.js → parameters-bundle.css-07457fce.js} +2 -2
  133. package/dist/css/themes/Badge.css +1 -1
  134. package/dist/css/themes/BreadcrumbsPopover.css +1 -1
  135. package/dist/css/themes/Button.css +1 -1
  136. package/dist/css/themes/DatePickerPopover.css +1 -1
  137. package/dist/css/themes/FilterMenu.css +1 -1
  138. package/dist/css/themes/Footer.css +1 -1
  139. package/dist/css/themes/MastheadItem.css +1 -1
  140. package/dist/css/themes/MastheadMenu.css +1 -1
  141. package/dist/css/themes/MastheadMenuItem.css +1 -1
  142. package/dist/css/themes/MastheadShell.css +1 -1
  143. package/dist/css/themes/MediaPlayer.css +1 -1
  144. package/dist/css/themes/Modal.css +1 -1
  145. package/dist/css/themes/RatingIndicator.css +1 -1
  146. package/dist/css/themes/SelectBox.css +1 -1
  147. package/dist/css/themes/Slider.css +1 -1
  148. package/dist/css/themes/TableCell.css +1 -1
  149. package/dist/css/themes/TableCellBase.css +1 -1
  150. package/dist/css/themes/Tag.css +1 -1
  151. package/dist/css/themes/TagGroup.css +1 -1
  152. package/dist/css/themes/TextArea.css +1 -1
  153. package/dist/css/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +1 -1
  154. package/dist/custom-elements-internal.json +232 -31
  155. package/dist/custom-elements.json +224 -30
  156. package/dist/features/SearchSuggestionsPopover.d.ts +16 -0
  157. package/dist/features/SearchSuggestionsPopover.js +49 -0
  158. package/dist/features/SearchSuggestionsPopover.js.map +1 -1
  159. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -0
  160. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -0
  161. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -0
  162. package/dist/generated/assets/i18n/messagebundle_da.json +1 -0
  163. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  164. package/dist/generated/assets/i18n/messagebundle_el.json +1 -0
  165. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_et.json +1 -0
  168. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -0
  169. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -0
  171. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -0
  172. package/dist/generated/assets/i18n/messagebundle_it.json +1 -0
  173. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -0
  174. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -0
  175. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -0
  176. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -0
  177. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -0
  178. package/dist/generated/assets/i18n/messagebundle_no.json +1 -0
  179. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -0
  180. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -0
  181. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -0
  182. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -0
  183. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -0
  184. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -0
  185. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -0
  186. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -0
  187. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -0
  188. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -0
  189. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -0
  190. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -0
  191. package/dist/generated/assets/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.json +1 -1
  192. package/dist/generated/i18n/i18n-defaults.d.ts +7 -1
  193. package/dist/generated/i18n/i18n-defaults.js +7 -1
  194. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  195. package/dist/generated/json-imports/i18n-static.js +86 -2
  196. package/dist/generated/json-imports/i18n-static.js.map +1 -1
  197. package/dist/generated/json-imports/i18n.js +58 -2
  198. package/dist/generated/json-imports/i18n.js.map +1 -1
  199. package/dist/generated/templates/BadgeTemplate.lit.js +4 -4
  200. package/dist/generated/templates/BadgeTemplate.lit.js.map +1 -1
  201. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +3 -3
  202. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
  203. package/dist/generated/templates/CountrySelectorTemplate.lit.js +2 -2
  204. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  205. package/dist/generated/templates/FooterTemplate.lit.js +12 -11
  206. package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
  207. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  208. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  209. package/dist/generated/templates/ListTemplate.lit.js +3 -3
  210. package/dist/generated/templates/ListTemplate.lit.js.map +1 -1
  211. package/dist/generated/templates/MastheadItemTemplate.lit.js +17 -16
  212. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  213. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +15 -14
  214. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
  215. package/dist/generated/templates/MastheadMenuTemplate.lit.js +3 -3
  216. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  217. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +1 -1
  218. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
  219. package/dist/generated/templates/MastheadShellTemplate.lit.js +10 -9
  220. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  221. package/dist/generated/templates/PaginationTemplate.lit.js +3 -3
  222. package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
  223. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +1 -1
  224. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +1 -1
  225. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +1 -1
  226. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
  227. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +2 -2
  228. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  229. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +3 -3
  230. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
  231. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +3 -3
  232. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -1
  233. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +1 -1
  234. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  235. package/dist/generated/templates/SelectBoxTemplate.lit.js +3 -5
  236. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  237. package/dist/generated/templates/StepInputTemplate.lit.js +1 -1
  238. package/dist/generated/templates/StepInputTemplate.lit.js.map +1 -1
  239. package/dist/generated/templates/TagGroupTemplate.lit.js +2 -2
  240. package/dist/generated/templates/TagGroupTemplate.lit.js.map +1 -1
  241. package/dist/generated/templates/WizardTemplate.lit.js +1 -1
  242. package/dist/generated/templates/WizardTemplate.lit.js.map +1 -1
  243. package/dist/generated/themes/Badge.css.js +1 -1
  244. package/dist/generated/themes/Badge.css.js.map +1 -1
  245. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  246. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  247. package/dist/generated/themes/Button.css.js +1 -1
  248. package/dist/generated/themes/Button.css.js.map +1 -1
  249. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  250. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  251. package/dist/generated/themes/FilterMenu.css.js +1 -1
  252. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  253. package/dist/generated/themes/Footer.css.js +1 -1
  254. package/dist/generated/themes/Footer.css.js.map +1 -1
  255. package/dist/generated/themes/MastheadItem.css.js +1 -1
  256. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  257. package/dist/generated/themes/MastheadMenu.css.js +1 -1
  258. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  259. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  260. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  261. package/dist/generated/themes/MastheadShell.css.js +1 -1
  262. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  263. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  264. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  265. package/dist/generated/themes/Modal.css.js +1 -1
  266. package/dist/generated/themes/Modal.css.js.map +1 -1
  267. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  268. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  269. package/dist/generated/themes/SelectBox.css.js +1 -1
  270. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  271. package/dist/generated/themes/Slider.css.js +1 -1
  272. package/dist/generated/themes/Slider.css.js.map +1 -1
  273. package/dist/generated/themes/TableCell.css.js +1 -1
  274. package/dist/generated/themes/TableCell.css.js.map +1 -1
  275. package/dist/generated/themes/TableCellBase.css.js +1 -1
  276. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  277. package/dist/generated/themes/Tag.css.js +1 -1
  278. package/dist/generated/themes/Tag.css.js.map +1 -1
  279. package/dist/generated/themes/TagGroup.css.js +1 -1
  280. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  281. package/dist/generated/themes/TextArea.css.js +1 -1
  282. package/dist/generated/themes/TextArea.css.js.map +1 -1
  283. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js +1 -1
  284. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js.map +1 -1
  285. package/dist/i18n/messagebundle.properties +10 -0
  286. package/dist/i18n/messagebundle_ar.properties +1 -0
  287. package/dist/i18n/messagebundle_bg.properties +1 -0
  288. package/dist/i18n/messagebundle_cs.properties +1 -0
  289. package/dist/i18n/messagebundle_da.properties +1 -0
  290. package/dist/i18n/messagebundle_de.properties +1 -0
  291. package/dist/i18n/messagebundle_el.properties +1 -0
  292. package/dist/i18n/messagebundle_en.properties +4 -0
  293. package/dist/i18n/messagebundle_es.properties +1 -0
  294. package/dist/i18n/messagebundle_et.properties +1 -0
  295. package/dist/i18n/messagebundle_fi.properties +1 -0
  296. package/dist/i18n/messagebundle_fr.properties +1 -0
  297. package/dist/i18n/messagebundle_hr.properties +1 -0
  298. package/dist/i18n/messagebundle_hu.properties +1 -0
  299. package/dist/i18n/messagebundle_it.properties +1 -0
  300. package/dist/i18n/messagebundle_iw.properties +2 -0
  301. package/dist/i18n/messagebundle_ko.properties +1 -0
  302. package/dist/i18n/messagebundle_lt.properties +1 -0
  303. package/dist/i18n/messagebundle_lv.properties +1 -0
  304. package/dist/i18n/messagebundle_nl.properties +1 -0
  305. package/dist/i18n/messagebundle_no.properties +1 -0
  306. package/dist/i18n/messagebundle_pl.properties +1 -0
  307. package/dist/i18n/messagebundle_pt.properties +1 -0
  308. package/dist/i18n/messagebundle_pt_BR.properties +1 -0
  309. package/dist/i18n/messagebundle_ro.properties +1 -0
  310. package/dist/i18n/messagebundle_ru.properties +1 -0
  311. package/dist/i18n/messagebundle_sk.properties +1 -0
  312. package/dist/i18n/messagebundle_sl.properties +1 -0
  313. package/dist/i18n/messagebundle_sr.properties +2 -0
  314. package/dist/i18n/messagebundle_sv.properties +1 -0
  315. package/dist/i18n/messagebundle_tr.properties +1 -0
  316. package/dist/i18n/messagebundle_uk.properties +1 -0
  317. package/dist/i18n/messagebundle_zh_CN.properties +4 -0
  318. package/dist/i18n/messagebundle_zh_TW.properties +1 -0
  319. package/dist/types/BadgeDesign.d.ts +15 -0
  320. package/dist/types/BadgeDesign.js +18 -0
  321. package/dist/types/BadgeDesign.js.map +1 -0
  322. package/dist/types/IconPlacement.d.ts +5 -0
  323. package/dist/types/IconPlacement.js +7 -0
  324. package/dist/types/IconPlacement.js.map +1 -0
  325. package/dist/types/List.d.ts +8 -0
  326. package/dist/types/List.js.map +1 -1
  327. package/dist/utils/isLetterKeyPressed.d.ts +2 -0
  328. package/dist/utils/isLetterKeyPressed.js +5 -0
  329. package/dist/utils/isLetterKeyPressed.js.map +1 -0
  330. package/dist/utils/listItemLabelStartsWithKeyFocus.d.ts +3 -0
  331. package/dist/utils/listItemLabelStartsWithKeyFocus.js +55 -0
  332. package/dist/utils/listItemLabelStartsWithKeyFocus.js.map +1 -0
  333. package/dist/utils/listItemLabelUtils.d.ts +7 -0
  334. package/dist/utils/listItemLabelUtils.js +36 -0
  335. package/dist/utils/listItemLabelUtils.js.map +1 -0
  336. package/dist/vscode.html-custom-data.json +63 -26
  337. package/dist/web-types.json +113 -38
  338. package/package.json +1 -1
  339. package/src/Badge.hbs +16 -5
  340. package/src/Badge.ts +36 -19
  341. package/src/Breadcrumbs.ts +92 -66
  342. package/src/BreadcrumbsItem.ts +0 -1
  343. package/src/BreadcrumbsPopover.hbs +11 -9
  344. package/src/Checkbox.ts +0 -1
  345. package/src/CountrySelector.hbs +2 -2
  346. package/src/CountrySelector.ts +66 -23
  347. package/src/DatePicker.ts +2 -2
  348. package/src/Dropdown.ts +0 -2
  349. package/src/Footer.hbs +52 -28
  350. package/src/Footer.ts +81 -22
  351. package/src/Link.ts +5 -9
  352. package/src/List.hbs +2 -2
  353. package/src/List.ts +182 -112
  354. package/src/ListItem.hbs +2 -2
  355. package/src/ListItem.ts +4 -0
  356. package/src/MastheadItem.hbs +14 -4
  357. package/src/MastheadItem.ts +42 -9
  358. package/src/MastheadMenu.hbs +4 -4
  359. package/src/MastheadMenu.ts +20 -8
  360. package/src/MastheadMenuItem.hbs +10 -2
  361. package/src/MastheadMenuItem.ts +28 -1
  362. package/src/MastheadMobileMenu.ts +2 -2
  363. package/src/MastheadProfileMenu.hbs +1 -0
  364. package/src/MastheadProfileMenu.ts +3 -2
  365. package/src/MastheadShell.hbs +25 -19
  366. package/src/MastheadShell.ts +25 -5
  367. package/src/Pagination.hbs +3 -2
  368. package/src/Pagination.ts +110 -60
  369. package/src/PhoneNumberField.hbs +3 -3
  370. package/src/PhoneNumberField.ts +16 -8
  371. package/src/RangeSlider.ts +0 -1
  372. package/src/Search.hbs +10 -10
  373. package/src/Search.ts +18 -18
  374. package/src/SearchSuggestions.hbs +1 -0
  375. package/src/SearchableListBase.hbs +3 -1
  376. package/src/SearchableListBase.ts +57 -6
  377. package/src/SecondaryNavigation.hbs +1 -0
  378. package/src/SecondaryNavigation.ts +23 -16
  379. package/src/SecondaryNavigationItem.hbs +10 -7
  380. package/src/SecondaryNavigationItem.ts +58 -28
  381. package/src/SecondaryNavigationSubItem.hbs +3 -0
  382. package/src/SecondaryNavigationSubItem.ts +3 -0
  383. package/src/SegmentedButton.ts +2 -2
  384. package/src/SelectBox.hbs +11 -24
  385. package/src/SelectBox.ts +51 -60
  386. package/src/SideNavigationGroup.ts +0 -1
  387. package/src/SideNavigationItem.ts +0 -1
  388. package/src/SideNavigationSubItem.ts +0 -1
  389. package/src/Slider.ts +0 -1
  390. package/src/StepInput.hbs +16 -16
  391. package/src/TabNavigation.ts +2 -2
  392. package/src/Tag.ts +1 -5
  393. package/src/TagGroup.hbs +1 -1
  394. package/src/Tile.ts +2 -2
  395. package/src/Toast.ts +4 -3
  396. package/src/Wizard.hbs +1 -0
  397. package/src/Wizard.ts +1 -1
  398. package/src/WizardTab.ts +0 -1
  399. package/src/features/SearchSuggestionsPopover.ts +67 -1
  400. package/src/generated/i18n/i18n-defaults.ts +2 -2
  401. package/src/generated/json-imports/i18n-static.ts +86 -2
  402. package/src/generated/json-imports/i18n.ts +59 -3
  403. package/src/generated/templates/BadgeTemplate.lit.ts +3 -3
  404. package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +3 -3
  405. package/src/generated/templates/CountrySelectorTemplate.lit.ts +2 -2
  406. package/src/generated/templates/FooterTemplate.lit.ts +12 -11
  407. package/src/generated/templates/ListItemTemplate.lit.ts +2 -2
  408. package/src/generated/templates/ListTemplate.lit.ts +3 -3
  409. package/src/generated/templates/MastheadItemTemplate.lit.ts +17 -16
  410. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +15 -14
  411. package/src/generated/templates/MastheadMenuTemplate.lit.ts +3 -3
  412. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +1 -1
  413. package/src/generated/templates/MastheadShellTemplate.lit.ts +10 -9
  414. package/src/generated/templates/PaginationTemplate.lit.ts +3 -3
  415. package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +1 -1
  416. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +1 -1
  417. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +2 -2
  418. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +3 -3
  419. package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +3 -3
  420. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +1 -1
  421. package/src/generated/templates/SelectBoxTemplate.lit.ts +3 -5
  422. package/src/generated/templates/StepInputTemplate.lit.ts +1 -1
  423. package/src/generated/templates/TagGroupTemplate.lit.ts +2 -2
  424. package/src/generated/templates/WizardTemplate.lit.ts +1 -1
  425. package/src/generated/themes/Badge.css.ts +1 -1
  426. package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
  427. package/src/generated/themes/Button.css.ts +1 -1
  428. package/src/generated/themes/DatePickerPopover.css.ts +1 -1
  429. package/src/generated/themes/FilterMenu.css.ts +1 -1
  430. package/src/generated/themes/Footer.css.ts +1 -1
  431. package/src/generated/themes/MastheadItem.css.ts +1 -1
  432. package/src/generated/themes/MastheadMenu.css.ts +1 -1
  433. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  434. package/src/generated/themes/MastheadShell.css.ts +1 -1
  435. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  436. package/src/generated/themes/Modal.css.ts +1 -1
  437. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  438. package/src/generated/themes/SelectBox.css.ts +1 -1
  439. package/src/generated/themes/Slider.css.ts +1 -1
  440. package/src/generated/themes/TableCell.css.ts +1 -1
  441. package/src/generated/themes/TableCellBase.css.ts +1 -1
  442. package/src/generated/themes/Tag.css.ts +1 -1
  443. package/src/generated/themes/TagGroup.css.ts +1 -1
  444. package/src/generated/themes/TextArea.css.ts +1 -1
  445. package/src/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.ts +1 -1
  446. package/src/i18n/messagebundle.properties +10 -0
  447. package/src/i18n/messagebundle_ar.properties +1 -0
  448. package/src/i18n/messagebundle_bg.properties +1 -0
  449. package/src/i18n/messagebundle_cs.properties +1 -0
  450. package/src/i18n/messagebundle_da.properties +1 -0
  451. package/src/i18n/messagebundle_de.properties +1 -0
  452. package/src/i18n/messagebundle_el.properties +1 -0
  453. package/src/i18n/messagebundle_en.properties +4 -0
  454. package/src/i18n/messagebundle_es.properties +1 -0
  455. package/src/i18n/messagebundle_et.properties +1 -0
  456. package/src/i18n/messagebundle_fi.properties +1 -0
  457. package/src/i18n/messagebundle_fr.properties +1 -0
  458. package/src/i18n/messagebundle_hr.properties +1 -0
  459. package/src/i18n/messagebundle_hu.properties +1 -0
  460. package/src/i18n/messagebundle_it.properties +1 -0
  461. package/src/i18n/messagebundle_iw.properties +2 -0
  462. package/src/i18n/messagebundle_ko.properties +1 -0
  463. package/src/i18n/messagebundle_lt.properties +1 -0
  464. package/src/i18n/messagebundle_lv.properties +1 -0
  465. package/src/i18n/messagebundle_nl.properties +1 -0
  466. package/src/i18n/messagebundle_no.properties +1 -0
  467. package/src/i18n/messagebundle_pl.properties +1 -0
  468. package/src/i18n/messagebundle_pt.properties +1 -0
  469. package/src/i18n/messagebundle_pt_BR.properties +1 -0
  470. package/src/i18n/messagebundle_ro.properties +1 -0
  471. package/src/i18n/messagebundle_ru.properties +1 -0
  472. package/src/i18n/messagebundle_sk.properties +1 -0
  473. package/src/i18n/messagebundle_sl.properties +1 -0
  474. package/src/i18n/messagebundle_sr.properties +2 -0
  475. package/src/i18n/messagebundle_sv.properties +1 -0
  476. package/src/i18n/messagebundle_tr.properties +1 -0
  477. package/src/i18n/messagebundle_uk.properties +1 -0
  478. package/src/i18n/messagebundle_zh_CN.properties +4 -0
  479. package/src/i18n/messagebundle_zh_TW.properties +1 -0
  480. package/src/themes/Badge.css +48 -52
  481. package/src/themes/BreadcrumbsPopover.css +1 -0
  482. package/src/themes/Button.css +1 -1
  483. package/src/themes/DatePickerPopover.css +9 -0
  484. package/src/themes/FilterMenu.css +6 -6
  485. package/src/themes/Footer.css +22 -3
  486. package/src/themes/MastheadItem.css +4 -0
  487. package/src/themes/MastheadMenu.css +1 -1
  488. package/src/themes/MastheadMenuItem.css +4 -0
  489. package/src/themes/MastheadShell.css +5 -0
  490. package/src/themes/MediaPlayer.css +2 -1
  491. package/src/themes/Modal.css +1 -0
  492. package/src/themes/SelectBox.css +4 -88
  493. package/src/themes/TableCell.css +0 -2
  494. package/src/themes/TableCellBase.css +1 -0
  495. package/src/themes/Tag.css +8 -3
  496. package/src/themes/TagGroup.css +8 -0
  497. package/src/themes/TextArea.css +1 -1
  498. package/src/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +0 -5
  499. package/src/types/BadgeDesign.ts +17 -0
  500. package/src/types/IconPlacement.ts +6 -0
  501. package/src/types/List.ts +9 -0
  502. package/src/utils/isLetterKeyPressed.ts +5 -0
  503. package/src/utils/listItemLabelStartsWithKeyFocus.ts +74 -0
  504. package/src/utils/listItemLabelUtils.ts +50 -0
  505. package/dist/assets/messagebundle_de-8158912e.js +0 -1
  506. package/dist/assets/messagebundle_en-c677773a.js +0 -1
  507. package/dist/assets/messagebundle_es-8dab6565.js +0 -1
  508. package/dist/assets/messagebundle_fr-669aca6d.js +0 -1
@@ -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.hbs CHANGED
@@ -4,7 +4,7 @@
4
4
  <div
5
5
  @click="{{getHandleSingleSelectOpen}}"
6
6
  class="udex-text-field__input"
7
- @ui5-iconClick="{{handleRemoveTag}}"
7
+ @ui5-tag-icon-click="{{handleRemoveTag}}"
8
8
  @keydown="{{handleKeyDownTrigger}}"
9
9
  ?open="{{_open}}"
10
10
  tabindex="{{effectiveTabIndex}}"
@@ -38,31 +38,26 @@
38
38
  </div>
39
39
  {{/if}}
40
40
  {{#if showMultiSelectedOptions}}
41
- <ui5-tokenizer
42
- part="tokenizer"
43
- show-more
44
- @ui5-selectionChange="{{handleTagPress}}"
45
- @keydown="{{handleKeydownTokenizer}}"
46
- prevent-popover-open
47
- class="{{tokenizerClass}}"
41
+ <udex-tag-group
42
+ class="udex-tag-group"
43
+ ?displayonly="{{displayonly}}"
44
+ ?readonly="{{readonly}}"
48
45
  ?disabled="{{disabled}}"
49
- @ui5-show-more-items-press="{{getHandlerShowMoreItems}}"
46
+ tooltip-placement="{{tooltipPlacement}}"
47
+ @ui5-tag-click="{{handleTagPress}}"
48
+ @ui5-show-more-tags="{{getHandlerShowMoreItems}}"
49
+ @ui5-tag-keydown="{{handleKeyDownTag}}"
50
50
  ?expanded="{{tokenizerExpanded}}">
51
51
  {{#each selectedItems}}
52
52
  {{#unless this.isGroup}}
53
53
  <udex-tag
54
- accessible-role="option"
55
- class="udex-text-field__token"
56
- @keydown="{{../handleKeyDownTag}}"
57
- ?read-only="{{../isReadOrDisplayOnly}}"
58
- data-id="{{this._id}}"
59
- part="token-{{@index}}"
60
54
  text="{{this.label}}"
55
+ id="{{this._id}}"
61
56
  icon="decline">
62
57
  </udex-tag>
63
58
  {{/unless}}
64
59
  {{/each}}
65
- </ui5-tokenizer>
60
+ </udex-tag-group>
66
61
  {{/if}}
67
62
  {{#if showTrigger}}
68
63
  <udex-control-button
@@ -120,12 +115,4 @@
120
115
  {{searchableList}}
121
116
  {{/if}}
122
117
  </ui5-popover>
123
- {{#if displayonly}}
124
- <udex-tooltip
125
- placement="{{tooltipPlacement}}">
126
- {{#each overflowsTags}}
127
- <ul class="udex-select-box__overflow-tags"><li>{{this.text}}</li></ul>
128
- {{/each}}
129
- </udex-tooltip>
130
- {{/if}}
131
118
  </div>
package/src/SelectBox.ts CHANGED
@@ -32,7 +32,7 @@ import UDExSelectBoxGroupHeader from "./SelectBoxGroupHeader.js";
32
32
  import UDExSearchableListBase from "./SearchableListBase.js";
33
33
  import UDExSearch from "./Search.js";
34
34
  import UDExTag from "./Tag.js";
35
- import UDExTooltip, { PlacementType } from "./Tooltip.js";
35
+ import { PlacementType } from "./Tooltip.js";
36
36
  import UDExButton from "./Button.js";
37
37
  import ValueState from "./types/common.js";
38
38
 
@@ -46,6 +46,7 @@ import TextFieldCss from "./generated/themes/TextField.css.js";
46
46
  import SearchableListCss from "./generated/themes/SearchableList.css.js";
47
47
  import UDExStatusMessage from "./StatusMessage.js";
48
48
  import UDExControlButton from "./ControlButton.js";
49
+ import UDExTagGroup from "./TagGroup.js";
49
50
 
50
51
  /**
51
52
  * @class
@@ -77,7 +78,6 @@ import UDExControlButton from "./ControlButton.js";
77
78
  UDExListSelectAll,
78
79
  UDExSelectBoxItem,
79
80
  UDExList,
80
- UDExTooltip,
81
81
  UDExSearch,
82
82
  UDExButton,
83
83
  Tokenizer,
@@ -87,6 +87,7 @@ import UDExControlButton from "./ControlButton.js";
87
87
  UDExStatusMessage,
88
88
  UDExControlButton,
89
89
  ResponsivePopover,
90
+ UDExTagGroup,
90
91
  ],
91
92
  })
92
93
 
@@ -273,13 +274,16 @@ class UDExSelectBox extends UDExSearchableListBase {
273
274
  }
274
275
 
275
276
  onAfterRendering() {
276
- this._tokenizer = this.getTokenizer();
277
+ this._tokenizer = this.getTagGroup()?._tokenizer;
277
278
  this._popover = this.getPopover();
278
279
  this._search = this.getSearch();
279
280
  this._trigger = this.getTrigger();
280
281
  this._tags = this.getTags();
281
282
  this.handleDirection();
282
283
  if (this._tokenizer?.tokens.length > 0) {
284
+ if (!this.displayonly) {
285
+ this._tokenizer.shadowRoot!.querySelector(".ui5-tokenizer-more-text")?.setAttribute("tabindex", "-1");
286
+ }
283
287
  this.handleOutsideClick();
284
288
  this.resetTagsTabIndexes();
285
289
  }
@@ -333,7 +337,7 @@ class UDExSelectBox extends UDExSearchableListBase {
333
337
  }
334
338
 
335
339
  handleFocusIn() {
336
- if (this.disabled) {
340
+ if (this.isDisabled) {
337
341
  return;
338
342
  }
339
343
  this._focused = true;
@@ -364,17 +368,10 @@ class UDExSelectBox extends UDExSearchableListBase {
364
368
  this._showTagsDropdownContent = false;
365
369
  this.openDropdown();
366
370
  this.handleUnselectTruncatableTag();
367
- this.fireEvent("show-more");
368
371
  }
369
372
 
370
- showMoreReadOnlyItems() {
371
- const tooltip = this.shadowRoot!.querySelector<UDExTooltip>("udex-tooltip")!;
372
- const moreBtn = this._tokenizer.shadowRoot!.querySelector<HTMLElement>(".ui5-tokenizer-more-text")!;
373
- tooltip.onOpen(moreBtn);
374
- }
375
-
376
- handleRemoveTag(e: Event) {
377
- const tag = e.target as UI5Element;
373
+ handleRemoveTag(e: CustomEvent | null, tag?: UI5Element) {
374
+ tag = tag ?? (e?.detail.tag as UI5Element);
378
375
  const tagId: string = tag.getAttribute("data-id")!;
379
376
  this.handleDropdownItemPress(tagId);
380
377
  this.fireEventRemove(tagId);
@@ -388,7 +385,7 @@ class UDExSelectBox extends UDExSearchableListBase {
388
385
  }
389
386
 
390
387
  handleTagPress(e: CustomEvent) {
391
- const tag = e.target as UDExTag;
388
+ const tag = e.detail.tag as UDExTag;
392
389
  tag.selected = false;
393
390
  this.toggleTruncatedPopover(tag);
394
391
  }
@@ -399,60 +396,57 @@ class UDExSelectBox extends UDExSearchableListBase {
399
396
  }
400
397
  }
401
398
 
402
- handleKeydownTokenizer(e: KeyboardEvent) {
403
- e.stopPropagation();
399
+ handleKeyDownTrigger(e: KeyboardEvent) {
400
+ if (!this.isDisabled && (isSpace(e) || isEnter(e))) {
401
+ e.preventDefault();
402
+ e.stopPropagation();
403
+ this._showTagsDropdownContent = false;
404
+ this._openedByTrigger = true;
405
+ this.openDropdown();
406
+ }
407
+ }
408
+
409
+ handleKeyDownTag(e: CustomEvent) {
410
+ if (this.isDisabled) { return; }
411
+ const originalEvent: KeyboardEvent = e.detail.originalEvent;
412
+ const tag = originalEvent.target as UDExTag;
404
413
  this.getTagContent(this._tags[0]).tabIndex = this._inactiveTabIndex;
405
414
 
406
- const target = e.target as Token;
407
- const activeIndex = this._tokenizer.tokens?.indexOf(target);
415
+ const activeIndex = this._tokenizer.tokens?.indexOf(originalEvent.target as Token);
408
416
  const tagsCount = this._tokenizer._tokensCount;
409
- const shouldNavigateTags = (isLeft(e) || isRight(e) || isBackSpace(e) || isDelete(e)) && tagsCount > 0;
410
- this._tokenizer.expanded = shouldNavigateTags;
417
+ this._tokenizer.expanded = (isLeft(originalEvent) || isRight(originalEvent) || isBackSpace(originalEvent) || isDelete(originalEvent)) && tagsCount > 0;
411
418
 
412
- if (isLeft(e) && activeIndex !== 0) {
419
+ if (isLeft(originalEvent) && activeIndex !== 0) {
413
420
  this.focusTag(activeIndex - 1);
414
421
  this.scrollToTag(activeIndex - 1);
415
422
  }
416
423
 
417
- if (isRight(e) && tagsCount !== activeIndex + 1) {
424
+ if (isRight(originalEvent) && tagsCount !== activeIndex + 1) {
418
425
  this.focusTag(activeIndex + 1);
419
426
  this.scrollToTag(activeIndex + 1);
420
427
  }
421
428
 
422
- if ((isDown(e) || isUp(e))) {
429
+ if ((isDown(originalEvent) || isUp(originalEvent))) {
423
430
  this._openedByTrigger = false;
424
431
  this.openDropdown();
425
432
  }
426
- }
427
-
428
- handleKeyDownTrigger(e: KeyboardEvent) {
429
- if (isSpace(e) || isEnter(e)) {
430
- e.preventDefault();
431
- e.stopPropagation();
432
- this._showTagsDropdownContent = false;
433
- this._openedByTrigger = true;
434
- this.openDropdown();
435
- }
436
- }
437
433
 
438
- handleKeyDownTag(e: KeyboardEvent) {
439
- const tag = e.target as UDExTag;
440
- if (isSpace(e) || isShift(e) || isEnter(e)) {
441
- e.preventDefault();
442
- e.stopPropagation();
434
+ if (isSpace(originalEvent) || isShift(originalEvent) || isEnter(originalEvent)) {
435
+ originalEvent.preventDefault();
436
+ originalEvent.stopPropagation();
443
437
  }
444
438
 
445
- if (tag.isTruncatable && this.validTruncatableKey(e)) {
439
+ if (tag.isTruncatable && this.validTruncatableKey(originalEvent)) {
446
440
  this.toggleTruncatedPopover(tag);
447
441
  } else {
448
442
  this._showTagsDropdownContent = false;
449
443
  }
450
444
 
451
- if (isDelete(e) || isBackSpace(e)) {
452
- this.handleRemoveTag(e);
453
- const target = e.target as Token;
445
+ if (isDelete(originalEvent) || isBackSpace(originalEvent)) {
446
+ this.handleRemoveTag(null, tag);
447
+
454
448
  const tags = this._tokenizer.tokens;
455
- const deletedTagIndex = tags.indexOf(target);
449
+ const deletedTagIndex = tags.indexOf(originalEvent.target as Token);
456
450
  let nextTokenIndex = deletedTagIndex + 1;
457
451
  if (this._tokenizer.tokens.length !== 1) {
458
452
  if (deletedTagIndex === tags.length - 1) {
@@ -488,7 +482,7 @@ class UDExSelectBox extends UDExSearchableListBase {
488
482
  }
489
483
 
490
484
  handleOutsideClick(): void {
491
- document.addEventListener("click", (e: MouseEvent) => {
485
+ document.addEventListener("click", (e: Event) => {
492
486
  if (this._tokenizer?.tokens.length > 0 && e.target !== this) {
493
487
  this._tokenizer.expanded = false;
494
488
  }
@@ -574,8 +568,12 @@ class UDExSelectBox extends UDExSearchableListBase {
574
568
  return !this.isDisabled && this.modeSingleSelect ? this.handleOpenSingleSelect() : undefined;
575
569
  }
576
570
 
577
- getHandlerShowMoreItems() {
578
- return this.displayonly ? this.showMoreReadOnlyItems() : this.showMoreItems();
571
+ getHandlerShowMoreItems(e: CustomEvent) {
572
+ if (!this.displayonly) {
573
+ e.preventDefault();
574
+ this.showMoreItems();
575
+ }
576
+ this.fireEvent("show-more");
579
577
  }
580
578
 
581
579
  getPopover(): ResponsivePopover {
@@ -590,12 +588,15 @@ class UDExSelectBox extends UDExSearchableListBase {
590
588
  return this.shadowRoot!.querySelector(".udex-text-field__input")!;
591
589
  }
592
590
 
593
- getTokenizer(): Tokenizer {
594
- return this.shadowRoot!.querySelector<Tokenizer>("[ui5-tokenizer]")!;
591
+ getTagGroup(): UDExTagGroup {
592
+ return this.shadowRoot!.querySelector<UDExTagGroup>("udex-tag-group")!;
595
593
  }
596
594
 
597
595
  getTags(): Array<UDExTag> {
598
- return Array.from(this.shadowRoot!.querySelectorAll<UDExTag>("udex-tag"));
596
+ if (this.getTagGroup()) {
597
+ return Array.from(this.getTagGroup().shadowRoot!.querySelectorAll<UDExTag>("udex-tag"));
598
+ }
599
+ return [];
599
600
  }
600
601
 
601
602
  getTagContent(tag: UDExTag): HTMLElement {
@@ -630,10 +631,6 @@ class UDExSelectBox extends UDExSearchableListBase {
630
631
  return this.readonly || this.displayonly || this.disabled;
631
632
  }
632
633
 
633
- get overflowsTags() {
634
- return this._tokenizer?.tokens?.filter(tag => tag.overflows) || [];
635
- }
636
-
637
634
  get truncatableTagLabel(): string {
638
635
  return this._truncatableTag.text.replace(/<\/?b>/gi, "");
639
636
  }
@@ -656,12 +653,6 @@ class UDExSelectBox extends UDExSearchableListBase {
656
653
  return this.readonly || this.displayonly;
657
654
  }
658
655
 
659
- get tokenizerClass(): string {
660
- return `udex-text-field__tokenizer
661
- ${this.displayonly ? "udex-text-field__tokenize_displayonly" : ""}
662
- ${this.readonly ? "udex-text-field__tokenize_readonly" : ""}`;
663
- }
664
-
665
656
  get tokenizerExpanded() {
666
657
  if (this._showTagsDropdownContent && this._truncatableTag) {
667
658
  return false;
@@ -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 {}