@sapudex/web-components 2.42.0 → 2.44.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 (442) hide show
  1. package/cypress/specs/Checkbox.cy.tsx +1 -1
  2. package/cypress/specs/FilterMenu.cy.tsx +277 -0
  3. package/cypress/specs/Search.cy.tsx +20 -0
  4. package/cypress/specs/SelectBox.cy.tsx +531 -1
  5. package/cypress/specs/TagGroup.cy.tsx +11 -0
  6. package/cypress/specs/Toast.cy.tsx +6 -9
  7. package/dist/FilterMenu.d.ts +4 -0
  8. package/dist/FilterMenu.js +19 -0
  9. package/dist/FilterMenu.js.map +1 -1
  10. package/dist/ListItemBase.js +2 -2
  11. package/dist/ListItemBase.js.map +1 -1
  12. package/dist/MastheadCountrySelector.d.ts +5 -7
  13. package/dist/MastheadCountrySelector.js +17 -64
  14. package/dist/MastheadCountrySelector.js.map +1 -1
  15. package/dist/Search.d.ts +6 -0
  16. package/dist/Search.js +3 -0
  17. package/dist/Search.js.map +1 -1
  18. package/dist/SearchTemplate.js +1 -1
  19. package/dist/SearchTemplate.js.map +1 -1
  20. package/dist/SearchableListBase.d.ts +21 -2
  21. package/dist/SearchableListBase.js +75 -7
  22. package/dist/SearchableListBase.js.map +1 -1
  23. package/dist/SearchableListBaseTemplate.js +3 -3
  24. package/dist/SearchableListBaseTemplate.js.map +1 -1
  25. package/dist/SelectBase.d.ts +3 -1
  26. package/dist/SelectBase.js +20 -15
  27. package/dist/SelectBase.js.map +1 -1
  28. package/dist/SelectBox.d.ts +1 -1
  29. package/dist/SelectBox.js +17 -13
  30. package/dist/SelectBox.js.map +1 -1
  31. package/dist/SelectBoxItem.d.ts +53 -0
  32. package/dist/SelectBoxItem.js +40 -1
  33. package/dist/SelectBoxItem.js.map +1 -1
  34. package/dist/SelectBoxTemplate.js +1 -1
  35. package/dist/SelectBoxTemplate.js.map +1 -1
  36. package/dist/Tag.d.ts +1 -0
  37. package/dist/Tag.js +6 -0
  38. package/dist/Tag.js.map +1 -1
  39. package/dist/TagGroup.d.ts +8 -0
  40. package/dist/TagGroup.js +3 -0
  41. package/dist/TagGroup.js.map +1 -1
  42. package/dist/TagGroupTemplate.js +1 -1
  43. package/dist/TagGroupTemplate.js.map +1 -1
  44. package/dist/TagTemplate.js +1 -1
  45. package/dist/TagTemplate.js.map +1 -1
  46. package/dist/assets/{InputSuggestions-DVRXb_CJ.js → InputSuggestions-B3D8lxAS.js} +2 -2
  47. package/dist/assets/ListItemStandardExpandableTextTemplate-Is8_hDTt.js +3 -0
  48. package/dist/assets/{bundle.esm-CjF11YUZ.js → bundle.esm-6rH7NAG7.js} +305 -304
  49. package/dist/assets/messagebundle_ar-BUmieu9B.js +1 -0
  50. package/dist/assets/messagebundle_ar-DcH18L3h.js +1 -0
  51. package/dist/assets/messagebundle_ar-Ic4ckTUt.js +1 -0
  52. package/dist/assets/messagebundle_bg-BOgOglXh.js +1 -0
  53. package/dist/assets/messagebundle_bg-CADHX0Gg.js +1 -0
  54. package/dist/assets/messagebundle_bg-dZrlFeKZ.js +1 -0
  55. package/dist/assets/messagebundle_ca-2bFyG5Ty.js +1 -0
  56. package/dist/assets/messagebundle_ca-B2inwHsb.js +1 -0
  57. package/dist/assets/messagebundle_ca-hDpK1GqB.js +1 -0
  58. package/dist/assets/messagebundle_cnr-CSmWG9_V.js +1 -0
  59. package/dist/assets/messagebundle_cnr-DZsc1R1r.js +1 -0
  60. package/dist/assets/messagebundle_cnr-luAWCJP0.js +1 -0
  61. package/dist/assets/messagebundle_cs-BL77wptv.js +1 -0
  62. package/dist/assets/messagebundle_cs-BZXuIszN.js +1 -0
  63. package/dist/assets/messagebundle_cs-Dso9kSig.js +1 -0
  64. package/dist/assets/messagebundle_cy-B66O9oBx.js +1 -0
  65. package/dist/assets/messagebundle_cy-BSiMgZtA.js +1 -0
  66. package/dist/assets/messagebundle_cy-ZlqQuGUz.js +1 -0
  67. package/dist/assets/messagebundle_da-C1CzvcXW.js +1 -0
  68. package/dist/assets/messagebundle_da-CAPY9nnT.js +1 -0
  69. package/dist/assets/messagebundle_da-DTOADw3Y.js +1 -0
  70. package/dist/assets/messagebundle_de-CSl05u5u.js +1 -0
  71. package/dist/assets/messagebundle_de-DHBsUEIt.js +1 -0
  72. package/dist/assets/messagebundle_de-DWsuh-jj.js +1 -0
  73. package/dist/assets/messagebundle_el-ByL7ikpl.js +1 -0
  74. package/dist/assets/messagebundle_el-CwjQKEGb.js +1 -0
  75. package/dist/assets/messagebundle_el-rU4RAHJr.js +1 -0
  76. package/dist/assets/messagebundle_en-4Wpx2jqf.js +1 -0
  77. package/dist/assets/messagebundle_en-Bi068VCa.js +1 -0
  78. package/dist/assets/messagebundle_en-C3jnlBnZ.js +1 -0
  79. package/dist/assets/messagebundle_en_GB-BEZ3LbT5.js +1 -0
  80. package/dist/assets/messagebundle_en_GB-DKEddq_J.js +1 -0
  81. package/dist/assets/messagebundle_en_GB-DgUUCHvU.js +1 -0
  82. package/dist/assets/messagebundle_en_US_sappsd-BN4GAQFk.js +1 -0
  83. package/dist/assets/messagebundle_en_US_sappsd-Bc-vQnEr.js +1 -0
  84. package/dist/assets/messagebundle_en_US_sappsd-CEGC_XRQ.js +1 -0
  85. package/dist/assets/messagebundle_en_US_saprigi--hAUIdWq.js +1 -0
  86. package/dist/assets/messagebundle_en_US_saprigi-C7t8yAP4.js +1 -0
  87. package/dist/assets/messagebundle_en_US_saprigi-C_gnMw05.js +1 -0
  88. package/dist/assets/messagebundle_en_US_saptrc-CIbQNg_d.js +1 -0
  89. package/dist/assets/messagebundle_en_US_saptrc-DY0WM5Yp.js +1 -0
  90. package/dist/assets/messagebundle_en_US_saptrc-aeJaPF-Z.js +1 -0
  91. package/dist/assets/messagebundle_es-BHY_U2xi.js +1 -0
  92. package/dist/assets/messagebundle_es-CjAQjgPh.js +1 -0
  93. package/dist/assets/messagebundle_es-vhzI0nML.js +1 -0
  94. package/dist/assets/messagebundle_es_MX-BsU5E2lt.js +1 -0
  95. package/dist/assets/messagebundle_es_MX-DjJ15Ns4.js +1 -0
  96. package/dist/assets/messagebundle_es_MX-DmINMi1e.js +1 -0
  97. package/dist/assets/messagebundle_et-CGVYNV2t.js +1 -0
  98. package/dist/assets/messagebundle_et-CpVk1Xin.js +1 -0
  99. package/dist/assets/messagebundle_et-DLssZHh4.js +1 -0
  100. package/dist/assets/messagebundle_fi-DTWy4DwI.js +1 -0
  101. package/dist/assets/messagebundle_fi-DmGIB0sc.js +1 -0
  102. package/dist/assets/messagebundle_fi-YfxQ0aOR.js +1 -0
  103. package/dist/assets/messagebundle_fr-BFMaF4AX.js +1 -0
  104. package/dist/assets/messagebundle_fr-BZ-VJ002.js +1 -0
  105. package/dist/assets/messagebundle_fr-CQZYkI8Y.js +1 -0
  106. package/dist/assets/messagebundle_fr_CA-B5jFryz1.js +1 -0
  107. package/dist/assets/messagebundle_fr_CA-BPZVCoKy.js +1 -0
  108. package/dist/assets/messagebundle_fr_CA-hZ2LGeU2.js +1 -0
  109. package/dist/assets/messagebundle_hi-92qX3F1U.js +1 -0
  110. package/dist/assets/messagebundle_hi-B-Bg9gCp.js +1 -0
  111. package/dist/assets/messagebundle_hi-DFXk6QGw.js +1 -0
  112. package/dist/assets/messagebundle_hr-CUaLQBjG.js +1 -0
  113. package/dist/assets/messagebundle_hr-DZwNzpwV.js +1 -0
  114. package/dist/assets/messagebundle_hr-selqadPV.js +1 -0
  115. package/dist/assets/messagebundle_hu-BtupF5BC.js +1 -0
  116. package/dist/assets/messagebundle_hu-CJuQbTfi.js +1 -0
  117. package/dist/assets/messagebundle_hu-D_rF_cCp.js +1 -0
  118. package/dist/assets/messagebundle_id-8SuSwuaC.js +1 -0
  119. package/dist/assets/messagebundle_id-Bvmpblmf.js +1 -0
  120. package/dist/assets/messagebundle_id-P3JSHcmu.js +1 -0
  121. package/dist/assets/messagebundle_it-BINon06x.js +1 -0
  122. package/dist/assets/messagebundle_it-CXnIcrL4.js +1 -0
  123. package/dist/assets/messagebundle_it-CkVp56-y.js +1 -0
  124. package/dist/assets/messagebundle_iw-BzixLMjm.js +1 -0
  125. package/dist/assets/messagebundle_iw-C2PtOYbW.js +1 -0
  126. package/dist/assets/messagebundle_iw-Cb6M5XGj.js +1 -0
  127. package/dist/assets/messagebundle_ja-DKtRR53-.js +1 -0
  128. package/dist/assets/messagebundle_ja-DQ5MCYLw.js +1 -0
  129. package/dist/assets/messagebundle_ja-J8eqPj7N.js +1 -0
  130. package/dist/assets/messagebundle_kk-B-ayCgR1.js +1 -0
  131. package/dist/assets/messagebundle_kk-BIeQLfxu.js +1 -0
  132. package/dist/assets/messagebundle_kk-DIOzUeHN.js +1 -0
  133. package/dist/assets/messagebundle_ko-B9_Ss1b5.js +1 -0
  134. package/dist/assets/messagebundle_ko-BLMVyKh5.js +1 -0
  135. package/dist/assets/messagebundle_ko-iA71apTw.js +1 -0
  136. package/dist/assets/messagebundle_lt-CbB2wq2X.js +1 -0
  137. package/dist/assets/messagebundle_lt-DFh-jl0O.js +1 -0
  138. package/dist/assets/messagebundle_lt-RzsUvi_1.js +1 -0
  139. package/dist/assets/messagebundle_lv-6quK3a4e.js +1 -0
  140. package/dist/assets/messagebundle_lv-BQO-79MM.js +1 -0
  141. package/dist/assets/messagebundle_lv-C3DWg_wu.js +1 -0
  142. package/dist/assets/messagebundle_mk-2lJhEAgI.js +1 -0
  143. package/dist/assets/messagebundle_mk-Cv-rDpUc.js +1 -0
  144. package/dist/assets/messagebundle_mk-o-SATTof.js +1 -0
  145. package/dist/assets/messagebundle_ms-3Zupz0mA.js +1 -0
  146. package/dist/assets/messagebundle_ms-BOQc8ZIR.js +1 -0
  147. package/dist/assets/messagebundle_ms-DnacCQys.js +1 -0
  148. package/dist/assets/messagebundle_nl-BVNQuB_K.js +1 -0
  149. package/dist/assets/messagebundle_nl-C2lsDY4p.js +1 -0
  150. package/dist/assets/messagebundle_nl-DTnHMKsv.js +1 -0
  151. package/dist/assets/messagebundle_no-BQMw-opH.js +1 -0
  152. package/dist/assets/messagebundle_no-CsErf2Px.js +1 -0
  153. package/dist/assets/messagebundle_no-OUP0Fraw.js +1 -0
  154. package/dist/assets/messagebundle_pl-BQW6qi8p.js +1 -0
  155. package/dist/assets/messagebundle_pl-Cc6OWGyn.js +1 -0
  156. package/dist/assets/messagebundle_pl-PZiQh0Xy.js +1 -0
  157. package/dist/assets/messagebundle_pt-BlqCbnEN.js +1 -0
  158. package/dist/assets/messagebundle_pt-DEVzhHU_.js +1 -0
  159. package/dist/assets/messagebundle_pt-DKJk4Ohl.js +1 -0
  160. package/dist/assets/messagebundle_pt_PT-BV1ec-3v.js +1 -0
  161. package/dist/assets/messagebundle_pt_PT-CL5hgi4Q.js +1 -0
  162. package/dist/assets/messagebundle_pt_PT-DekHH4S1.js +1 -0
  163. package/dist/assets/messagebundle_ro-D3lrScIy.js +1 -0
  164. package/dist/assets/messagebundle_ro-fp3znc96.js +1 -0
  165. package/dist/assets/messagebundle_ro-mHJ-r7ez.js +1 -0
  166. package/dist/assets/messagebundle_ru-BD3A7Zsx.js +1 -0
  167. package/dist/assets/messagebundle_ru-BTDmH8CB.js +1 -0
  168. package/dist/assets/messagebundle_ru-CJECAckd.js +1 -0
  169. package/dist/assets/messagebundle_ru-D7z2G7DP.js +1 -0
  170. package/dist/assets/messagebundle_sh-BoaW1EWP.js +1 -0
  171. package/dist/assets/messagebundle_sh-C4BjzhRr.js +1 -0
  172. package/dist/assets/messagebundle_sh-DXM15u1O.js +1 -0
  173. package/dist/assets/messagebundle_sk-Bjnhb-_D.js +1 -0
  174. package/dist/assets/messagebundle_sk-BxDvjXxb.js +1 -0
  175. package/dist/assets/messagebundle_sk-Clc7AaEc.js +1 -0
  176. package/dist/assets/messagebundle_sk-Lb4jvtpc.js +1 -0
  177. package/dist/assets/messagebundle_sl-BZi2bKSy.js +1 -0
  178. package/dist/assets/messagebundle_sl-Bi9mgI6m.js +1 -0
  179. package/dist/assets/messagebundle_sl-Bn5tocYe.js +1 -0
  180. package/dist/assets/messagebundle_sl-DJj-8V96.js +1 -0
  181. package/dist/assets/messagebundle_sr-B9TYgxO1.js +1 -0
  182. package/dist/assets/messagebundle_sr-Dsio4Srd.js +1 -0
  183. package/dist/assets/messagebundle_sr-SCdbG5fp.js +1 -0
  184. package/dist/assets/messagebundle_sr-w0tnyPzk.js +1 -0
  185. package/dist/assets/messagebundle_sv-B-KDauoz.js +1 -0
  186. package/dist/assets/messagebundle_sv-DCsGSCfn.js +1 -0
  187. package/dist/assets/messagebundle_sv-DQ0kE9XJ.js +1 -0
  188. package/dist/assets/messagebundle_sv-DWlY9RTQ.js +1 -0
  189. package/dist/assets/messagebundle_th-BmHTcbhR.js +1 -0
  190. package/dist/assets/messagebundle_th-D8qcTN_b.js +1 -0
  191. package/dist/assets/messagebundle_th-rPoqCsGu.js +1 -0
  192. package/dist/assets/messagebundle_tr-CyN3jcUR.js +1 -0
  193. package/dist/assets/messagebundle_tr-DIqpdL9d.js +1 -0
  194. package/dist/assets/{messagebundle_tr-CKXLfeIL.js → messagebundle_tr-Dw7toCgs.js} +1 -1
  195. package/dist/assets/messagebundle_uk-C7_nVJ9T.js +1 -0
  196. package/dist/assets/messagebundle_uk-CycQpntH.js +1 -0
  197. package/dist/assets/messagebundle_uk-L4kmWPZY.js +1 -0
  198. package/dist/assets/messagebundle_vi-CKYiMebw.js +1 -0
  199. package/dist/assets/messagebundle_vi-D1-iiI56.js +1 -0
  200. package/dist/assets/messagebundle_vi-wJJaYHj7.js +1 -0
  201. package/dist/assets/messagebundle_zh_CN-CIR_auXr.js +1 -0
  202. package/dist/assets/messagebundle_zh_CN-D3UfRQq7.js +1 -0
  203. package/dist/assets/messagebundle_zh_CN-Dv1_J1hu.js +1 -0
  204. package/dist/assets/messagebundle_zh_TW-CG9O1F7p.js +1 -0
  205. package/dist/assets/messagebundle_zh_TW-CQChC5zV.js +1 -0
  206. package/dist/assets/{messagebundle_zh_TW-Bok4mzbM.js → messagebundle_zh_TW-qc8ADbuf.js} +1 -1
  207. package/dist/assets/{parameters-bundle.css-B89Fdm1T.js → parameters-bundle.css-1rRun2sT.js} +8 -0
  208. package/dist/assets/parameters-bundle.css-BA_cQYjH.js +2 -0
  209. package/dist/assets/parameters-bundle.css-BBLk8nbD.js +3 -0
  210. package/dist/assets/{parameters-bundle.css-BRUthQQI.js → parameters-bundle.css-BBdTemt8.js} +15 -15
  211. package/dist/assets/parameters-bundle.css-BCB-2TTY.js +2 -0
  212. package/dist/assets/parameters-bundle.css-BQB0pxRT.js +2 -0
  213. package/dist/assets/parameters-bundle.css-BVXLOlqR.js +2 -0
  214. package/dist/assets/parameters-bundle.css-B_rCq3Nc.js +3 -0
  215. package/dist/assets/{parameters-bundle.css-BWPCcnui.js → parameters-bundle.css-BiSP-Gf0.js} +10 -2
  216. package/dist/assets/parameters-bundle.css-C90ijvPq.js +2 -0
  217. package/dist/assets/{parameters-bundle.css-CXAGQb2_.js → parameters-bundle.css-CKNWL0nG.js} +10 -2
  218. package/dist/assets/parameters-bundle.css-CTIq7sCI.js +2 -0
  219. package/dist/assets/parameters-bundle.css-CTw0R0y7.js +2 -0
  220. package/dist/assets/parameters-bundle.css-CV2FCAf_.js +3 -0
  221. package/dist/assets/parameters-bundle.css-CWfGvXBZ.js +2 -0
  222. package/dist/assets/parameters-bundle.css-CX7V5RGm.js +3 -0
  223. package/dist/assets/parameters-bundle.css-D9AHurfl.js +2 -0
  224. package/dist/assets/parameters-bundle.css-DENVM9pb.js +3 -0
  225. package/dist/assets/parameters-bundle.css-DHLZEUsz.js +3 -0
  226. package/dist/assets/{parameters-bundle.css-CaKlToMx.js → parameters-bundle.css-DH_wndOj.js} +6 -6
  227. package/dist/assets/parameters-bundle.css-DUAp19rB.js +3 -0
  228. package/dist/assets/{parameters-bundle.css-Bbpzo3n0.js → parameters-bundle.css-DUGC7SPT.js} +8 -0
  229. package/dist/assets/parameters-bundle.css-DXuX1n-u.js +2 -0
  230. package/dist/assets/{parameters-bundle.css-DICk53PA.js → parameters-bundle.css-Dd5ajhZR.js} +10 -2
  231. package/dist/assets/parameters-bundle.css-Dp55UvXM.js +3 -0
  232. package/dist/assets/parameters-bundle.css-DpJfefgg.js +3 -0
  233. package/dist/assets/{parameters-bundle.css-DD29SCx8.js → parameters-bundle.css-DuHP0Q5Y.js} +13 -12
  234. package/dist/assets/parameters-bundle.css-YNYQDxyY.js +2 -0
  235. package/dist/assets/parameters-bundle.css-tevTlrPX.js +2 -0
  236. package/dist/assets/{parameters-bundle.css-DPvcwVIm.js → parameters-bundle.css-yvuwi247.js} +5 -5
  237. package/dist/css/themes/List.css +1 -1
  238. package/dist/css/themes/ListGroupHeader.css +1 -1
  239. package/dist/css/themes/ListItem.css +1 -1
  240. package/dist/css/themes/RadioButton.css +1 -1
  241. package/dist/css/themes/SearchableList.css +1 -1
  242. package/dist/css/themes/TextField.css +1 -1
  243. package/dist/custom-elements-internal.json +488 -0
  244. package/dist/custom-elements.json +494 -4
  245. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  246. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  247. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  248. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  249. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  250. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +5 -5
  251. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
  252. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +1 -1
  253. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
  254. package/dist/generated/themes/List.css.d.ts +1 -1
  255. package/dist/generated/themes/List.css.js +1 -1
  256. package/dist/generated/themes/List.css.js.map +1 -1
  257. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  258. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  259. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  260. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  261. package/dist/generated/themes/ListItem.css.js +1 -1
  262. package/dist/generated/themes/ListItem.css.js.map +1 -1
  263. package/dist/generated/themes/RadioButton.css.d.ts +1 -1
  264. package/dist/generated/themes/RadioButton.css.js +1 -1
  265. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  266. package/dist/generated/themes/SearchableList.css.d.ts +1 -1
  267. package/dist/generated/themes/SearchableList.css.js +1 -1
  268. package/dist/generated/themes/SearchableList.css.js.map +1 -1
  269. package/dist/generated/themes/TextField.css.d.ts +1 -1
  270. package/dist/generated/themes/TextField.css.js +1 -1
  271. package/dist/generated/themes/TextField.css.js.map +1 -1
  272. package/dist/messagebundle_ru.properties +128 -0
  273. package/dist/messagebundle_sk.properties +125 -0
  274. package/dist/messagebundle_sl.properties +126 -1
  275. package/dist/messagebundle_sr.properties +128 -0
  276. package/dist/messagebundle_sv.properties +126 -0
  277. package/dist/vscode.html-custom-data.json +122 -0
  278. package/dist/web-types.json +187 -1
  279. package/package.json +8 -8
  280. package/src/FilterMenu.ts +23 -0
  281. package/src/ListGroupHeader.hbs +4 -4
  282. package/src/ListItemBase.ts +2 -2
  283. package/src/MastheadCountrySelector.hbs +1 -1
  284. package/src/MastheadCountrySelector.ts +20 -80
  285. package/src/Search.ts +9 -0
  286. package/src/SearchTemplate.tsx +1 -0
  287. package/src/SearchableListBase.ts +76 -8
  288. package/src/SearchableListBaseTemplate.tsx +13 -1
  289. package/src/SelectBase.ts +23 -16
  290. package/src/SelectBox.ts +19 -14
  291. package/src/SelectBoxItem.ts +70 -1
  292. package/src/SelectBoxTemplate.tsx +1 -1
  293. package/src/Tag.ts +8 -0
  294. package/src/TagGroup.ts +10 -0
  295. package/src/TagGroupTemplate.tsx +1 -0
  296. package/src/TagTemplate.tsx +1 -0
  297. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +4 -4
  298. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +1 -1
  299. package/src/generated/themes/List.css.ts +1 -1
  300. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  301. package/src/generated/themes/ListItem.css.ts +1 -1
  302. package/src/generated/themes/RadioButton.css.ts +1 -1
  303. package/src/generated/themes/SearchableList.css.ts +1 -1
  304. package/src/generated/themes/TextField.css.ts +1 -1
  305. package/src/i18n/messagebundle_ru.properties +128 -0
  306. package/src/i18n/messagebundle_sk.properties +125 -0
  307. package/src/i18n/messagebundle_sl.properties +126 -1
  308. package/src/i18n/messagebundle_sr.properties +128 -0
  309. package/src/i18n/messagebundle_sv.properties +126 -0
  310. package/src/themes/List.css +1 -2
  311. package/src/themes/ListGroupHeader.css +10 -12
  312. package/src/themes/ListItem.css +4 -0
  313. package/src/themes/RadioButton.css +9 -6
  314. package/src/themes/SearchableList.css +0 -1
  315. package/src/themes/TextField.css +2 -1
  316. package/dist/assets/ListItemStandardExpandableTextTemplate-DhmGlKzk.js +0 -3
  317. package/dist/assets/messagebundle_ar-B_vGELqE.js +0 -1
  318. package/dist/assets/messagebundle_ar-ql9y8H7i.js +0 -1
  319. package/dist/assets/messagebundle_bg-DahjEq9-.js +0 -1
  320. package/dist/assets/messagebundle_bg-DirTSiBs.js +0 -1
  321. package/dist/assets/messagebundle_ca-CLoGjgOQ.js +0 -1
  322. package/dist/assets/messagebundle_ca-Dt0eXv4b.js +0 -1
  323. package/dist/assets/messagebundle_cnr-CIT4FdxK.js +0 -1
  324. package/dist/assets/messagebundle_cnr-DcKjQBC2.js +0 -1
  325. package/dist/assets/messagebundle_cs-D6Ept3aZ.js +0 -1
  326. package/dist/assets/messagebundle_cs-JybtcHQz.js +0 -1
  327. package/dist/assets/messagebundle_cy-CBJcBetc.js +0 -1
  328. package/dist/assets/messagebundle_cy-D6EaO2mc.js +0 -1
  329. package/dist/assets/messagebundle_da-DP_Ld_m4.js +0 -1
  330. package/dist/assets/messagebundle_da-DXFv9LbY.js +0 -1
  331. package/dist/assets/messagebundle_de-C6CVo61I.js +0 -1
  332. package/dist/assets/messagebundle_de-De1WNx1Z.js +0 -1
  333. package/dist/assets/messagebundle_el-DjFg6Pxj.js +0 -1
  334. package/dist/assets/messagebundle_el-x7EAub0z.js +0 -1
  335. package/dist/assets/messagebundle_en-52Fg7l8z.js +0 -1
  336. package/dist/assets/messagebundle_en-CAn74huH.js +0 -1
  337. package/dist/assets/messagebundle_en_GB-BNvEFdpW.js +0 -1
  338. package/dist/assets/messagebundle_en_GB-mPq0tjYl.js +0 -1
  339. package/dist/assets/messagebundle_en_US_sappsd-BJo2KiPa.js +0 -1
  340. package/dist/assets/messagebundle_en_US_sappsd-DynRbkUr.js +0 -1
  341. package/dist/assets/messagebundle_en_US_saprigi-BQWYyoHW.js +0 -1
  342. package/dist/assets/messagebundle_en_US_saprigi-D92s1ZRa.js +0 -1
  343. package/dist/assets/messagebundle_en_US_saptrc-B2DXKZNZ.js +0 -1
  344. package/dist/assets/messagebundle_en_US_saptrc-hfAEC4kd.js +0 -1
  345. package/dist/assets/messagebundle_es-BwPFGD9Z.js +0 -1
  346. package/dist/assets/messagebundle_es-jLk5s13n.js +0 -1
  347. package/dist/assets/messagebundle_es_MX-C4GAmGhU.js +0 -1
  348. package/dist/assets/messagebundle_es_MX-D8t2Deqr.js +0 -1
  349. package/dist/assets/messagebundle_et-BTaXAVVc.js +0 -1
  350. package/dist/assets/messagebundle_et-Bjo0Et5r.js +0 -1
  351. package/dist/assets/messagebundle_fi-ChYfzxXr.js +0 -1
  352. package/dist/assets/messagebundle_fi-CntiBCQA.js +0 -1
  353. package/dist/assets/messagebundle_fr-BdRWqZJC.js +0 -1
  354. package/dist/assets/messagebundle_fr-CaZExNBp.js +0 -1
  355. package/dist/assets/messagebundle_fr_CA-BKRP61J_.js +0 -1
  356. package/dist/assets/messagebundle_fr_CA-DAzfdGd5.js +0 -1
  357. package/dist/assets/messagebundle_hi-BcOtK4GQ.js +0 -1
  358. package/dist/assets/messagebundle_hi-C7UcqZdw.js +0 -1
  359. package/dist/assets/messagebundle_hr-BLF-FOD0.js +0 -1
  360. package/dist/assets/messagebundle_hr-Dk6M01RL.js +0 -1
  361. package/dist/assets/messagebundle_hu-DpIoRnup.js +0 -1
  362. package/dist/assets/messagebundle_hu-VbDHbZG7.js +0 -1
  363. package/dist/assets/messagebundle_id-DIBxH6fi.js +0 -1
  364. package/dist/assets/messagebundle_id-lZaxXrdJ.js +0 -1
  365. package/dist/assets/messagebundle_it-BhsMY7So.js +0 -1
  366. package/dist/assets/messagebundle_it-DG7xbfea.js +0 -1
  367. package/dist/assets/messagebundle_iw-Cc803Nmd.js +0 -1
  368. package/dist/assets/messagebundle_iw-O_evnbhY.js +0 -1
  369. package/dist/assets/messagebundle_ja-BQJaLzhD.js +0 -1
  370. package/dist/assets/messagebundle_ja-DA6u0p66.js +0 -1
  371. package/dist/assets/messagebundle_kk-D5CooIqJ.js +0 -1
  372. package/dist/assets/messagebundle_kk-DNvxdh_N.js +0 -1
  373. package/dist/assets/messagebundle_ko-D8xqECx2.js +0 -1
  374. package/dist/assets/messagebundle_ko-wbi_wfM_.js +0 -1
  375. package/dist/assets/messagebundle_lt-DpI4T_Fm.js +0 -1
  376. package/dist/assets/messagebundle_lt-ln5fzwxi.js +0 -1
  377. package/dist/assets/messagebundle_lv-CYWgsGbN.js +0 -1
  378. package/dist/assets/messagebundle_lv-l0vb-OwI.js +0 -1
  379. package/dist/assets/messagebundle_mk-DIl_j3HQ.js +0 -1
  380. package/dist/assets/messagebundle_mk-t_B9kLHP.js +0 -1
  381. package/dist/assets/messagebundle_ms-BFy7Zha3.js +0 -1
  382. package/dist/assets/messagebundle_ms-DZQm3zbR.js +0 -1
  383. package/dist/assets/messagebundle_nl-C1aSfvr4.js +0 -1
  384. package/dist/assets/messagebundle_nl-TRrPBmQF.js +0 -1
  385. package/dist/assets/messagebundle_no-CLhgj0EG.js +0 -1
  386. package/dist/assets/messagebundle_no-aR0S5fgl.js +0 -1
  387. package/dist/assets/messagebundle_pl-BSUgMNBu.js +0 -1
  388. package/dist/assets/messagebundle_pl-CET5Ib58.js +0 -1
  389. package/dist/assets/messagebundle_pt-BbXdBcA1.js +0 -1
  390. package/dist/assets/messagebundle_pt-DkZyB3LQ.js +0 -1
  391. package/dist/assets/messagebundle_pt_PT-C_oLd5Iw.js +0 -1
  392. package/dist/assets/messagebundle_pt_PT-DCKLQCBx.js +0 -1
  393. package/dist/assets/messagebundle_ro-CsDFuVns.js +0 -1
  394. package/dist/assets/messagebundle_ro-D2wg4wzH.js +0 -1
  395. package/dist/assets/messagebundle_ru-BT7zyn7i.js +0 -1
  396. package/dist/assets/messagebundle_ru-C2C4gC1g.js +0 -1
  397. package/dist/assets/messagebundle_ru-DE3o7RU0.js +0 -1
  398. package/dist/assets/messagebundle_sh-B7wYluE7.js +0 -1
  399. package/dist/assets/messagebundle_sh-DKD7IPLY.js +0 -1
  400. package/dist/assets/messagebundle_sk-BqNiKvir.js +0 -1
  401. package/dist/assets/messagebundle_sk-CQANpP_i.js +0 -1
  402. package/dist/assets/messagebundle_sk-gmWb_4Wo.js +0 -1
  403. package/dist/assets/messagebundle_sl-B4p3OqyZ.js +0 -1
  404. package/dist/assets/messagebundle_sl-D-C5Ql-U.js +0 -1
  405. package/dist/assets/messagebundle_sl-Dg8gsTrL.js +0 -1
  406. package/dist/assets/messagebundle_sr-BrfbPkvb.js +0 -1
  407. package/dist/assets/messagebundle_sr-CiPp4mnW.js +0 -1
  408. package/dist/assets/messagebundle_sr-D8Lxl5cz.js +0 -1
  409. package/dist/assets/messagebundle_sv-DCluCru8.js +0 -1
  410. package/dist/assets/messagebundle_sv-DZNyuq7Z.js +0 -1
  411. package/dist/assets/messagebundle_sv-Ip_fKK1p.js +0 -1
  412. package/dist/assets/messagebundle_th-DwzFsAOp.js +0 -1
  413. package/dist/assets/messagebundle_th-HY1lYjoi.js +0 -1
  414. package/dist/assets/messagebundle_tr-B-M7HjSs.js +0 -1
  415. package/dist/assets/messagebundle_uk-Bh3hLYnV.js +0 -1
  416. package/dist/assets/messagebundle_uk-gYNrr26j.js +0 -1
  417. package/dist/assets/messagebundle_vi-CmDSDhxv.js +0 -1
  418. package/dist/assets/messagebundle_vi-yAL9JrWb.js +0 -1
  419. package/dist/assets/messagebundle_zh_CN-DOWro3p4.js +0 -1
  420. package/dist/assets/messagebundle_zh_CN-DRPasXpL.js +0 -1
  421. package/dist/assets/messagebundle_zh_TW-DCsIDAoN.js +0 -1
  422. package/dist/assets/parameters-bundle.css-B-LoL5pn.js +0 -2
  423. package/dist/assets/parameters-bundle.css-B44zldkY.js +0 -2
  424. package/dist/assets/parameters-bundle.css-B9cNNkge.js +0 -2
  425. package/dist/assets/parameters-bundle.css-BM3cv0NX.js +0 -3
  426. package/dist/assets/parameters-bundle.css-BaYJ1Sh3.js +0 -3
  427. package/dist/assets/parameters-bundle.css-BnDd81m-.js +0 -2
  428. package/dist/assets/parameters-bundle.css-Bpp5SPIo.js +0 -2
  429. package/dist/assets/parameters-bundle.css-BxF9_xcQ.js +0 -3
  430. package/dist/assets/parameters-bundle.css-CIS8Sge3.js +0 -2
  431. package/dist/assets/parameters-bundle.css-CkZZXcub.js +0 -3
  432. package/dist/assets/parameters-bundle.css-CqlwqyiK.js +0 -3
  433. package/dist/assets/parameters-bundle.css-D5iBjAlb.js +0 -2
  434. package/dist/assets/parameters-bundle.css-DFLKYdpf.js +0 -3
  435. package/dist/assets/parameters-bundle.css-Df8B8yQY.js +0 -2
  436. package/dist/assets/parameters-bundle.css-DfFxBNVP.js +0 -3
  437. package/dist/assets/parameters-bundle.css-DgrQXZRd.js +0 -2
  438. package/dist/assets/parameters-bundle.css-Dt5cIEI8.js +0 -2
  439. package/dist/assets/parameters-bundle.css-Wj-Qo16j.js +0 -3
  440. package/dist/assets/parameters-bundle.css-X9m6S2In.js +0 -2
  441. package/dist/assets/parameters-bundle.css-defUEOJD.js +0 -2
  442. package/dist/assets/parameters-bundle.css-oytHmScC.js +0 -3
@@ -8,9 +8,6 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
8
8
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
9
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
10
10
  import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
11
- import {
12
- isEnd, isHome, isTabNext, isTabPrevious,
13
- } from "@ui5/webcomponents-base/dist/Keys.js";
14
11
  import UDExMastheadMenuItem from "./MastheadMenuItem.js";
15
12
  import UDExSearch, { Mode as UDExSearchMode } from "./Search.js";
16
13
  import MastheadCountrySelectorTemplate from "./generated/templates/MastheadCountrySelectorTemplate.lit.js";
@@ -238,6 +235,7 @@ class UDExMastheadCountrySelector extends UI5Element {
238
235
  _mastheadShell!: UDExMastheadShell;
239
236
  _countriesListHolderClassName = "udex-masthead-country-selector__list-wrap";
240
237
  _itemClassName = "udex-masthead-country-selector__item";
238
+ _boundHandleActiveRegionClose!: () => void;
241
239
 
242
240
  @i18n("@sapudex/web-components")
243
241
  static i18nBundle: I18nBundle;
@@ -245,12 +243,23 @@ class UDExMastheadCountrySelector extends UI5Element {
245
243
  constructor() {
246
244
  super();
247
245
  this._activeCountries = [];
246
+ this._boundHandleActiveRegionClose = this.handleActiveRegionClose.bind(this);
247
+ }
248
+
249
+ onEnterDOM(): void {
250
+ if (isDesktop()) {
251
+ this.setAttribute("desktop", "");
252
+ }
253
+ this.closest("[udex-masthead-item]")?.addEventListener("dropdown-closed", this._boundHandleActiveRegionClose);
254
+ }
255
+
256
+ onExitDOM(): void {
257
+ this.closest("[udex-masthead-item]")?.removeEventListener("dropdown-closed", this._boundHandleActiveRegionClose);
248
258
  }
249
259
 
250
260
  onAfterRendering(): void {
251
261
  this._mastheadShell = this.mastheadShell;
252
262
  this.handleFocusItem();
253
- this.setTabIndexForItems();
254
263
  this.handleOutsideClick();
255
264
 
256
265
  if (this.isSingleMode) {
@@ -262,9 +271,11 @@ class UDExMastheadCountrySelector extends UI5Element {
262
271
  }
263
272
  }
264
273
 
265
- onEnterDOM(): void {
266
- if (isDesktop()) {
267
- this.setAttribute("desktop", "");
274
+ handleActiveRegionClose(): void {
275
+ if (!this.isSingleMode) {
276
+ this.handleSearchReset();
277
+ this._isActiveRegionOpen = false;
278
+ this.setActiveRegion(null);
268
279
  }
269
280
  }
270
281
 
@@ -280,26 +291,6 @@ class UDExMastheadCountrySelector extends UI5Element {
280
291
  }
281
292
  }
282
293
 
283
- handleKeyDown(e: KeyboardEvent): void {
284
- const item = e.target as UDExMastheadMenuItem;
285
-
286
- if (item.hasAttribute("is-nav-item")) {
287
- const isFirstItem = item === this.items[0];
288
- const isLastItem = item === this.items[this.items.length - 1];
289
-
290
- if (isTabNext(e) && !isLastItem) {
291
- e.preventDefault();
292
- this.focusNextItem(item);
293
- }
294
- if (isTabPrevious(e) && !isFirstItem) {
295
- e.preventDefault();
296
- this.focusPreviousItem(item);
297
- }
298
- this.handleHomeKey(e);
299
- this.handleEndKey(e);
300
- }
301
- }
302
-
303
294
  handleSearch(e: CustomEvent): void {
304
295
  const searchTerm = e.detail.value.toLowerCase().trim() as string;
305
296
 
@@ -348,9 +339,7 @@ class UDExMastheadCountrySelector extends UI5Element {
348
339
  handleOutsideClick(): void {
349
340
  document.addEventListener("mousedown", (e: Event): void => {
350
341
  if (e.target !== this && !this.isMobile) {
351
- this.handleSearchReset();
352
- this._isActiveRegionOpen = false;
353
- this.setActiveRegion(null);
342
+ this.handleActiveRegionClose();
354
343
  }
355
344
  });
356
345
  }
@@ -392,50 +381,12 @@ class UDExMastheadCountrySelector extends UI5Element {
392
381
  prevItem.focus({ preventScroll: true });
393
382
  }
394
383
 
395
- focusLastItem(e: KeyboardEvent): void {
396
- const currentIndex = (e.target as UDExMastheadMenuItem).index;
397
- const lastItemIndex = this.items.length - 1;
398
- const lastItem = this.items[lastItemIndex];
399
-
400
- this.items[currentIndex]._tabIndex = "-1";
401
- lastItem._tabIndex = "0";
402
- lastItem.scrollIntoView({ block: "end" });
403
- lastItem.focus({ preventScroll: true });
404
- }
405
-
406
- focusFirstItem(e: KeyboardEvent): void {
407
- const currentIndex = (e.target as UDExMastheadMenuItem).index;
384
+ focusFirstItem(): void {
408
385
  const firstItem = this.items[0];
409
-
410
- this.items[currentIndex]._tabIndex = "-1";
411
386
  firstItem._tabIndex = "0";
412
387
  firstItem.focus();
413
388
  }
414
389
 
415
- handleEndKey(e: KeyboardEvent): void {
416
- if (isEnd(e)) {
417
- e.preventDefault();
418
-
419
- if (this.isScrollableCountriesList) {
420
- this.removeScrollableClassInCountryList();
421
- }
422
-
423
- this.focusLastItem(e);
424
- }
425
- }
426
-
427
- handleHomeKey(e: KeyboardEvent): void {
428
- if (isHome(e)) {
429
- e.preventDefault();
430
-
431
- if (this.isScrollableCountriesList) {
432
- this.addScrollableClassToCountryList();
433
- }
434
-
435
- this.focusFirstItem(e);
436
- }
437
- }
438
-
439
390
  handleSingleRegionMode(): void {
440
391
  this.setActiveRegion(this.regionsData[0]);
441
392
  this.setActiveCountries([...this.regionsData[0].countries]);
@@ -490,17 +441,6 @@ class UDExMastheadCountrySelector extends UI5Element {
490
441
  this._activeCountries = countries;
491
442
  }
492
443
 
493
- setTabIndexForItems(): void {
494
- this.items.forEach((item, index) => {
495
- if (this._activeRegionIndex > 0 && this._shouldFocusRegionByIndex) {
496
- item._tabIndex = index === this._activeRegionIndex ? "0" : "-1";
497
- return;
498
- }
499
-
500
- item._tabIndex = index === 0 ? "0" : "-1";
501
- });
502
- }
503
-
504
444
  closeMenu():void {
505
445
  this._mastheadShell.closeMobileMenu();
506
446
  this._mastheadShell.mobileBtn?.focus();
package/src/Search.ts CHANGED
@@ -295,6 +295,15 @@ class UDExSearch extends UI5Element {
295
295
  */
296
296
  @property({ type: String })
297
297
  suggestionList!: string;
298
+
299
+ /**
300
+ * Sets the maximum number of characters available in the input field.
301
+ *
302
+ * @public
303
+ */
304
+ @property({ type: Number })
305
+ maxlength?: number;
306
+
298
307
  /**
299
308
  * Width of the search component
300
309
  * @private
@@ -189,6 +189,7 @@ function renderSearchInput(this: UDExSearch, placeholder: boolean = false) {
189
189
  aria-label={this.accInfo.ariaLabel}
190
190
  aria-describedby="search-description"
191
191
  {...(placeholder ? { placeholder: this.effectivePlaceholder } : {})}
192
+ maxlength={this.maxlength}
192
193
  value={this.value}
193
194
  onInput={this.handleSearchChange}
194
195
  onKeyDown={this.handleKeyDown}
@@ -5,7 +5,7 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
5
5
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
6
6
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
7
7
  import { cleanLabel } from "./utils/listItemLabelUtils.js";
8
- import { UDExListMode } from "./types/List.js";
8
+ import { UDExListMode, UDExListStyleType } from "./types/List.js";
9
9
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
10
10
  import type Popover from "@ui5/webcomponents/dist/Popover.js";
11
11
  import type { UDExProcessedItem } from "./types/SearchableListBase.js";
@@ -217,6 +217,24 @@ class UDExSearchableListBase extends UI5Element {
217
217
  @property()
218
218
  mode: `${UDExListMode}` = UDExListMode.SingleSelect;
219
219
 
220
+ /**
221
+ * Defines the list style type of the dropdown items.
222
+ *
223
+ * @default "None"
224
+ * @public
225
+ */
226
+ @property()
227
+ type: `${UDExListStyleType}` = UDExListStyleType.None;
228
+
229
+ /**
230
+ * Defines the name of the UI5 Icon displayed for each item. Use when type is Icon.
231
+ *
232
+ * @default ""
233
+ * @public
234
+ */
235
+ @property({ type: String })
236
+ itemIcon: string = "";
237
+
220
238
  /**
221
239
  * Slot for items.
222
240
  *
@@ -382,13 +400,20 @@ class UDExSearchableListBase extends UI5Element {
382
400
  const { isGroup, item } = preparedItem;
383
401
 
384
402
  if (isGroup) {
385
- preparedItem.groupItems = this.filterItemsForLabel(preparedItem.groupItems, str);
403
+ const groupHeaderMatches = this.checkAndUpdateLabel(item, str);
404
+ const filteredChildren = this.filterItemsForLabel(preparedItem.groupItems, str);
386
405
 
387
- if (hasSearchQuery && preparedItem.groupItems.length > 0) {
406
+ if (groupHeaderMatches) {
407
+ preparedItem.groupItems.forEach(child => this.checkAndUpdateLabel(child, str));
408
+ } else {
409
+ preparedItem.groupItems = filteredChildren;
410
+ }
411
+
412
+ if (hasSearchQuery && (groupHeaderMatches || preparedItem.groupItems.length > 0)) {
388
413
  item.collapsed = false;
389
414
  }
390
415
 
391
- return preparedItem.groupItems.length > 0;
416
+ return !hasSearchQuery || groupHeaderMatches || preparedItem.groupItems.length > 0;
392
417
  }
393
418
 
394
419
  return this.checkAndUpdateLabel(item, str);
@@ -413,6 +438,8 @@ class UDExSearchableListBase extends UI5Element {
413
438
  item.label = this.addSearchTermTag(cleanedLabel, str);
414
439
  return true;
415
440
  }
441
+
442
+ item.label = cleanedLabel;
416
443
  return false;
417
444
  }
418
445
 
@@ -522,6 +549,43 @@ class UDExSearchableListBase extends UI5Element {
522
549
  this._fireIconClickEvent("second-icon-click", e);
523
550
  }
524
551
 
552
+ _dropdownScrollToTop() {
553
+ this.getPopoverPart(UDExPopoverPart.Content)?.scrollTo({ top: 0 });
554
+ }
555
+
556
+ _dropdownScrollToSelectedItem() {
557
+ const content = this.getPopoverPart(UDExPopoverPart.Content);
558
+ const activeItem = this.activeItem;
559
+ if (!content || !activeItem) { return; }
560
+ const itemRect = activeItem.getBoundingClientRect();
561
+ const contentRect = content.getBoundingClientRect();
562
+ content.scrollTop += itemRect.top - contentRect.top + itemRect.height / 2 - content.clientHeight / 2;
563
+ }
564
+
565
+ _handleDropdownScroll() {
566
+ if (this.modeMultiSelect) {
567
+ this._dropdownScrollToTop();
568
+ }
569
+ if (this.modeSingleSelect) {
570
+ this._dropdownScrollToSelectedItem();
571
+ }
572
+ }
573
+
574
+ focusFirstItem(): void {
575
+ const list = this.getList();
576
+ const items = list.getKeyboardNavigationItems();
577
+ if (!items.length) { return; }
578
+ const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;
579
+ const firstItem = items[firstIndex];
580
+ list.setTabIndexByIndex(items, firstIndex);
581
+
582
+ if (firstItem.isGroup) {
583
+ list.focusHeader(firstItem);
584
+ } else {
585
+ firstItem.focus();
586
+ }
587
+ }
588
+
525
589
  private _fireIconClickEvent(eventName: "first-icon-click" | "second-icon-click", e: CustomEvent): void {
526
590
  const item = e.detail.item as UDExListItemBase;
527
591
  const id = this.getDataTokenId(item);
@@ -568,10 +632,6 @@ class UDExSearchableListBase extends UI5Element {
568
632
  return item.getAttribute("data-token-id") as string;
569
633
  }
570
634
 
571
- get _validItems(): Array<UDExListItemBase | UDExListGroupHeaderBase> {
572
- return this.items.filter(item => !(item instanceof HTMLElement) || "isGroup" in item);
573
- }
574
-
575
635
  getProcessedItems(): Array<UDExProcessedItem> {
576
636
  return this._validItems.map(item => {
577
637
  const isGroup = item.isGroup;
@@ -609,6 +669,14 @@ class UDExSearchableListBase extends UI5Element {
609
669
  });
610
670
  }
611
671
 
672
+ get activeItem(): UDExListItem | undefined {
673
+ return this.getDomListItems().find(({ selected }) => selected);
674
+ }
675
+
676
+ get _validItems(): Array<UDExListItemBase | UDExListGroupHeaderBase> {
677
+ return this.items.filter(item => !(item instanceof HTMLElement) || "isGroup" in item);
678
+ }
679
+
612
680
  get getNoResultText(): string {
613
681
  const hasTextProperty = this.noResultText !== undefined && this.noResultText.length > 0;
614
682
  return hasTextProperty ? this.noResultText : this.noMatchesFoundText;
@@ -51,7 +51,9 @@ export default function SearchableListBaseTemplate(this: UDExSearchableListBase)
51
51
  accessible-role={this.accessibleRoleForList}
52
52
  class="udex-filter-menu__list"
53
53
  controlled={this.isControlled}
54
- mode={this.mode}>
54
+ mode={this.mode}
55
+ type={this.type}
56
+ item-icon={this.itemIcon}>
55
57
  {this._filteredItems.map((processedItem, index) => (
56
58
  processedItem.isGroup
57
59
  ? renderGroup.call(this, processedItem, index)
@@ -99,6 +101,7 @@ function renderGroupHeader(this: UDExSearchableListBase, processedItem: UDExProc
99
101
  <UDExListGroupHeader
100
102
  key={index}
101
103
  role="group"
104
+ {...(index === 0 ? { "_no-border": "" } : {})}
102
105
  _additional-class-name="udex-searchable-list__header"
103
106
  class={this.groupClassName}
104
107
  non-interactive={header.nonInteractive}
@@ -149,6 +152,15 @@ function renderListItem(
149
152
  rating-count={item.ratingCount}
150
153
  rating-max={item.ratingMax}
151
154
  label={item.label}
155
+ image={item.image}
156
+ image-alt={item.imageAlt}
157
+ image-badge-state={item.imageBadgeState}
158
+ image-shape={item.imageShape}
159
+ image-size={item.imageSize}
160
+ flag={item.flag}
161
+ flag-position={item.flagPosition}
162
+ size={item.size}
163
+ type={item.type}
152
164
  {...(accessibleRole ? { "accessible-role": accessibleRole } : {})}
153
165
  {...((item as any).innerHTML ? { dangerouslySetInnerHTML: { __html: (item as any).innerHTML } } : {})}>
154
166
  </UDExListItem>
package/src/SelectBase.ts CHANGED
@@ -452,6 +452,9 @@ class UDExSelectBase extends UDExSearchableListBase {
452
452
  return;
453
453
  }
454
454
 
455
+ const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;
456
+ const firstItem = items[firstIndex];
457
+
455
458
  if (isEscAndPopoverOpened) {
456
459
  return this.closeDropdown();
457
460
  }
@@ -459,7 +462,8 @@ class UDExSelectBase extends UDExSearchableListBase {
459
462
  if (isDownAndPopoverClosed) {
460
463
  e.preventDefault();
461
464
  this.openDropdown();
462
- this.focusFirstItem(items);
465
+ this.focusFirstItem();
466
+ this._selectedOption = firstItem.label;
463
467
  if (this.showImageFlags) {
464
468
  this.handleImagePosition(items, 0);
465
469
  }
@@ -471,20 +475,8 @@ class UDExSelectBase extends UDExSearchableListBase {
471
475
  if (this.showImageFlags) {
472
476
  this.handleImagePosition(items, 0);
473
477
  }
474
- return this.focusFirstItem(items);
475
- }
476
- }
477
-
478
- focusFirstItem(items: UDExListItemBase[]): void {
479
- const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;
480
- const firstItem = items[firstIndex];
481
- this._list.setTabIndexByIndex(items, firstIndex);
482
- this._selectedOption = firstItem.label;
483
-
484
- if (firstItem.isGroup) {
485
- this._list.focusHeader(firstItem);
486
- } else {
487
- firstItem.focus();
478
+ this._selectedOption = firstItem.label;
479
+ return this.focusFirstItem();
488
480
  }
489
481
  }
490
482
 
@@ -509,14 +501,29 @@ class UDExSelectBase extends UDExSearchableListBase {
509
501
  }
510
502
 
511
503
  handleDropdownBeforeClose() {
512
- this.fireDecoratorEvent("before-close");
504
+ this._handleDropdownScroll();
505
+ this.fireEventDropdownBeforeOClose();
513
506
  }
514
507
 
515
508
  dropdownBeforeOpen() {
516
509
  if (this.height) {
517
510
  this._setContentHeight();
518
511
  }
512
+ this.fireEventDropdownBeforeOpen();
513
+ }
514
+
515
+ handleDropdownOpen() {
516
+ if (!this.activeItem) {
517
+ this._dropdownScrollToTop();
518
+ }
519
+ this.fireEventDropdownOpen();
520
+ }
521
+
522
+ fireEventDropdownBeforeOClose() {
523
+ this.fireDecoratorEvent("before-close");
524
+ }
519
525
 
526
+ fireEventDropdownBeforeOpen() {
520
527
  this.fireDecoratorEvent("before-open");
521
528
  }
522
529
 
package/src/SelectBox.ts CHANGED
@@ -34,6 +34,7 @@ import SelectBoxTemplate from "./SelectBoxTemplate.js";
34
34
  import SearchableListBaseTemplate from "./SearchableListBaseTemplate.js";
35
35
  import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
36
36
  import type { UDExSelectBaseEvents } from "./SelectBase.js";
37
+ import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
37
38
 
38
39
  // Styles
39
40
  import TextFieldCss from "./generated/themes/TextField.css.js";
@@ -248,12 +249,15 @@ class UDExSelectBox extends UDExSelectBase {
248
249
  this.fireEventDropdownClose();
249
250
  }
250
251
 
251
- handleRemoveTag(e: CustomEvent | null, tag?: UI5Element) {
252
+ async handleRemoveTag(e: CustomEvent | null, tag?: UI5Element) {
252
253
  tag = tag ?? (e?.detail.tag as UI5Element);
253
254
  const tagId: string = tag.getAttribute("data-id")!;
254
- this.tokenizer.deleteToken(tag as Token, true);
255
+ this.tokenizer.deleteToken(tag as Token);
255
256
  this.handleDropdownItemPress(tagId);
256
257
  this.fireDecoratorEventRemove(tagId);
258
+ await renderFinished();
259
+ this._focused = true;
260
+ this._search.focus();
257
261
  }
258
262
 
259
263
  handleRemoveTruncatableTag() {
@@ -265,7 +269,15 @@ class UDExSelectBox extends UDExSelectBase {
265
269
 
266
270
  handleTagClick(e: CustomEvent) {
267
271
  const tag = e.detail.tag as UDExTag;
268
- this.toggleTruncatedPopover(tag);
272
+
273
+ if (!tag.isTruncatable) {
274
+ this._showTagsDropdownContent = false;
275
+ tag.selected = false;
276
+ }
277
+
278
+ if (tag.isTruncatable && !this._open) {
279
+ this.toggleTruncatedPopover(tag);
280
+ }
269
281
  }
270
282
 
271
283
  handleUnselectTruncatableTag() {
@@ -384,17 +396,10 @@ class UDExSelectBox extends UDExSelectBase {
384
396
  }
385
397
 
386
398
  toggleTruncatedPopover(tag: UDExTag) {
387
- if (!tag.isTruncatable) {
388
- this._showTagsDropdownContent = false;
389
- tag.selected = false;
390
- }
391
-
392
- if (tag.isTruncatable && !this._open) {
393
- this._truncatableTag = tag;
394
- this._truncatableTag.selected = true;
395
- this._showTagsDropdownContent = true;
396
- this.openDropdown();
397
- }
399
+ this._truncatableTag = tag;
400
+ this._truncatableTag.selected = true;
401
+ this._showTagsDropdownContent = true;
402
+ this.openDropdown();
398
403
  }
399
404
 
400
405
  configureTokenizer() {
@@ -6,6 +6,8 @@ import property from "@ui5/webcomponents-base/decorators/property.js";
6
6
  import { UDExAdditionalTextState } from "./types/List.js";
7
7
  import UDExButton from "./Button.js";
8
8
  import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
9
+ import type UDExStatusBadgeValueState from "./types/StatusBadgeValueState.js";
10
+ import UDExAvatar, { UDExAvatarShape, UDExAvatarSize } from "./Avatar.js";
9
11
 
10
12
  /**
11
13
  * @class
@@ -29,10 +31,18 @@ import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
29
31
  @customElement({
30
32
  tag: "udex-select-box-item",
31
33
  renderer: litRender,
32
- dependencies: [UDExButton],
34
+ dependencies: [UDExButton, UDExAvatar],
33
35
  })
34
36
 
35
37
  class UDExSelectBoxItem extends UDExListItemBase {
38
+ /**
39
+ * Defines the name of the UI5 Icon displayed for each item when type is Icon.
40
+ *
41
+ * @public
42
+ */
43
+ @property({ type: String })
44
+ itemIcon?: string;
45
+
36
46
  /**
37
47
  * Defines the additionalText, displayed at the end of the list item.
38
48
  *
@@ -50,6 +60,65 @@ class UDExSelectBoxItem extends UDExListItemBase {
50
60
  @property()
51
61
  additionalTextState: `${UDExAdditionalTextState}` = UDExAdditionalTextState.None;
52
62
 
63
+ /**
64
+ * Defines the image, displayed at the start of the item.
65
+ *
66
+ * @public
67
+ */
68
+ @property({ type: Boolean })
69
+ flag?: boolean;
70
+
71
+ /**
72
+ * Defines the position for flag image.
73
+ *
74
+ * @public
75
+ */
76
+ @property({ type: String })
77
+ flagPosition?: string;
78
+
79
+ /**
80
+ * Allows control over the image source.
81
+ *
82
+ * @public
83
+ */
84
+ @property({ type: String })
85
+ image?: string;
86
+
87
+ /**
88
+ * Allows control over the alternative text of the image.
89
+ *
90
+ * @public
91
+ */
92
+ @property({ type: String })
93
+ imageAlt?: string;
94
+
95
+ /**
96
+ * Defines the image badge state of the component.
97
+ *
98
+ * @default ""
99
+ * @public
100
+ */
101
+ @property()
102
+ imageBadgeState?: `${UDExStatusBadgeValueState}`;
103
+
104
+ /**
105
+ * Defines the shape of the image.
106
+ *
107
+ * @default "Circle"
108
+ * @public
109
+ */
110
+ @property()
111
+ imageShape: `${UDExAvatarShape}` = UDExAvatarShape.Circle;
112
+
113
+ /**
114
+ * Allows control over the size of the image.
115
+ *
116
+ * @default "S"
117
+ * @public
118
+ */
119
+ @property()
120
+ imageSize: `${UDExAvatarSize}` = UDExAvatarSize.S;
121
+
53
122
  /**
54
123
  * Slot for first icon.
55
124
  *
@@ -83,7 +83,7 @@ export default function SelectBoxTemplate(this: UDExSelectBox) {
83
83
  onHeaderPress: this.handleHeaderPress,
84
84
  } as any)}
85
85
  onBeforeOpen={this.handleDropdownBeforeOpen}
86
- onOpen={this.fireEventDropdownOpen}
86
+ onOpen={this.handleDropdownOpen}
87
87
  onBeforeClose={this.handleDropdownBeforeClose}
88
88
  onClose={this.handleDropdownClose}
89
89
  class="udex-select-box__dropdown"
package/src/Tag.ts CHANGED
@@ -265,6 +265,14 @@ class UDExTag extends UI5Element {
265
265
  }
266
266
  }
267
267
 
268
+ _onIconMouseDown(e: MouseEvent): void {
269
+ const target = e.currentTarget as HTMLElement;
270
+
271
+ if (target === this.shadowRoot?.querySelector("[ui5-icon]")) {
272
+ this.toBeDeleted = true;
273
+ }
274
+ }
275
+
268
276
  _handleResize() {
269
277
  if (this.isTruncatable) {
270
278
  this.title = this.text;
package/src/TagGroup.ts CHANGED
@@ -143,6 +143,16 @@ class UDExTagGroup extends UI5Element {
143
143
  @property()
144
144
  tooltipPlacement: `${Placement}` = Placement.Bottom;
145
145
 
146
+ /**
147
+ * Defines the accessible name for the "Show More" tooltip, announced by screen readers
148
+ * when the tooltip containing hidden tags is opened.
149
+ *
150
+ * @default undefined
151
+ * @public
152
+ */
153
+ @property()
154
+ tooltipAccessibleName?: string;
155
+
146
156
  /**
147
157
  * Determines whether there are hidden tags in the component.
148
158
  *
@@ -29,6 +29,7 @@ export default function TagTemplate(this: UDExTagGroup) {
29
29
  <UDExTooltip
30
30
  id={`${this._id}-tag-group-tooltip`}
31
31
  placement={this.tooltipPlacement}
32
+ accessible-name={this.tooltipAccessibleName}
32
33
  onKeyDown={this.handleShowMoreButtonKeydown}>
33
34
  <div
34
35
  role="group"
@@ -76,6 +76,7 @@ function tagIcon(this: UDExTag, rootClass: string, iconType: string, isIconClick
76
76
  <UI5Icon
77
77
  class={`${rootClass}__icon ${rootClass}__icon--${iconType}`}
78
78
  name={this.icon}
79
+ onMouseDown={this._onIconMouseDown}
79
80
  {...(isIconClickable ? { onClick: this.iconClickHandler } : {})}>
80
81
  </UI5Icon>
81
82
  </>