@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
@@ -1,5 +1,7 @@
1
1
  import { UDExSelectBox, UDExSelectBoxSelectAll, UDExSelectBoxGroupHeader, UDExSelectBoxItem, UDExButton, UDExModal } from "../support/component-imports.js";
2
- import { UDExListMode } from "../../src/types/List.js";
2
+ import { UDExListItemSize, UDExListMode, UDExListStyleType } from "../../src/types/List.js";
3
+ import { UDExAvatarShape, UDExAvatarSize } from "../../src/Avatar.js";
4
+ import UDExStatusBadgeValueState from "../../src/types/StatusBadgeValueState.js";
3
5
 
4
6
  const selectBoxWithRating = <div style="width: 350px; position:relative;"><UDExSelectBox
5
7
  id="select-box"
@@ -337,6 +339,9 @@ describe("SelectBox", () => {
337
339
  cy.get("#select-box").shadow()
338
340
  .find(".udex-tag-group").shadow().as("tagGroup");
339
341
 
342
+ // Wait for the resize handler to fire and render the tooltip before clicking.
343
+ cy.get("@tagGroup").find("udex-tooltip").should("exist");
344
+
340
345
  cy.get("@tagGroup")
341
346
  .find(".udex-tag-group__tokenizer").shadow()
342
347
  .find(".ui5-tokenizer-more-text")
@@ -1594,6 +1599,180 @@ describe("SelectBox", () => {
1594
1599
  });
1595
1600
  });
1596
1601
 
1602
+ // Added: covers SearchableListBase.filterItems group-header label matching.
1603
+ // When the search query matches a group header's label, the header label is
1604
+ // highlighted with <b> tags and ALL children of that group are shown.
1605
+ // When the query matches only some children, the header label is left intact
1606
+ // (no <b>) and only the matching children are shown.
1607
+ describe("Select Box group header search highlighting", () => {
1608
+ const groupHeaderForSearch = <div style="width: 350px; position:relative;">
1609
+ <UDExSelectBox
1610
+ id="select-box"
1611
+ mode={UDExListMode.MultiSelect}
1612
+ label="Programming languages">
1613
+ <UDExSelectBoxGroupHeader label="Programming Languages" supportingText="Digital Builders">
1614
+ <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
1615
+ <UDExSelectBoxItem label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
1616
+ </UDExSelectBoxGroupHeader>
1617
+ </UDExSelectBox>
1618
+ </div>;
1619
+
1620
+ // Selector for the title span inside the udex-list-item rendered for the
1621
+ // multi-select group header. The label is forwarded as the `label` attribute
1622
+ // of the inner udex-list-item, which renders it as <span part="title">{{{label}}}</span>.
1623
+ const groupHeaderTitleSelector = "[part='title']";
1624
+
1625
+ // Updated: covers Fix 1 — when the header label matches, children whose
1626
+ // labels also contain the query now get <b> highlights too. Query "P"
1627
+ // matches header "Programming Languages" AND child "Python".
1628
+ it("highlights the group header label with <b> tags when the search query matches the header label", () => {
1629
+ cy.mount(groupHeaderForSearch);
1630
+ cy.get("#select-box").shadow()
1631
+ .find(".udex-text-field__search").click();
1632
+ cy.realType("P");
1633
+
1634
+ cy.get("#select-box").shadow()
1635
+ .find("udex-list-group-header").should("exist");
1636
+
1637
+ // Header label is highlighted on the "P" of "Programming Languages".
1638
+ cy.get("#select-box").shadow()
1639
+ .find("udex-list-group-header").shadow()
1640
+ .find("udex-list-item").shadow()
1641
+ .find(groupHeaderTitleSelector)
1642
+ .find("b")
1643
+ .should("exist")
1644
+ .and("have.text", "P");
1645
+
1646
+ // Fix 1: child "Python" also matches "P" and must be highlighted as well,
1647
+ // not left as a plain label just because the header matched.
1648
+ // Children render in slotted order: index 0 = JavaScript, index 1 = Python.
1649
+ cy.get("#select-box").shadow()
1650
+ .find("udex-list-group-header")
1651
+ .find("udex-list-item").eq(1).shadow()
1652
+ .find(groupHeaderTitleSelector)
1653
+ .find("b")
1654
+ .should("exist")
1655
+ .and("have.text", "P");
1656
+ });
1657
+
1658
+ // Updated: covers Fix 1 — children matching the query DO get <b>; children
1659
+ // that do not contain the query do NOT get <b>. Highlighting is selective,
1660
+ // not all-or-nothing, even when the header match keeps every child visible.
1661
+ // Query "n": header "Programming Languages" has "n", "Python" has "n",
1662
+ // "JavaScript" has no "n" — so eq(1) is highlighted, eq(0) is not.
1663
+ it("shows ALL children of the group when the search query matches the group header label", () => {
1664
+ cy.mount(groupHeaderForSearch);
1665
+ cy.get("#select-box").shadow()
1666
+ .find(".udex-text-field__search").click();
1667
+ cy.realType("n");
1668
+
1669
+ // Both children remain rendered as udex-list-item inside the group header
1670
+ // even though only one of their labels matches — header match shows all children.
1671
+ cy.get("#select-box").shadow()
1672
+ .find("udex-list-group-header")
1673
+ .find("udex-list-item")
1674
+ .should("have.length", 2);
1675
+
1676
+ // "Python" (index 1) contains "n" — its label gets a <b> highlight.
1677
+ cy.get("#select-box").shadow()
1678
+ .find("udex-list-group-header")
1679
+ .find("udex-list-item").eq(1).shadow()
1680
+ .find(groupHeaderTitleSelector)
1681
+ .find("b")
1682
+ .should("exist");
1683
+
1684
+ // "JavaScript" (index 0) has no "n" — its label has no <b>.
1685
+ cy.get("#select-box").shadow()
1686
+ .find("udex-list-group-header")
1687
+ .find("udex-list-item").eq(0).shadow()
1688
+ .find(groupHeaderTitleSelector)
1689
+ .find("b")
1690
+ .should("not.exist");
1691
+ });
1692
+
1693
+ // Added: covers Fix 2 — checkAndUpdateLabel now resets item.label to its
1694
+ // clean form before deciding whether to add a new <b>, so a header that
1695
+ // matched a previous query is cleaned up when the new query no longer
1696
+ // matches it.
1697
+ it("clears stale highlight on header when query changes", () => {
1698
+ cy.mount(groupHeaderForSearch);
1699
+ cy.get("#select-box").shadow()
1700
+ .find(".udex-text-field__search").as("searchField");
1701
+
1702
+ // First search matches the header — header label is highlighted.
1703
+ cy.get("@searchField").click();
1704
+ cy.realType("Programming");
1705
+
1706
+ cy.get("#select-box").shadow()
1707
+ .find("udex-list-group-header").shadow()
1708
+ .find("udex-list-item").shadow()
1709
+ .find(groupHeaderTitleSelector)
1710
+ .find("b")
1711
+ .should("exist");
1712
+
1713
+ // Replace the search with one that does NOT match the header label.
1714
+ // "Java" matches a child but not "Programming Languages".
1715
+ cy.get("@searchField").clear();
1716
+ cy.get("@searchField").click();
1717
+ cy.realType("Java");
1718
+
1719
+ // Fix 2: stale <b> from the previous "Programming" match must be gone.
1720
+ cy.get("#select-box").shadow()
1721
+ .find("udex-list-group-header").shadow()
1722
+ .find("udex-list-item").shadow()
1723
+ .find(groupHeaderTitleSelector)
1724
+ .find("b")
1725
+ .should("not.exist");
1726
+ });
1727
+
1728
+ it("does NOT highlight the group header label when only child items match the query", () => {
1729
+ cy.mount(groupHeaderForSearch);
1730
+ cy.get("#select-box").shadow()
1731
+ .find(".udex-text-field__search").click();
1732
+ cy.realType("Python");
1733
+
1734
+ // Only the matching child is rendered as an udex-list-item under the header.
1735
+ cy.get("#select-box").shadow()
1736
+ .find("udex-list-group-header")
1737
+ .find("udex-list-item")
1738
+ .should("have.length", 1);
1739
+
1740
+ // The matching child label itself receives the <b> highlight.
1741
+ cy.get("#select-box").shadow()
1742
+ .find("udex-list-group-header")
1743
+ .find("udex-list-item").shadow()
1744
+ .find(groupHeaderTitleSelector)
1745
+ .find("b")
1746
+ .should("have.text", "Python");
1747
+
1748
+ // Header label has no <b> tag because the header label itself does not
1749
+ // match "Python" — only the child does.
1750
+ cy.get("#select-box").shadow()
1751
+ .find("udex-list-group-header").shadow()
1752
+ .find("udex-list-item").shadow()
1753
+ .find(groupHeaderTitleSelector)
1754
+ .find("b")
1755
+ .should("not.exist");
1756
+ });
1757
+
1758
+ it("hides the group entirely when neither the header nor any child matches the query", () => {
1759
+ cy.mount(groupHeaderForSearch);
1760
+ cy.get("#select-box").shadow()
1761
+ .find(".udex-text-field__search").click();
1762
+ cy.realType("zzznomatch");
1763
+
1764
+ // The whole group is filtered out — group header is not rendered in shadow.
1765
+ cy.get("#select-box").shadow()
1766
+ .find("udex-list-group-header")
1767
+ .should("not.exist");
1768
+
1769
+ // The empty-state message is shown instead.
1770
+ cy.get("#select-box").shadow()
1771
+ .find(".udex-no-result")
1772
+ .should("include.text", "No matches found.");
1773
+ });
1774
+ });
1775
+
1597
1776
  describe("SelectBox keyboard navigation with action icon buttons", () => {
1598
1777
  const shortComponentWithFocusTargets = <div style="width: 350px; position:relative;">
1599
1778
  <a id="previous-focus" href="#">Previous focusable element</a>
@@ -1774,4 +1953,355 @@ describe("SelectBox", () => {
1774
1953
  cy.get("#next-focus").should("be.focused");
1775
1954
  });
1776
1955
  });
1956
+
1957
+ describe("SelectBoxItem forwarded properties", () => {
1958
+ const selectBoxWithImageItems = <div style="width: 350px; position:relative;">
1959
+ <UDExSelectBox id="select-box" label="People">
1960
+ <UDExSelectBoxItem
1961
+ id="item-image"
1962
+ label="Alice"
1963
+ image="./stories/list/image.png"
1964
+ imageAlt="Alice avatar"
1965
+ imageBadgeState={UDExStatusBadgeValueState.Information}
1966
+ imageShape={UDExAvatarShape.Square}
1967
+ imageSize={UDExAvatarSize.M}>
1968
+ </UDExSelectBoxItem>
1969
+ <UDExSelectBoxItem
1970
+ id="item-image-default-shape-size"
1971
+ label="Bob"
1972
+ image="./stories/list/image.png"
1973
+ imageAlt="Bob avatar">
1974
+ </UDExSelectBoxItem>
1975
+ </UDExSelectBox>
1976
+ </div>;
1977
+
1978
+ const selectBoxWithFlagItems = <div style="width: 350px; position:relative;">
1979
+ <UDExSelectBox id="select-box" label="Countries">
1980
+ <UDExSelectBoxItem id="item-flag-start" label="Germany" flag flagPosition="start"></UDExSelectBoxItem>
1981
+ <UDExSelectBoxItem id="item-flag-end" label="France" flag flagPosition="end"></UDExSelectBoxItem>
1982
+ <UDExSelectBoxItem id="item-no-flag" label="Spain"></UDExSelectBoxItem>
1983
+ </UDExSelectBox>
1984
+ </div>;
1985
+
1986
+ const selectBoxWithIconType = <div style="width: 350px; position:relative;">
1987
+ <UDExSelectBox id="select-box-icon" label="Items" type={UDExListStyleType.Icon} itemIcon="accept">
1988
+ <UDExSelectBoxItem id="item-icon" label="Saved"></UDExSelectBoxItem>
1989
+ <UDExSelectBoxItem id="item-icon-2" label="Done"></UDExSelectBoxItem>
1990
+ </UDExSelectBox>
1991
+ </div>;
1992
+
1993
+ const selectBoxWithCircleType = <div style="width: 350px; position:relative;">
1994
+ <UDExSelectBox id="select-box-circle" label="Items" type={UDExListStyleType.Circle}>
1995
+ <UDExSelectBoxItem id="item-circle" label="Bullet"></UDExSelectBoxItem>
1996
+ </UDExSelectBox>
1997
+ </div>;
1998
+
1999
+ const selectBoxWithNumberType = <div style="width: 350px; position:relative;">
2000
+ <UDExSelectBox id="select-box-number" label="Items" type={UDExListStyleType.Number}>
2001
+ <UDExSelectBoxItem id="item-number" label="Numbered"></UDExSelectBoxItem>
2002
+ </UDExSelectBox>
2003
+ </div>;
2004
+
2005
+ const selectBoxWithSizes = <div style="width: 350px; position:relative;">
2006
+ <UDExSelectBox id="select-box" label="Sizes">
2007
+ <UDExSelectBoxItem id="item-large" label="Large" size={UDExListItemSize.Large}></UDExSelectBoxItem>
2008
+ <UDExSelectBoxItem id="item-standard" label="Standard" size={UDExListItemSize.Standard}></UDExSelectBoxItem>
2009
+ </UDExSelectBox>
2010
+ </div>;
2011
+
2012
+ const openDropdown = () => {
2013
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
2014
+ cy.get("#select-box").shadow()
2015
+ .find(".udex-select-box__dropdown")
2016
+ .should("have.attr", "open");
2017
+ };
2018
+
2019
+ describe("Defaults on the host udex-select-box-item", () => {
2020
+ it("imageShape defaults to 'Circle' on the host element", () => {
2021
+ cy.mount(<UDExSelectBoxItem id="default-item" label="x"></UDExSelectBoxItem>);
2022
+ cy.get("#default-item").then($el => {
2023
+ expect(($el[0] as any).imageShape).to.equal(UDExAvatarShape.Circle);
2024
+ });
2025
+ });
2026
+
2027
+ it("imageSize defaults to 'S' on the host element", () => {
2028
+ cy.mount(<UDExSelectBoxItem id="default-item" label="x"></UDExSelectBoxItem>);
2029
+ cy.get("#default-item").then($el => {
2030
+ expect(($el[0] as any).imageSize).to.equal(UDExAvatarSize.S);
2031
+ });
2032
+ });
2033
+
2034
+ it("type defaults to 'None' on the host element", () => {
2035
+ cy.mount(<UDExSelectBoxItem id="default-item" label="x"></UDExSelectBoxItem>);
2036
+ cy.get("#default-item").then($el => {
2037
+ expect(($el[0] as any).type).to.equal(UDExListStyleType.None);
2038
+ });
2039
+ });
2040
+
2041
+ it("size defaults to 'Standard' on the host element", () => {
2042
+ cy.mount(<UDExSelectBoxItem id="default-item" label="x"></UDExSelectBoxItem>);
2043
+ cy.get("#default-item").then($el => {
2044
+ expect(($el[0] as any).size).to.equal(UDExListItemSize.Standard);
2045
+ });
2046
+ });
2047
+
2048
+ it("flag defaults to falsy on the host element", () => {
2049
+ cy.mount(<UDExSelectBoxItem id="default-item" label="x"></UDExSelectBoxItem>);
2050
+ cy.get("#default-item").then($el => {
2051
+ expect(($el[0] as any).flag).to.not.equal(true);
2052
+ });
2053
+ });
2054
+ });
2055
+
2056
+ describe("Image forwarding", () => {
2057
+ it("forwards image src to the rendered udex-list-item as 'image'", () => {
2058
+ cy.mount(selectBoxWithImageItems);
2059
+ openDropdown();
2060
+
2061
+ cy.get("#select-box").shadow()
2062
+ .find("udex-list-item").eq(0)
2063
+ .should("have.attr", "image", "./stories/list/image.png");
2064
+ });
2065
+
2066
+ it("forwards imageAlt to the rendered udex-list-item as 'image-alt'", () => {
2067
+ cy.mount(selectBoxWithImageItems);
2068
+ openDropdown();
2069
+
2070
+ cy.get("#select-box").shadow()
2071
+ .find("udex-list-item").eq(0)
2072
+ .should("have.attr", "image-alt", "Alice avatar");
2073
+ });
2074
+
2075
+ it("forwards imageBadgeState to the rendered udex-list-item as 'image-badge-state'", () => {
2076
+ cy.mount(selectBoxWithImageItems);
2077
+ openDropdown();
2078
+
2079
+ cy.get("#select-box").shadow()
2080
+ .find("udex-list-item").eq(0)
2081
+ .should("have.attr", "image-badge-state", UDExStatusBadgeValueState.Information);
2082
+ });
2083
+
2084
+ it("forwards imageShape to the rendered udex-list-item as 'image-shape'", () => {
2085
+ cy.mount(selectBoxWithImageItems);
2086
+ openDropdown();
2087
+
2088
+ cy.get("#select-box").shadow()
2089
+ .find("udex-list-item").eq(0)
2090
+ .should("have.attr", "image-shape", UDExAvatarShape.Square);
2091
+ });
2092
+
2093
+ it("forwards imageSize to the rendered udex-list-item as 'image-size'", () => {
2094
+ cy.mount(selectBoxWithImageItems);
2095
+ openDropdown();
2096
+
2097
+ cy.get("#select-box").shadow()
2098
+ .find("udex-list-item").eq(0)
2099
+ .should("have.attr", "image-size", UDExAvatarSize.M);
2100
+ });
2101
+
2102
+ it("forwards default imageShape ('Circle') and imageSize ('S') when not explicitly set", () => {
2103
+ cy.mount(selectBoxWithImageItems);
2104
+ openDropdown();
2105
+
2106
+ cy.get("#select-box").shadow()
2107
+ .find("udex-list-item").eq(1)
2108
+ .should("have.attr", "image-shape", UDExAvatarShape.Circle)
2109
+ .and("have.attr", "image-size", UDExAvatarSize.S);
2110
+ });
2111
+
2112
+ it("renders the avatar inside the rendered udex-list-item shadow with the correct shape and size", () => {
2113
+ cy.mount(selectBoxWithImageItems);
2114
+ openDropdown();
2115
+
2116
+ cy.get("#select-box").shadow()
2117
+ .find("udex-list-item").eq(0)
2118
+ .shadow().find(".udex-list__avatar").as("avatar");
2119
+
2120
+ cy.get("@avatar").should("have.attr", "shape", UDExAvatarShape.Square);
2121
+ cy.get("@avatar").should("have.attr", "size", UDExAvatarSize.M);
2122
+ cy.get("@avatar").find("img").should("have.attr", "alt", "Alice avatar");
2123
+ });
2124
+
2125
+ it("renders the status badge inside the rendered udex-list-item with the forwarded value-state", () => {
2126
+ cy.mount(selectBoxWithImageItems);
2127
+ openDropdown();
2128
+
2129
+ cy.get("#select-box").shadow()
2130
+ .find("udex-list-item").eq(0)
2131
+ .shadow().find("udex-status-badge")
2132
+ .should("have.attr", "value-state", UDExStatusBadgeValueState.Information);
2133
+ });
2134
+ });
2135
+
2136
+ describe("Flag forwarding", () => {
2137
+ it("forwards flag boolean to the rendered udex-list-item as the 'flag' attribute", () => {
2138
+ cy.mount(selectBoxWithFlagItems);
2139
+ openDropdown();
2140
+
2141
+ cy.get("#select-box").shadow()
2142
+ .find("udex-list-item").eq(0)
2143
+ .should("have.attr", "flag");
2144
+ });
2145
+
2146
+ it("forwards flagPosition='start' to the rendered udex-list-item as 'flag-position'", () => {
2147
+ cy.mount(selectBoxWithFlagItems);
2148
+ openDropdown();
2149
+
2150
+ cy.get("#select-box").shadow()
2151
+ .find("udex-list-item").eq(0)
2152
+ .should("have.attr", "flag-position", "start");
2153
+ });
2154
+
2155
+ it("forwards flagPosition='end' to the rendered udex-list-item as 'flag-position'", () => {
2156
+ cy.mount(selectBoxWithFlagItems);
2157
+ openDropdown();
2158
+
2159
+ cy.get("#select-box").shadow()
2160
+ .find("udex-list-item").eq(1)
2161
+ .should("have.attr", "flag-position", "end");
2162
+ });
2163
+
2164
+ it("does not forward flag attribute when flag is not set on the SelectBoxItem", () => {
2165
+ cy.mount(selectBoxWithFlagItems);
2166
+ openDropdown();
2167
+
2168
+ cy.get("#select-box").shadow()
2169
+ .find("udex-list-item").eq(2)
2170
+ .should("not.have.attr", "flag");
2171
+ });
2172
+ });
2173
+
2174
+ describe("itemIcon and type forwarding", () => {
2175
+ it("renders the icon in the list item shadow DOM when type='Icon' and itemIcon is set", () => {
2176
+ cy.mount(selectBoxWithIconType);
2177
+ cy.get("#select-box-icon").shadow().find(".udex-text-field__trigger").click();
2178
+
2179
+ cy.get("#select-box-icon").shadow()
2180
+ .find("udex-list-item").eq(0)
2181
+ .should("have.attr", "type", UDExListStyleType.Icon)
2182
+ .shadow().find("ui5-icon.udex-list__icon")
2183
+ .should("have.attr", "name", "accept");
2184
+ });
2185
+
2186
+ it("forwards type='Circle' to the rendered udex-list-item", () => {
2187
+ cy.mount(selectBoxWithCircleType);
2188
+ cy.get("#select-box-circle").shadow().find(".udex-text-field__trigger").click();
2189
+
2190
+ cy.get("#select-box-circle").shadow()
2191
+ .find("udex-list-item").eq(0)
2192
+ .should("have.attr", "type", UDExListStyleType.Circle);
2193
+ });
2194
+
2195
+ it("forwards type='Number' to the rendered udex-list-item", () => {
2196
+ cy.mount(selectBoxWithNumberType);
2197
+ cy.get("#select-box-number").shadow().find(".udex-text-field__trigger").click();
2198
+
2199
+ cy.get("#select-box-number").shadow()
2200
+ .find("udex-list-item").eq(0)
2201
+ .should("have.attr", "type", UDExListStyleType.Number);
2202
+ });
2203
+ });
2204
+
2205
+ describe("size forwarding", () => {
2206
+ it("forwards size='Large' to the rendered udex-list-item", () => {
2207
+ cy.mount(selectBoxWithSizes);
2208
+ openDropdown();
2209
+
2210
+ cy.get("#select-box").shadow()
2211
+ .find("udex-list-item").eq(0)
2212
+ .should("have.attr", "size", UDExListItemSize.Large);
2213
+ });
2214
+
2215
+ it("forwards size='Standard' (default) to the rendered udex-list-item", () => {
2216
+ cy.mount(selectBoxWithSizes);
2217
+ openDropdown();
2218
+
2219
+ cy.get("#select-box").shadow()
2220
+ .find("udex-list-item").eq(1)
2221
+ .should("have.attr", "size", UDExListItemSize.Standard);
2222
+ });
2223
+ });
2224
+ });
2225
+
2226
+ describe("Dropdown scroll", () => {
2227
+ const singleSelectScrollFixture = <div style="width: 350px; position:relative;">
2228
+ <UDExSelectBox id="select-box" height="200px" label="Languages">
2229
+ <UDExSelectBoxItem label="A"></UDExSelectBoxItem>
2230
+ <UDExSelectBoxItem label="B"></UDExSelectBoxItem>
2231
+ <UDExSelectBoxItem label="C"></UDExSelectBoxItem>
2232
+ <UDExSelectBoxItem label="D"></UDExSelectBoxItem>
2233
+ <UDExSelectBoxItem label="E"></UDExSelectBoxItem>
2234
+ <UDExSelectBoxItem label="F"></UDExSelectBoxItem>
2235
+ <UDExSelectBoxItem label="G"></UDExSelectBoxItem>
2236
+ <UDExSelectBoxItem label="H"></UDExSelectBoxItem>
2237
+ <UDExSelectBoxItem label="I"></UDExSelectBoxItem>
2238
+ <UDExSelectBoxItem label="J"></UDExSelectBoxItem>
2239
+ <UDExSelectBoxItem label="K" selected></UDExSelectBoxItem>
2240
+ </UDExSelectBox>
2241
+ </div>;
2242
+
2243
+ it("MultiSelect mode - scroll position resets to top after closing and reopening the dropdown", () => {
2244
+ cy.mount(multiSelect);
2245
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").as("trigger");
2246
+
2247
+ cy.get("@trigger").click();
2248
+
2249
+ cy.get("#select-box").shadow()
2250
+ .find("ui5-popover").shadow()
2251
+ .find("[part=content]").as("content");
2252
+
2253
+ cy.get("@content").then($el => {
2254
+ $el[0].scrollTop = 9999;
2255
+ });
2256
+
2257
+ cy.get("@content").invoke("prop", "scrollTop").should("be.greaterThan", 0);
2258
+
2259
+ cy.get("@trigger").click();
2260
+
2261
+ cy.get("#select-box").shadow()
2262
+ .find(".udex-select-box__dropdown")
2263
+ .should("not.have.attr", "open");
2264
+
2265
+ cy.get("@trigger").click();
2266
+
2267
+ cy.get("#select-box").shadow()
2268
+ .find(".udex-select-box__dropdown")
2269
+ .should("have.attr", "open");
2270
+
2271
+ cy.get("#select-box").shadow()
2272
+ .find("ui5-popover").shadow()
2273
+ .find("[part=content]")
2274
+ .invoke("prop", "scrollTop")
2275
+ .should("equal", 0);
2276
+ });
2277
+
2278
+ it("SingleSelect mode - selected item is scrolled into view after closing and reopening the dropdown", () => {
2279
+ cy.mount(singleSelectScrollFixture);
2280
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").as("trigger");
2281
+
2282
+ cy.get("@trigger").click();
2283
+
2284
+ cy.get("#select-box").shadow()
2285
+ .find(".udex-select-box__dropdown")
2286
+ .should("have.attr", "open");
2287
+
2288
+ cy.get("@trigger").click();
2289
+
2290
+ cy.get("#select-box").shadow()
2291
+ .find(".udex-select-box__dropdown")
2292
+ .should("not.have.attr", "open");
2293
+
2294
+ cy.get("@trigger").click();
2295
+
2296
+ cy.get("#select-box").shadow()
2297
+ .find(".udex-select-box__dropdown")
2298
+ .should("have.attr", "open");
2299
+
2300
+ cy.get("#select-box").shadow()
2301
+ .find("ui5-popover").shadow()
2302
+ .find("[part=content]")
2303
+ .invoke("prop", "scrollTop")
2304
+ .should("be.greaterThan", 0);
2305
+ });
2306
+ });
1777
2307
  });
@@ -95,4 +95,15 @@ describe("TagGroup", () => {
95
95
  cy.get("@tagClick").should("have.been.called");
96
96
  });
97
97
 
98
+ it("tooltip accessible name is set on the tooltip element", () => {
99
+ cy.mount(
100
+ <UDExTagGroup tooltipAccessibleName="Hidden tags">
101
+ {Array.from({ length: 16 }, (_, i) => <UDExTag text={`Tag ${i + 1}`}></UDExTag>)}
102
+ </UDExTagGroup>
103
+ );
104
+ const nMore = cy.get("[udex-tag-group]").shadow().find(".udex-tag-group__tokenizer").shadow().find(".ui5-tokenizer-more-text");
105
+ nMore.click();
106
+ cy.get("[udex-tag-group]").shadow().find("[udex-tooltip]").should("have.attr", "accessible-name", "Hidden tags");
107
+ });
108
+
98
109
  });
@@ -76,27 +76,24 @@ describe("Toast", async () => {
76
76
  describe("With Success valueState", () => {
77
77
  it("renders sys-enter-2 icon when valueState is Success", () => {
78
78
  cy.mount(successToast);
79
- cy.get("#successToast").shadow().find(".udex-toast__icon").then($toastIcon =>
80
- expect($toastIcon.attr("name")).to.eq("sys-enter-2")
81
- )
79
+ cy.get("#successToast").shadow().find(".udex-toast__icon")
80
+ .invoke("prop", "name").should("eq", "sys-enter-2")
82
81
  });
83
82
  })
84
83
 
85
84
  describe("With Warning valueState", () => {
86
85
  it("renders alert icon when valueState is Warning", () => {
87
86
  cy.mount(warningToast);
88
- cy.get("#warningToast").shadow().find(".udex-toast__icon").then($toastIcon =>
89
- expect($toastIcon.attr("name")).to.eq("alert")
90
- )
87
+ cy.get("#warningToast").shadow().find(".udex-toast__icon")
88
+ .invoke("prop", "name").should("eq", "alert")
91
89
  });
92
90
  })
93
91
 
94
92
  describe("With Error valueState", () => {
95
93
  it("renders error icon when valueState is Error", () => {
96
94
  cy.mount(errorToast);
97
- cy.get("#errorToast").shadow().find(".udex-toast__icon").then($toastIcon =>
98
- expect($toastIcon.attr("name")).to.eq("error")
99
- )
95
+ cy.get("#errorToast").shadow().find(".udex-toast__icon")
96
+ .invoke("prop", "name").should("eq", "error")
100
97
  });
101
98
  })
102
99
  });
@@ -1,6 +1,7 @@
1
1
  import PopupAccessibleRole from "@ui5/webcomponents/dist/types/PopupAccessibleRole.js";
2
2
  import Popover from "@ui5/webcomponents/dist/Popover.js";
3
3
  import "@ui5/webcomponents-fiori/dist/illustrations/NoSearchResults.js";
4
+ import UDExList from "./List.js";
4
5
  import type { UDExSearchKeydownEventDetail } from "./Search.js";
5
6
  import UDExSearch from "./Search.js";
6
7
  import UDExButton from "./Button.js";
@@ -188,6 +189,7 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
188
189
  _popover: Popover;
189
190
  _breakpointSizeXS: number;
190
191
  _initialState: Array<initialItemState>;
192
+ _list: UDExList;
191
193
  onEnterDOM(): void;
192
194
  onBeforeRendering(): void;
193
195
  onAfterRendering(): void;
@@ -211,6 +213,8 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
211
213
  onDropdownClose(e?: KeyboardEvent): void;
212
214
  _dropdownBeforeOpen(): void;
213
215
  _dropdownAfterOpen(): void;
216
+ _focusFirstInteractiveElement(): void;
217
+ _focusSearchInput(): void;
214
218
  _getInitialState(items: Array<UDExListItemBase | UDExListGroupHeaderBase>): Array<initialItemState>;
215
219
  _setInitialListState(): void;
216
220
  _setInitialState(): void;
@@ -151,6 +151,7 @@ let UDExFilterMenu = UDExFilterMenu_1 = class UDExFilterMenu extends UDExSearcha
151
151
  this._search = this.getSearch();
152
152
  this._popover = this.getPopover();
153
153
  this._trigger = this.getTriggerButton();
154
+ this._list = this.getList();
154
155
  }
155
156
  handleSelectAll(e) {
156
157
  this.onSelectAllHeaderPress(e);
@@ -262,8 +263,26 @@ let UDExFilterMenu = UDExFilterMenu_1 = class UDExFilterMenu extends UDExSearcha
262
263
  if (this._popover.offsetWidth + popoverLeftOffset < this._breakpointSizeXS) {
263
264
  this.style.setProperty("--udex-filter-menu-popover-left-offset", `${this._popover.style.left}`);
264
265
  }
266
+ if (this.modeMultiSelect) {
267
+ this._focusFirstInteractiveElement();
268
+ }
269
+ if (this.modeSingleSelect && !this._search) {
270
+ this.activeItem?.focus();
271
+ }
272
+ this._handleDropdownScroll();
265
273
  this.fireDecoratorEvent("after-open");
266
274
  }
275
+ _focusFirstInteractiveElement() {
276
+ if (this.showSearch && this._search) {
277
+ this._focusSearchInput();
278
+ return;
279
+ }
280
+ this.focusFirstItem();
281
+ }
282
+ _focusSearchInput() {
283
+ const input = this._search.shadowRoot?.querySelector("[id='search-input']");
284
+ input.focus();
285
+ }
267
286
  _getInitialState(items) {
268
287
  return items.flatMap(item => {
269
288
  if (item.isGroup) {