@sapudex/web-components 2.55.0 → 2.57.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 (483) hide show
  1. package/README.md +258 -0
  2. package/cypress/specs/HeroBanner.cy.tsx +35 -1
  3. package/cypress/specs/List.cy.tsx +63 -1
  4. package/cypress/specs/ListItem.cy.tsx +44 -0
  5. package/cypress/specs/MastheadShell.cy.tsx +39 -0
  6. package/cypress/specs/PhoneNumberField.cy.tsx +29 -1
  7. package/cypress/specs/SelectBox.cy.tsx +99 -0
  8. package/cypress/specs/TagGroup.cy.tsx +35 -0
  9. package/dist/Carousel.d.ts +9 -3
  10. package/dist/Carousel.js +35 -6
  11. package/dist/Carousel.js.map +1 -1
  12. package/dist/CarouselTemplate.js +3 -3
  13. package/dist/CarouselTemplate.js.map +1 -1
  14. package/dist/CountrySelectorTemplate.js +1 -1
  15. package/dist/CountrySelectorTemplate.js.map +1 -1
  16. package/dist/FilterMenu.js +5 -1
  17. package/dist/FilterMenu.js.map +1 -1
  18. package/dist/HeroBanner.d.ts +12 -0
  19. package/dist/HeroBanner.js +54 -0
  20. package/dist/HeroBanner.js.map +1 -1
  21. package/dist/List.d.ts +5 -0
  22. package/dist/List.js +7 -0
  23. package/dist/List.js.map +1 -1
  24. package/dist/ListItem.js +5 -1
  25. package/dist/ListItem.js.map +1 -1
  26. package/dist/ListTemplate.js +1 -1
  27. package/dist/ListTemplate.js.map +1 -1
  28. package/dist/MastheadShell.d.ts +7 -0
  29. package/dist/MastheadShell.js +38 -0
  30. package/dist/MastheadShell.js.map +1 -1
  31. package/dist/PhoneNumberField.d.ts +3 -3
  32. package/dist/PhoneNumberField.js +18 -21
  33. package/dist/PhoneNumberField.js.map +1 -1
  34. package/dist/PhoneNumberFieldTemplate.d.ts +2 -0
  35. package/dist/PhoneNumberFieldTemplate.js +12 -0
  36. package/dist/PhoneNumberFieldTemplate.js.map +1 -0
  37. package/dist/Search.d.ts +2 -0
  38. package/dist/Search.js +21 -0
  39. package/dist/Search.js.map +1 -1
  40. package/dist/SearchableListBase.d.ts +4 -0
  41. package/dist/SearchableListBase.js +66 -6
  42. package/dist/SearchableListBase.js.map +1 -1
  43. package/dist/SearchableListBaseTemplate.js +1 -1
  44. package/dist/SearchableListBaseTemplate.js.map +1 -1
  45. package/dist/SelectBase.js +14 -22
  46. package/dist/SelectBase.js.map +1 -1
  47. package/dist/SelectBoxTemplate.js +1 -1
  48. package/dist/SelectBoxTemplate.js.map +1 -1
  49. package/dist/StatusMessage.d.ts +2 -2
  50. package/dist/StatusMessage.js +1 -1
  51. package/dist/StatusMessage.js.map +1 -1
  52. package/dist/TabNavigation.d.ts +3 -2
  53. package/dist/TabNavigation.js +3 -2
  54. package/dist/TabNavigation.js.map +1 -1
  55. package/dist/Tag.d.ts +1 -0
  56. package/dist/Tag.js +6 -0
  57. package/dist/Tag.js.map +1 -1
  58. package/dist/TagGroup.js +4 -2
  59. package/dist/TagGroup.js.map +1 -1
  60. package/dist/TextAreaTemplate.js +1 -1
  61. package/dist/TextAreaTemplate.js.map +1 -1
  62. package/dist/TextFieldTemplate.js +1 -1
  63. package/dist/TextFieldTemplate.js.map +1 -1
  64. package/dist/Upload.js +6 -9
  65. package/dist/Upload.js.map +1 -1
  66. package/dist/UploadItem.d.ts +2 -2
  67. package/dist/UploadItem.js +6 -9
  68. package/dist/UploadItem.js.map +1 -1
  69. package/dist/UploadItemTemplate.d.ts +2 -0
  70. package/dist/UploadItemTemplate.js +14 -0
  71. package/dist/UploadItemTemplate.js.map +1 -0
  72. package/dist/UploadTemplate.d.ts +2 -0
  73. package/dist/UploadTemplate.js +11 -0
  74. package/dist/UploadTemplate.js.map +1 -0
  75. package/dist/assets/{InputSuggestions-DPiJnNLn.js → InputSuggestions-C8grDr_8.js} +1 -1
  76. package/dist/assets/{ListItemStandardExpandableTextTemplate-B-v72jL6.js → ListItemStandardExpandableTextTemplate-BQtSr7yg.js} +1 -1
  77. package/dist/assets/{bundle-C7Yft7IG.css → bundle-CdO3MnjQ.css} +1 -1
  78. package/dist/assets/{bundle.esm-DPppjwN7.js → bundle.esm-GvPkDyXP.js} +251 -239
  79. package/dist/assets/messagebundle_ar-BvIvqOKJ.js +1 -0
  80. package/dist/assets/messagebundle_bg-CbE9TJP3.js +1 -0
  81. package/dist/assets/messagebundle_cs-D7sDCnrw.js +1 -0
  82. package/dist/assets/messagebundle_da-BKcG2gb3.js +1 -0
  83. package/dist/assets/messagebundle_de-CqojOAqG.js +1 -0
  84. package/dist/assets/messagebundle_el-DLfp0_Vm.js +1 -0
  85. package/dist/assets/messagebundle_en-DBpf5Il2.js +1 -0
  86. package/dist/assets/messagebundle_es-dcaagZn0.js +1 -0
  87. package/dist/assets/messagebundle_et-XYXhCdvm.js +1 -0
  88. package/dist/assets/messagebundle_fi-Dffg0zEq.js +1 -0
  89. package/dist/assets/messagebundle_fr-CW8ENL86.js +1 -0
  90. package/dist/assets/messagebundle_hr-onMgZwRd.js +1 -0
  91. package/dist/assets/messagebundle_hu-BPDuHAe0.js +1 -0
  92. package/dist/assets/messagebundle_it-BcfXVW1A.js +1 -0
  93. package/dist/assets/messagebundle_ja-EWp-Nkd9.js +1 -0
  94. package/dist/assets/messagebundle_ko-BKQ27UJW.js +1 -0
  95. package/dist/assets/messagebundle_lt-A-f2EeMY.js +1 -0
  96. package/dist/assets/messagebundle_lv-CHVU_rnx.js +1 -0
  97. package/dist/assets/messagebundle_nl-gmf1np1i.js +1 -0
  98. package/dist/assets/messagebundle_no-CazfcIRA.js +1 -0
  99. package/dist/assets/messagebundle_pl-iv_zMkL4.js +1 -0
  100. package/dist/assets/messagebundle_pt-usY49ESJ.js +1 -0
  101. package/dist/assets/messagebundle_pt_PT-DTLEUiTC.js +1 -0
  102. package/dist/assets/messagebundle_ro-BHeGIHaV.js +1 -0
  103. package/dist/assets/messagebundle_ru-DJB1z_R0.js +1 -0
  104. package/dist/assets/messagebundle_sk-DlNIpzr3.js +1 -0
  105. package/dist/assets/messagebundle_sl-Day075Cf.js +1 -0
  106. package/dist/assets/messagebundle_sr-iI_TwIHf.js +1 -0
  107. package/dist/assets/messagebundle_sv-BPj73b5X.js +1 -0
  108. package/dist/assets/messagebundle_tr-DpdBqQtI.js +1 -0
  109. package/dist/assets/messagebundle_uk-CT4EqEBF.js +1 -0
  110. package/dist/assets/messagebundle_zh_CN-B_42cWcu.js +1 -0
  111. package/dist/assets/messagebundle_zh_TW-D25iNCcy.js +1 -0
  112. package/dist/css/themes/AccordionItem.css +1 -1
  113. package/dist/css/themes/AccordionSpotlight.css +1 -1
  114. package/dist/css/themes/Avatar.css +1 -1
  115. package/dist/css/themes/Carousel.css +1 -1
  116. package/dist/css/themes/CountrySelector.css +1 -1
  117. package/dist/css/themes/EventRibbon.css +1 -1
  118. package/dist/css/themes/FilterMenu.css +1 -1
  119. package/dist/css/themes/HeroBanner.css +1 -1
  120. package/dist/css/themes/ImageGridTicker.css +1 -1
  121. package/dist/css/themes/ListItem.css +1 -1
  122. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  123. package/dist/css/themes/MastheadItem.css +1 -1
  124. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  125. package/dist/css/themes/MastheadShell.css +1 -1
  126. package/dist/css/themes/MediaPlayer.css +1 -1
  127. package/dist/css/themes/Modal.css +1 -1
  128. package/dist/css/themes/PhoneNumberField.css +1 -1
  129. package/dist/css/themes/Search.css +1 -1
  130. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  131. package/dist/css/themes/SelectBase.css +1 -1
  132. package/dist/css/themes/StepInput.css +1 -1
  133. package/dist/css/themes/Switch.css +1 -1
  134. package/dist/css/themes/TabInOverflow.css +1 -1
  135. package/dist/css/themes/TabNavigation.css +1 -1
  136. package/dist/css/themes/TableCellBase.css +1 -1
  137. package/dist/css/themes/TagGroup.css +1 -1
  138. package/dist/css/themes/TextArea.css +1 -1
  139. package/dist/css/themes/TextField.css +1 -1
  140. package/dist/css/themes/Tooltip.css +1 -1
  141. package/dist/css/themes/Wizard.css +1 -1
  142. package/dist/custom-elements-internal.json +1119 -98
  143. package/dist/custom-elements.json +745 -128
  144. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  149. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  150. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  151. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  152. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  153. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  154. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  155. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  156. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  157. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  158. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  159. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  160. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  161. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  162. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  163. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  164. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  165. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  168. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  169. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  171. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  172. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  173. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  174. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  175. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  176. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  177. package/dist/generated/i18n/i18n-defaults.d.ts +1 -9
  178. package/dist/generated/i18n/i18n-defaults.js +1 -9
  179. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  180. package/dist/generated/templates/TabNavigationTemplate.lit.js +2 -2
  181. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
  182. package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
  183. package/dist/generated/themes/AccordionItem.css.js +1 -1
  184. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  185. package/dist/generated/themes/AccordionSpotlight.css.d.ts +1 -1
  186. package/dist/generated/themes/AccordionSpotlight.css.js +1 -1
  187. package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -1
  188. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  189. package/dist/generated/themes/Avatar.css.js +1 -1
  190. package/dist/generated/themes/Avatar.css.js.map +1 -1
  191. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  192. package/dist/generated/themes/Carousel.css.js +1 -1
  193. package/dist/generated/themes/Carousel.css.js.map +1 -1
  194. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  195. package/dist/generated/themes/CountrySelector.css.js +1 -1
  196. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  197. package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
  198. package/dist/generated/themes/EventRibbon.css.js +1 -1
  199. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  200. package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
  201. package/dist/generated/themes/FilterMenu.css.js +1 -1
  202. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  203. package/dist/generated/themes/HeroBanner.css.d.ts +1 -1
  204. package/dist/generated/themes/HeroBanner.css.js +1 -1
  205. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  206. package/dist/generated/themes/ImageGridTicker.css.d.ts +1 -1
  207. package/dist/generated/themes/ImageGridTicker.css.js +1 -1
  208. package/dist/generated/themes/ImageGridTicker.css.js.map +1 -1
  209. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  210. package/dist/generated/themes/ListItem.css.js +1 -1
  211. package/dist/generated/themes/ListItem.css.js.map +1 -1
  212. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  213. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  214. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  215. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  216. package/dist/generated/themes/MastheadItem.css.js +1 -1
  217. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  218. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  219. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  220. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  221. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  222. package/dist/generated/themes/MastheadShell.css.js +1 -1
  223. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  224. package/dist/generated/themes/MediaPlayer.css.d.ts +1 -1
  225. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  226. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  227. package/dist/generated/themes/Modal.css.d.ts +1 -1
  228. package/dist/generated/themes/Modal.css.js +1 -1
  229. package/dist/generated/themes/Modal.css.js.map +1 -1
  230. package/dist/generated/themes/PhoneNumberField.css.d.ts +1 -1
  231. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  232. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  233. package/dist/generated/themes/Search.css.d.ts +1 -1
  234. package/dist/generated/themes/Search.css.js +1 -1
  235. package/dist/generated/themes/Search.css.js.map +1 -1
  236. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
  237. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  238. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  239. package/dist/generated/themes/SelectBase.css.d.ts +1 -1
  240. package/dist/generated/themes/SelectBase.css.js +1 -1
  241. package/dist/generated/themes/SelectBase.css.js.map +1 -1
  242. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  243. package/dist/generated/themes/StepInput.css.js +1 -1
  244. package/dist/generated/themes/StepInput.css.js.map +1 -1
  245. package/dist/generated/themes/Switch.css.d.ts +1 -1
  246. package/dist/generated/themes/Switch.css.js +1 -1
  247. package/dist/generated/themes/Switch.css.js.map +1 -1
  248. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  249. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  250. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  251. package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
  252. package/dist/generated/themes/TabNavigation.css.js +1 -1
  253. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  254. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  255. package/dist/generated/themes/TableCellBase.css.js +1 -1
  256. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  257. package/dist/generated/themes/TagGroup.css.d.ts +1 -1
  258. package/dist/generated/themes/TagGroup.css.js +1 -1
  259. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  260. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  261. package/dist/generated/themes/TextArea.css.js +1 -1
  262. package/dist/generated/themes/TextArea.css.js.map +1 -1
  263. package/dist/generated/themes/TextField.css.d.ts +1 -1
  264. package/dist/generated/themes/TextField.css.js +1 -1
  265. package/dist/generated/themes/TextField.css.js.map +1 -1
  266. package/dist/generated/themes/Tooltip.css.d.ts +1 -1
  267. package/dist/generated/themes/Tooltip.css.js +1 -1
  268. package/dist/generated/themes/Tooltip.css.js.map +1 -1
  269. package/dist/generated/themes/Wizard.css.d.ts +1 -1
  270. package/dist/generated/themes/Wizard.css.js +1 -1
  271. package/dist/generated/themes/Wizard.css.js.map +1 -1
  272. package/dist/messagebundle.properties +0 -10
  273. package/dist/messagebundle_ar.properties +0 -6
  274. package/dist/messagebundle_bg.properties +0 -8
  275. package/dist/messagebundle_cs.properties +0 -8
  276. package/dist/messagebundle_da.properties +0 -8
  277. package/dist/messagebundle_de.properties +0 -8
  278. package/dist/messagebundle_el.properties +0 -8
  279. package/dist/messagebundle_en.properties +0 -8
  280. package/dist/messagebundle_es.properties +0 -8
  281. package/dist/messagebundle_et.properties +0 -8
  282. package/dist/messagebundle_fi.properties +0 -8
  283. package/dist/messagebundle_fr.properties +0 -8
  284. package/dist/messagebundle_hr.properties +0 -8
  285. package/dist/messagebundle_hu.properties +0 -8
  286. package/dist/messagebundle_it.properties +0 -8
  287. package/dist/messagebundle_ja.properties +0 -8
  288. package/dist/messagebundle_ko.properties +0 -8
  289. package/dist/messagebundle_lt.properties +0 -8
  290. package/dist/messagebundle_lv.properties +0 -8
  291. package/dist/messagebundle_nl.properties +0 -8
  292. package/dist/messagebundle_no.properties +0 -8
  293. package/dist/messagebundle_pl.properties +0 -8
  294. package/dist/messagebundle_pt.properties +0 -8
  295. package/dist/messagebundle_pt_PT.properties +0 -8
  296. package/dist/messagebundle_ro.properties +0 -8
  297. package/dist/messagebundle_ru.properties +0 -8
  298. package/dist/messagebundle_sk.properties +0 -8
  299. package/dist/messagebundle_sl.properties +0 -7
  300. package/dist/messagebundle_sr.properties +0 -8
  301. package/dist/messagebundle_sv.properties +0 -8
  302. package/dist/messagebundle_tr.properties +0 -8
  303. package/dist/messagebundle_uk.properties +8 -8
  304. package/dist/messagebundle_zh_CN.properties +0 -8
  305. package/dist/messagebundle_zh_TW.properties +0 -8
  306. package/dist/utils/searchBackdrop.d.ts +1 -0
  307. package/dist/utils/searchBackdrop.js +23 -0
  308. package/dist/utils/searchBackdrop.js.map +1 -0
  309. package/dist/vscode.html-custom-data.json +175 -4
  310. package/dist/web-types.json +368 -11
  311. package/package.json +1 -1
  312. package/src/Carousel.ts +51 -8
  313. package/src/CarouselTemplate.tsx +7 -7
  314. package/src/CountrySelectorTemplate.tsx +2 -2
  315. package/src/FilterMenu.ts +5 -1
  316. package/src/HeroBanner.ts +66 -0
  317. package/src/List.ts +8 -0
  318. package/src/ListItem.ts +5 -1
  319. package/src/ListTemplate.tsx +1 -1
  320. package/src/MastheadShell.ts +44 -0
  321. package/src/PhoneNumberField.ts +23 -22
  322. package/src/PhoneNumberFieldTemplate.tsx +128 -0
  323. package/src/Search.ts +21 -1
  324. package/src/SearchableListBase.ts +62 -7
  325. package/src/SearchableListBaseTemplate.tsx +1 -0
  326. package/src/SelectBase.ts +14 -21
  327. package/src/SelectBoxTemplate.tsx +1 -1
  328. package/src/StatusMessage.ts +4 -3
  329. package/src/TabNavigation.hbs +2 -0
  330. package/src/TabNavigation.ts +3 -2
  331. package/src/Tag.ts +7 -0
  332. package/src/TagGroup.ts +4 -2
  333. package/src/TextAreaTemplate.tsx +1 -1
  334. package/src/TextFieldTemplate.tsx +1 -1
  335. package/src/Upload.ts +7 -10
  336. package/src/UploadItem.ts +7 -9
  337. package/src/UploadItemTemplate.tsx +62 -0
  338. package/src/UploadTemplate.tsx +53 -0
  339. package/src/generated/i18n/i18n-defaults.ts +2 -2
  340. package/src/generated/templates/TabNavigationTemplate.lit.ts +2 -2
  341. package/src/generated/themes/AccordionItem.css.ts +1 -1
  342. package/src/generated/themes/AccordionSpotlight.css.ts +1 -1
  343. package/src/generated/themes/Avatar.css.ts +1 -1
  344. package/src/generated/themes/Carousel.css.ts +1 -1
  345. package/src/generated/themes/CountrySelector.css.ts +1 -1
  346. package/src/generated/themes/EventRibbon.css.ts +1 -1
  347. package/src/generated/themes/FilterMenu.css.ts +1 -1
  348. package/src/generated/themes/HeroBanner.css.ts +1 -1
  349. package/src/generated/themes/ImageGridTicker.css.ts +1 -1
  350. package/src/generated/themes/ListItem.css.ts +1 -1
  351. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  352. package/src/generated/themes/MastheadItem.css.ts +1 -1
  353. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  354. package/src/generated/themes/MastheadShell.css.ts +1 -1
  355. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  356. package/src/generated/themes/Modal.css.ts +1 -1
  357. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  358. package/src/generated/themes/Search.css.ts +1 -1
  359. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  360. package/src/generated/themes/SelectBase.css.ts +1 -1
  361. package/src/generated/themes/StepInput.css.ts +1 -1
  362. package/src/generated/themes/Switch.css.ts +1 -1
  363. package/src/generated/themes/TabInOverflow.css.ts +1 -1
  364. package/src/generated/themes/TabNavigation.css.ts +1 -1
  365. package/src/generated/themes/TableCellBase.css.ts +1 -1
  366. package/src/generated/themes/TagGroup.css.ts +1 -1
  367. package/src/generated/themes/TextArea.css.ts +1 -1
  368. package/src/generated/themes/TextField.css.ts +1 -1
  369. package/src/generated/themes/Tooltip.css.ts +1 -1
  370. package/src/generated/themes/Wizard.css.ts +1 -1
  371. package/src/i18n/messagebundle.properties +0 -10
  372. package/src/i18n/messagebundle_ar.properties +0 -6
  373. package/src/i18n/messagebundle_bg.properties +0 -8
  374. package/src/i18n/messagebundle_cs.properties +0 -8
  375. package/src/i18n/messagebundle_da.properties +0 -8
  376. package/src/i18n/messagebundle_de.properties +0 -8
  377. package/src/i18n/messagebundle_el.properties +0 -8
  378. package/src/i18n/messagebundle_en.properties +0 -8
  379. package/src/i18n/messagebundle_es.properties +0 -8
  380. package/src/i18n/messagebundle_et.properties +0 -8
  381. package/src/i18n/messagebundle_fi.properties +0 -8
  382. package/src/i18n/messagebundle_fr.properties +0 -8
  383. package/src/i18n/messagebundle_hr.properties +0 -8
  384. package/src/i18n/messagebundle_hu.properties +0 -8
  385. package/src/i18n/messagebundle_it.properties +0 -8
  386. package/src/i18n/messagebundle_ja.properties +0 -8
  387. package/src/i18n/messagebundle_ko.properties +0 -8
  388. package/src/i18n/messagebundle_lt.properties +0 -8
  389. package/src/i18n/messagebundle_lv.properties +0 -8
  390. package/src/i18n/messagebundle_nl.properties +0 -8
  391. package/src/i18n/messagebundle_no.properties +0 -8
  392. package/src/i18n/messagebundle_pl.properties +0 -8
  393. package/src/i18n/messagebundle_pt.properties +0 -8
  394. package/src/i18n/messagebundle_pt_PT.properties +0 -8
  395. package/src/i18n/messagebundle_ro.properties +0 -8
  396. package/src/i18n/messagebundle_ru.properties +0 -8
  397. package/src/i18n/messagebundle_sk.properties +0 -8
  398. package/src/i18n/messagebundle_sl.properties +0 -7
  399. package/src/i18n/messagebundle_sr.properties +0 -8
  400. package/src/i18n/messagebundle_sv.properties +0 -8
  401. package/src/i18n/messagebundle_tr.properties +0 -8
  402. package/src/i18n/messagebundle_uk.properties +8 -8
  403. package/src/i18n/messagebundle_zh_CN.properties +0 -8
  404. package/src/i18n/messagebundle_zh_TW.properties +0 -8
  405. package/src/themes/AccordionItem.css +1 -1
  406. package/src/themes/AccordionSpotlight.css +1 -1
  407. package/src/themes/Avatar.css +1 -1
  408. package/src/themes/Carousel.css +17 -10
  409. package/src/themes/CountrySelector.css +12 -2
  410. package/src/themes/EventRibbon.css +1 -1
  411. package/src/themes/FilterMenu.css +3 -2
  412. package/src/themes/HeroBanner.css +1 -1
  413. package/src/themes/ImageGridTicker.css +1 -1
  414. package/src/themes/ListItem.css +10 -2
  415. package/src/themes/MastheadCountrySelector.css +1 -1
  416. package/src/themes/MastheadItem.css +1 -1
  417. package/src/themes/MastheadProfileMenu.css +1 -1
  418. package/src/themes/MastheadShell.css +1 -1
  419. package/src/themes/MediaPlayer.css +10 -10
  420. package/src/themes/Modal.css +5 -3
  421. package/src/themes/PhoneNumberField.css +16 -6
  422. package/src/themes/Search.css +9 -9
  423. package/src/themes/SecondaryNavigationItem.css +1 -1
  424. package/src/themes/SelectBase.css +2 -2
  425. package/src/themes/StepInput.css +1 -1
  426. package/src/themes/Switch.css +2 -2
  427. package/src/themes/TabInOverflow.css +2 -2
  428. package/src/themes/TabNavigation.css +8 -7
  429. package/src/themes/TableCellBase.css +1 -1
  430. package/src/themes/TagGroup.css +1 -1
  431. package/src/themes/TextArea.css +1 -1
  432. package/src/themes/TextField.css +1 -1
  433. package/src/themes/Tooltip.css +5 -4
  434. package/src/themes/Wizard.css +1 -1
  435. package/src/utils/searchBackdrop.ts +23 -0
  436. package/dist/assets/messagebundle_ar-BUZ_gTvQ.js +0 -1
  437. package/dist/assets/messagebundle_bg-4ainC3nj.js +0 -1
  438. package/dist/assets/messagebundle_cs-CFtmLavu.js +0 -1
  439. package/dist/assets/messagebundle_da-BHL-qTPd.js +0 -1
  440. package/dist/assets/messagebundle_de-SMiMT-ST.js +0 -1
  441. package/dist/assets/messagebundle_el-ChAszJ4A.js +0 -1
  442. package/dist/assets/messagebundle_en-B0P3kkb6.js +0 -1
  443. package/dist/assets/messagebundle_es-LGmRBKqB.js +0 -1
  444. package/dist/assets/messagebundle_et-yYsmBPXN.js +0 -1
  445. package/dist/assets/messagebundle_fi-DeMNrHC9.js +0 -1
  446. package/dist/assets/messagebundle_fr-qEm5Eykz.js +0 -1
  447. package/dist/assets/messagebundle_hr-NBdiYo-T.js +0 -1
  448. package/dist/assets/messagebundle_hu-CBV3ISbF.js +0 -1
  449. package/dist/assets/messagebundle_it-BML2SC0W.js +0 -1
  450. package/dist/assets/messagebundle_ja-zyFfZHcj.js +0 -1
  451. package/dist/assets/messagebundle_ko-BCPaSqNp.js +0 -1
  452. package/dist/assets/messagebundle_lt-DB4b6FVx.js +0 -1
  453. package/dist/assets/messagebundle_lv-tAOia5tU.js +0 -1
  454. package/dist/assets/messagebundle_nl-BKUpVV-D.js +0 -1
  455. package/dist/assets/messagebundle_no-BZQfeWxT.js +0 -1
  456. package/dist/assets/messagebundle_pl-CsXeN1y6.js +0 -1
  457. package/dist/assets/messagebundle_pt-D9rap3lj.js +0 -1
  458. package/dist/assets/messagebundle_pt_PT-CQ5YAsmx.js +0 -1
  459. package/dist/assets/messagebundle_ro-BTNJ9YdP.js +0 -1
  460. package/dist/assets/messagebundle_ru-BTDmH8CB.js +0 -1
  461. package/dist/assets/messagebundle_sk-Lb4jvtpc.js +0 -1
  462. package/dist/assets/messagebundle_sl-BZi2bKSy.js +0 -1
  463. package/dist/assets/messagebundle_sr-B9TYgxO1.js +0 -1
  464. package/dist/assets/messagebundle_sv-DWlY9RTQ.js +0 -1
  465. package/dist/assets/messagebundle_tr-DOeCmUdx.js +0 -1
  466. package/dist/assets/messagebundle_uk-GmdhsMsP.js +0 -1
  467. package/dist/assets/messagebundle_zh_CN-CHwH3F3-.js +0 -1
  468. package/dist/assets/messagebundle_zh_TW-FO0BCkub.js +0 -1
  469. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.d.ts +0 -3
  470. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +0 -16
  471. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +0 -1
  472. package/dist/generated/templates/UploadItemTemplate.lit.d.ts +0 -3
  473. package/dist/generated/templates/UploadItemTemplate.lit.js +0 -12
  474. package/dist/generated/templates/UploadItemTemplate.lit.js.map +0 -1
  475. package/dist/generated/templates/UploadTemplate.lit.d.ts +0 -3
  476. package/dist/generated/templates/UploadTemplate.lit.js +0 -10
  477. package/dist/generated/templates/UploadTemplate.lit.js.map +0 -1
  478. package/src/PhoneNumberField.hbs +0 -119
  479. package/src/Upload.hbs +0 -21
  480. package/src/UploadItem.hbs +0 -32
  481. package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +0 -20
  482. package/src/generated/templates/UploadItemTemplate.lit.ts +0 -16
  483. package/src/generated/templates/UploadTemplate.lit.ts +0 -14
@@ -17,7 +17,7 @@ export default function CarouselTemplate(this: Carousel) {
17
17
 
18
18
  <UI5Carousel
19
19
  itemsPerPage={this.itemsPerPage}
20
- pageIndicatorType={this.pageIndicatorType}
20
+ pageIndicatorType={this.sanitizedPageIndicatorType}
21
21
  id="carousel"
22
22
  hideNavigationArrows
23
23
  arrowsPlacement={CarouselArrowsPlacement.Navigation}
@@ -70,11 +70,11 @@ function navigation(this: Carousel) {
70
70
  design={this.buttonDesign}
71
71
  tooltip={this.previousPageText}
72
72
  onClick={this._prevButtonClick}
73
- part="prev-button">
74
- </UDExButton>
73
+ part="prev-button"
74
+ ></UDExButton>
75
75
 
76
76
  {
77
- this._isBottomNavigation &&
77
+ this._isBottomDotNavigation &&
78
78
  <div className="udex-carousel__navigation-page-indicator-spacer" />
79
79
  }
80
80
 
@@ -87,12 +87,12 @@ function navigation(this: Carousel) {
87
87
  design={this.buttonDesign}
88
88
  tooltip={this.nextPageText}
89
89
  onClick={this._nextButtonClick}
90
- part="next-button">
91
- </UDExButton>
90
+ part="next-button"
91
+ ></UDExButton>
92
92
  </div>
93
93
 
94
94
  {
95
- this.autoplay && this._isBottomNavigation &&
95
+ this.autoplay && this._isBottomDotNavigation &&
96
96
  <div className="udex-carousel__navigation-spacer"></div>
97
97
  }
98
98
  </div>
@@ -3,10 +3,10 @@ import type UDExCountrySelector from "./CountrySelector.js";
3
3
  export default function CountrySelectorTemplate(this: UDExCountrySelector) {
4
4
  if (this.hideFlagImages) { return <></>; }
5
5
  return (
6
- <img
6
+ <span
7
7
  class="udex-text-field__image"
8
8
  aria-label={this.flagAriaLabel}
9
9
  style={`background-position-x: ${this.selectedCountryFlagX}; background-position-y: ${this.selectedCountryFlagY}`}>
10
- </img>
10
+ </span>
11
11
  );
12
12
  }
package/src/FilterMenu.ts CHANGED
@@ -6,6 +6,7 @@ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
6
6
  import {
7
7
  isTabPrevious, isTabNext, isEscape, isSpace, isEnter,
8
8
  } from "@ui5/webcomponents-base/dist/Keys.js";
9
+ import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
9
10
  import PopupAccessibleRole from "@ui5/webcomponents/dist/types/PopupAccessibleRole.js";
10
11
  import Popover from "@ui5/webcomponents/dist/Popover.js";
11
12
  import UDExBusyIndicator from "./BusyIndicator.js";
@@ -485,7 +486,10 @@ class UDExFilterMenu extends UDExSearchableListBase {
485
486
  if (this.modeSingleSelect && !this._search) {
486
487
  this.activeItem?.focus();
487
488
  }
488
- this._handleDropdownScroll();
489
+ this._expandCollapsedGroupsWithSelection();
490
+ renderFinished().then(() => {
491
+ this._handleDropdownScroll();
492
+ }).catch(() => {});
489
493
  this.fireDecoratorEvent("after-open");
490
494
  }
491
495
 
package/src/HeroBanner.ts CHANGED
@@ -8,6 +8,7 @@ import { isSpace } from "@ui5/webcomponents-base/dist/Keys.js";
8
8
  import Icon from "@ui5/webcomponents/dist/Icon.js";
9
9
  import HeroBannerTemplate from "./HeroBannerTemplate.js";
10
10
  import type UDExBreadcrumbs from "./Breadcrumbs.js";
11
+ import ensureSearchBackdropStyles from "./utils/searchBackdrop.js";
11
12
 
12
13
  // Styles
13
14
  import HeroBannerCss from "./generated/themes/HeroBanner.css.js";
@@ -155,6 +156,71 @@ class UDExHeroBanner extends UI5Element {
155
156
  this._calculateMediaButtonState();
156
157
  });
157
158
  }
159
+ this._handleSuggestionOpenedBound = this._showSearchBackdrop.bind(this);
160
+ this._handleSuggestionClosedBound = this._hideSearchBackdrop.bind(this);
161
+ this.addEventListener("suggestion-popover-opened", this._handleSuggestionOpenedBound);
162
+ this.addEventListener("suggestion-popover-closed", this._handleSuggestionClosedBound);
163
+ }
164
+
165
+ onExitDOM() {
166
+ this.removeEventListener("suggestion-popover-opened", this._handleSuggestionOpenedBound);
167
+ this.removeEventListener("suggestion-popover-closed", this._handleSuggestionClosedBound);
168
+ this._removeBackdropScrollListener();
169
+ this._bodyBackdropEl?.remove();
170
+ this._bodyBackdropEl = null;
171
+ }
172
+
173
+ _handleSuggestionOpenedBound!: () => void;
174
+ _handleSuggestionClosedBound!: () => void;
175
+ _handleBackdropScrollBound!: () => void;
176
+ _bodyBackdropEl: HTMLElement | null = null;
177
+
178
+ private _getBackdropEl(): HTMLElement {
179
+ if (!this._bodyBackdropEl) {
180
+ ensureSearchBackdropStyles(this.ownerDocument);
181
+ const el = this.ownerDocument.createElement("div");
182
+ el.className = "udex-search-backdrop";
183
+ el.addEventListener("click", () => this.handleBackdropClick());
184
+ this.ownerDocument.body.appendChild(el);
185
+ this._bodyBackdropEl = el;
186
+ }
187
+ return this._bodyBackdropEl;
188
+ }
189
+
190
+ private _updateBackdropTop(): void {
191
+ if (this._bodyBackdropEl) {
192
+ this._bodyBackdropEl.style.top = `${this.getBoundingClientRect().bottom}px`;
193
+ }
194
+ }
195
+
196
+ private _addBackdropScrollListener(): void {
197
+ this._handleBackdropScrollBound = this._updateBackdropTop.bind(this);
198
+ window.addEventListener("scroll", this._handleBackdropScrollBound, { passive: true });
199
+ }
200
+
201
+ private _removeBackdropScrollListener(): void {
202
+ if (this._handleBackdropScrollBound) {
203
+ window.removeEventListener("scroll", this._handleBackdropScrollBound);
204
+ }
205
+ }
206
+
207
+ private _showSearchBackdrop(): void {
208
+ const backdrop = this._getBackdropEl();
209
+ this._updateBackdropTop();
210
+ this._addBackdropScrollListener();
211
+ backdrop.style.display = "block";
212
+ }
213
+
214
+ private _hideSearchBackdrop(): void {
215
+ this._removeBackdropScrollListener();
216
+ if (this._bodyBackdropEl) {
217
+ this._bodyBackdropEl.style.display = "none";
218
+ }
219
+ }
220
+
221
+ handleBackdropClick(): void {
222
+ const search = this.querySelector<any>("[udex-search]");
223
+ search?.onClosePopover?.();
158
224
  }
159
225
 
160
226
  _toggleMediaButton(): void {
package/src/List.ts CHANGED
@@ -598,6 +598,14 @@ class UDExList extends UI5Element {
598
598
  return this._hasCollapsibleGroups ? "tree" : this.accessibleRole;
599
599
  }
600
600
 
601
+ /**
602
+ * Role for SingleContent mode. listbox/option is for selection widgets only;
603
+ * SingleContent is informational so "list"/"listitem" is the correct semantic.
604
+ */
605
+ get singleContentRole(): string {
606
+ return this.accessibleRole !== "listbox" ? this.accessibleRole : "list";
607
+ }
608
+
601
609
  /** aria-multiselectable exposed only for MultiSelect tree (collapsible groups). */
602
610
  get _listAriaMultiSelectable(): string | undefined {
603
611
  return (this._hasCollapsibleGroups && this.modeMultiSelect) ? "true" : undefined;
package/src/ListItem.ts CHANGED
@@ -372,7 +372,11 @@ class UDExListItem extends UDExListItemBase {
372
372
  if (this._useHostAriaRole) {
373
373
  return "presentation";
374
374
  }
375
- return this.accessibleRole.length > 0 ? this.accessibleRole : listItemRole;
375
+ if (this.accessibleRole.length > 0) {
376
+ return this.accessibleRole;
377
+ }
378
+ // SingleContent is informational (not a selection widget) — listitem is semantically correct
379
+ return this.modeSingleContent ? "listitem" : listItemRole;
376
380
  }
377
381
 
378
382
  get effectiveRole(): string {
@@ -34,7 +34,7 @@ export default function ListTemplate(this: UDExList) {
34
34
  <div
35
35
  id="udex-list"
36
36
  class="udex-list"
37
- role={this.accessibleRole as AriaRole}
37
+ role={this.singleContentRole as AriaRole}
38
38
  aria-label={this.singleContentAriaLabel}
39
39
  aria-busy={(this.ariaBusy ?? undefined) as "true" | "false" | undefined}>
40
40
  <slot></slot>
@@ -29,6 +29,7 @@ import { BreakpointUtils } from "./utils/Breakpoints.js";
29
29
  import AnalyticsName from "./types/AnalyticsName.js";
30
30
  import MastheadShellTemplate from "./generated/templates/MastheadShellTemplate.lit.js";
31
31
  import translate from "./utils/translate.js";
32
+ import ensureSearchBackdropStyles from "./utils/searchBackdrop.js";
32
33
 
33
34
  // Styles
34
35
  import MastheadShellCss from "./generated/themes/MastheadShell.css.js";
@@ -550,11 +551,16 @@ class UDExMastheadShell extends UI5Element {
550
551
  _rootHolder!: HTMLElement | null | undefined;
551
552
  _shouldHandleResize!: boolean;
552
553
  _isVisible!: boolean;
554
+ _handleSuggestionOpenedBound!: () => void;
555
+ _handleSuggestionClosedBound!: () => void;
556
+ _bodyBackdropEl: HTMLElement | null = null;
553
557
 
554
558
  constructor() {
555
559
  super();
556
560
  this._handleResizeBound = this._handleResize.bind(this);
557
561
  this._handleWindowResizeBound = this._handleWindowResize.bind(this);
562
+ this._handleSuggestionOpenedBound = this._showSearchBackdrop.bind(this);
563
+ this._handleSuggestionClosedBound = this._hideSearchBackdrop.bind(this);
558
564
  }
559
565
 
560
566
  onBeforeRendering() {
@@ -585,6 +591,8 @@ class UDExMastheadShell extends UI5Element {
585
591
  onEnterDOM(): void {
586
592
  ResizeHandler.register(this, this._handleResizeBound);
587
593
  window.addEventListener("resize", this._handleWindowResizeBound);
594
+ this.addEventListener("suggestion-popover-opened", this._handleSuggestionOpenedBound);
595
+ this.addEventListener("suggestion-popover-closed", this._handleSuggestionClosedBound);
588
596
  if (isDesktop()) {
589
597
  this.setAttribute("desktop", "");
590
598
  }
@@ -593,6 +601,10 @@ class UDExMastheadShell extends UI5Element {
593
601
  onExitDOM(): void {
594
602
  ResizeHandler.deregister(this, this._handleResizeBound);
595
603
  window.removeEventListener("resize", this._handleWindowResizeBound);
604
+ this.removeEventListener("suggestion-popover-opened", this._handleSuggestionOpenedBound);
605
+ this.removeEventListener("suggestion-popover-closed", this._handleSuggestionClosedBound);
606
+ this._bodyBackdropEl?.remove();
607
+ this._bodyBackdropEl = null;
596
608
  }
597
609
 
598
610
  _handleWindowResize(): void {
@@ -985,6 +997,38 @@ class UDExMastheadShell extends UI5Element {
985
997
  this.fireMastheadEvent("search-opened");
986
998
  }
987
999
 
1000
+ private _getBackdropEl(): HTMLElement {
1001
+ if (!this._bodyBackdropEl) {
1002
+ ensureSearchBackdropStyles(this.ownerDocument);
1003
+ const el = this.ownerDocument.createElement("div");
1004
+ el.className = "udex-search-backdrop";
1005
+ el.addEventListener("click", () => this.handleBackdropClick());
1006
+ this.ownerDocument.body.appendChild(el);
1007
+ this._bodyBackdropEl = el;
1008
+ }
1009
+ return this._bodyBackdropEl;
1010
+ }
1011
+
1012
+ private _showSearchBackdrop(): void {
1013
+ if (!this.showSearchByDefault && this.isMobileMenuMode) {
1014
+ return;
1015
+ }
1016
+ const backdrop = this._getBackdropEl();
1017
+ const top = this.getBoundingClientRect().bottom;
1018
+ backdrop.style.top = `${top}px`;
1019
+ backdrop.style.display = "block";
1020
+ }
1021
+
1022
+ private _hideSearchBackdrop(): void {
1023
+ if (this._bodyBackdropEl) {
1024
+ this._bodyBackdropEl.style.display = "none";
1025
+ }
1026
+ }
1027
+
1028
+ handleBackdropClick(): void {
1029
+ this._desktopSearch?.onClosePopover();
1030
+ }
1031
+
988
1032
  /**
989
1033
  * Open the mobile menu panel.
990
1034
  * @public
@@ -1,34 +1,32 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
4
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
5
5
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
6
6
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
7
7
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
8
  import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
9
9
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
10
10
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
11
+ import { isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
11
12
  import {
12
13
  COUNTRY_SELECT, READ_ONLY, VALUE_STATE_ERROR, VALUE_STATE_SUCCESS,
13
14
  } from "./generated/i18n/i18n-defaults.js";
14
15
  import type { Country } from "./data/CountryListISO3166.js";
15
16
  import { CountryListDB } from "./data/CountryListISO3166.js";
16
- import UDExDropdown from "./Dropdown.js";
17
- import UDExList from "./List.js";
18
- import UDExListItem from "./ListItem.js";
19
- import UDExButton from "./Button.js";
20
- import UDExStatusMessage from "./StatusMessage.js";
17
+ import type UDExDropdown from "./Dropdown.js";
18
+ import type UDExList from "./List.js";
19
+ import type UDExButton from "./Button.js";
21
20
  import translate from "./utils/translate.js";
22
21
 
23
22
  import "@ui5/webcomponents/dist/Icon.js";
24
23
  import "@ui5/webcomponents-icons/dist/slim-arrow-up.js";
25
24
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
26
25
 
27
- import PhoneNumberFieldTemplate from "./generated/templates/PhoneNumberFieldTemplate.lit.js";
26
+ import PhoneNumberFieldTemplate from "./PhoneNumberFieldTemplate.js";
28
27
 
29
28
  // Styles
30
29
  import PhoneNumberFieldCss from "./generated/themes/PhoneNumberField.css.js";
31
- import { isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
32
30
 
33
31
  export interface ExtendedCountriesListPhoneNumberData extends Country {
34
32
  selected?: boolean;
@@ -66,16 +64,9 @@ const digitsLimit: number = 15;
66
64
  */
67
65
  @customElement({
68
66
  tag: "udex-phone-number-field",
69
- renderer: litRender,
67
+ renderer: jsxRenderer,
70
68
  styles: PhoneNumberFieldCss,
71
69
  template: PhoneNumberFieldTemplate,
72
- dependencies: [
73
- UDExDropdown,
74
- UDExList,
75
- UDExListItem,
76
- UDExButton,
77
- UDExStatusMessage,
78
- ],
79
70
  })
80
71
  /**
81
72
  * Fired when the value of the component changes at each keystroke.
@@ -323,13 +314,22 @@ class UDExPhoneNumberField extends UI5Element {
323
314
  }
324
315
 
325
316
  onBeforeRendering() {
326
- this.applyPlaceholder();
327
-
328
317
  if (this.blockedCountryCodes?.length) {
329
318
  const blockedCountryCodesArray = this.blockedCountryCodes.split(",").map(code => code.trim().toUpperCase());
330
319
  this.countriesList = this.countriesList
331
320
  .filter(country => !blockedCountryCodesArray?.includes(country.iso.toUpperCase()));
332
321
  }
322
+
323
+ if (this.value) {
324
+ if (this.selectedIso && !this.value.startsWith(this.selectedPhonePrefix)) {
325
+ this.selectedIso = "";
326
+ }
327
+ if (!this.selectedIso) {
328
+ this.autoSelectCountry(this.value);
329
+ }
330
+ }
331
+
332
+ this.applyPlaceholder();
333
333
  }
334
334
 
335
335
  onAfterRendering() {
@@ -430,7 +430,8 @@ class UDExPhoneNumberField extends UI5Element {
430
430
  handleSelect(e: CustomEvent) {
431
431
  this._dropdown.open = false;
432
432
  this.selectedIso = e.detail.item.id;
433
- this.applyPhoneMask();
433
+ this.value = this.selectedPhonePrefix;
434
+ this.maxlength = this.calculateMaxLength(this.selectedPhonePrefix, this.selectedPlaceholder);
434
435
  this.getInputField().focus();
435
436
  this.fireDecoratorEvent("change");
436
437
  }
@@ -585,7 +586,7 @@ class UDExPhoneNumberField extends UI5Element {
585
586
  }
586
587
 
587
588
  get ariaInvalid(): string | null {
588
- return this.valueState === "Error" ? "true" : null;
589
+ return this.valueState === UDExPhoneNumberFieldValueState.Error ? "true" : null;
589
590
  }
590
591
 
591
592
  get isInputReadonly(): boolean {
@@ -619,11 +620,11 @@ class UDExPhoneNumberField extends UI5Element {
619
620
  }
620
621
 
621
622
  get hasValueState(): boolean {
622
- return this.valueState !== "Standard";
623
+ return this.valueState !== UDExPhoneNumberFieldValueState.Standard;
623
624
  }
624
625
 
625
626
  get valueStateText(): string | undefined {
626
- return this.valueState !== "Standard" ? this.valueStateTypeMappings[this.valueState] : undefined;
627
+ return this.valueState !== UDExPhoneNumberFieldValueState.Standard ? this.valueStateTypeMappings[this.valueState] : undefined;
627
628
  }
628
629
 
629
630
  get readOnlyStateText() {
@@ -0,0 +1,128 @@
1
+ import type UDExPhoneNumberField from "./PhoneNumberField.js";
2
+ import UDExDropdown from "./Dropdown.js";
3
+ import UDExList from "./List.js";
4
+ import UDExListItem from "./ListItem.js";
5
+ import UDExButton from "./Button.js";
6
+ import UDExStatusMessage from "./StatusMessage.js";
7
+ import UDExButtonDesign from "./types/ButtonDesign.js";
8
+ import UDExButtonSize from "./types/ButtonSize.js";
9
+
10
+ export default function PhoneNumberFieldTemplate(this: UDExPhoneNumberField) {
11
+ return (
12
+ <>
13
+ <div
14
+ class="udex-phone-number-field"
15
+ onui5-selection-change={this.handleSelect}>
16
+ {this.label && (
17
+ <label
18
+ id="udex-phone-number-field__label"
19
+ class="udex-phone-number-field__label"
20
+ htmlFor={`${this._id}-phone`}>
21
+ {this.label}
22
+ {this.required && " *"}
23
+ </label>
24
+ )}
25
+ <UDExDropdown
26
+ class="udex-phone-number-field__dropdown"
27
+ opener={`udex-${this._id}-phone-number__opener`}
28
+ id={`${this._id}_dropdown-menu`}
29
+ onui5-before-open={this.dropdownBeforeOpen}
30
+ onui5-before-close={this.dropdownBeforeClose}
31
+ horizontalAlign="Start"
32
+ height={this.height}>
33
+ <UDExList>
34
+ {this.countriesList.map(country => (
35
+ <UDExListItem
36
+ id={country.iso}
37
+ selected={country.selected}>
38
+ <div class="udex-phone-number-field__dropdown-list-item">
39
+ <div
40
+ class="udex-phone-number-field__flag"
41
+ style={{ backgroundPositionX: country.flagX, backgroundPositionY: country.flagY }}
42
+ ></div>
43
+ <span class="udex-phone-number-field__country-name">
44
+ {country.countryName}
45
+ {country.localName && ` (${country.localName})`}
46
+ {" "}{country.phonePrefix}
47
+ </span>
48
+ </div>
49
+ </UDExListItem>
50
+ ))}
51
+ </UDExList>
52
+ </UDExDropdown>
53
+ <div class="udex-phone-number-field__input-wrapper">
54
+ {!this.displayonly && (
55
+ <UDExButton
56
+ id={`udex-${this._id}-phone-number__opener`}
57
+ class="udex-phone-number-field__open-button"
58
+ role="combobox"
59
+ aria-haspopup="true"
60
+ design={UDExButtonDesign.Tertiary}
61
+ size={UDExButtonSize.Large}
62
+ endIcon={this.buttonIcon}
63
+ disabled={this.isButtonDisabled}
64
+ accessibleNameRef={`${this._id}-countrySelectorAriaLabel ${this.ariaDescribedById}`}
65
+ aria-label={this.countrySelectorAriaLabel}
66
+ aria-expanded={this._dropdownExpanded}
67
+ aria-controls={`${this._id}_dropdown-menu`}
68
+ onClick={this.openDropdown}>
69
+ <div class="udex-phone-number-field__open-button-text">
70
+ {this.selectedCountryName} {this.selectedPhonePrefix}
71
+ </div>
72
+ <div class="udex-phone-number-field__button-content">
73
+ <span
74
+ class="udex-phone-number-field__flag"
75
+ aria-label={this.selectedCountryName}
76
+ style={{ backgroundPositionX: this.selectedFlagBackgroundPosition.x, backgroundPositionY: this.selectedFlagBackgroundPosition.y }}
77
+ />
78
+ </div>
79
+ </UDExButton>
80
+ )}
81
+ <input
82
+ id={`${this._id}-phone`}
83
+ class="udex-phone-number-field__input"
84
+ type="tel"
85
+ value={this.value}
86
+ placeholder={this.phoneFormat}
87
+ maxLength={this.maxlength}
88
+ disabled={this.disabled}
89
+ readonly={this.isInputReadonly}
90
+ required={this.required}
91
+ autoComplete="tel"
92
+ aria-label={this.accessibleName}
93
+ aria-labelledby={this.accessibleName}
94
+ aria-required={this.required}
95
+ aria-readonly={this.isInputReadonly}
96
+ aria-disabled={this.disabled}
97
+ aria-invalid={(this.ariaInvalid ?? undefined) as "true" | undefined}
98
+ aria-describedby={this.ariaDescribedById}
99
+ onInput={this.handleInput}
100
+ onClick={this.handleClick}
101
+ onFocus={this.handleFocus}
102
+ onBlur={this.handleBlur}
103
+ onKeyDown={this.handleKeyDown}
104
+ onKeyUp={this.handleKeyUp}
105
+ tabIndex={this.inputTabIndex}
106
+ />
107
+ </div>
108
+ </div>
109
+ {this.supportingText && (
110
+ <UDExStatusMessage
111
+ disabled={this.disabled}
112
+ supportingText={this.supportingText}
113
+ valueState={this.valueState}>
114
+ </UDExStatusMessage>
115
+ )}
116
+ {this.supportingText && (
117
+ <span id={`${this._id}-supportingTextDesc`} class="hidden-text">{this.supportingText}</span>
118
+ )}
119
+ {this.hasValueState && (
120
+ <span id={`${this._id}-valueStateDesc`} class="hidden-text">{this.valueStateText}</span>
121
+ )}
122
+ {this.readonly && (
123
+ <span id={`${this._id}-stateReadOnlyDesc`} class="hidden-text">{this.readOnlyStateText}</span>
124
+ )}
125
+ <span id={`${this._id}-countrySelectorAriaLabel`} class="hidden-text">{this.countrySelectorAriaLabel}</span>
126
+ </>
127
+ );
128
+ }
package/src/Search.ts CHANGED
@@ -188,6 +188,18 @@ type UDExSearchKeydownEventDetail = {
188
188
  * @param {KeyboardEvent} e The keyboard event object
189
189
  */
190
190
  @event("search-keydown", { bubbles: true })
191
+ /**
192
+ * Fired when the suggestions popover opens.
193
+ *
194
+ * @public
195
+ */
196
+ @event("suggestion-popover-opened", { bubbles: true })
197
+ /**
198
+ * Fired when the suggestions popover closes.
199
+ *
200
+ * @public
201
+ */
202
+ @event("suggestion-popover-closed", { bubbles: true })
191
203
  class UDExSearch extends UI5Element {
192
204
  eventDetails!: {
193
205
  "submit-search-value": UDExSearchBaseEventDetail,
@@ -196,7 +208,8 @@ class UDExSearch extends UI5Element {
196
208
  "search-keydown": UDExSearchKeydownEventDetail,
197
209
  "dropdown-item-click": UDExSearchBaseEventDetail,
198
210
  "prefix-item-click": UDExSearchPrefixItemClickEventDetail,
199
-
211
+ "suggestion-popover-opened": void,
212
+ "suggestion-popover-closed": void,
200
213
  };
201
214
  _labelActiveClassName = "udex-search__label--active";
202
215
  _labelAnimationClassName = "udex-search__label--animation-enabled";
@@ -856,6 +869,7 @@ class UDExSearch extends UI5Element {
856
869
  retryUntilSuccessful(() => this.Suggestion, this.retryDelay, this.maxRetryAttempts, this.unsuccessfulRetryMessage)
857
870
  .then(() => {
858
871
  this.Suggestion!.open();
872
+ this.fireDecoratorEvent("suggestion-popover-opened");
859
873
  })
860
874
  .catch(error => {
861
875
  console.warn(error.message);
@@ -863,6 +877,7 @@ class UDExSearch extends UI5Element {
863
877
  } else {
864
878
  this.open = true;
865
879
  this.Suggestion.open();
880
+ this.fireDecoratorEvent("suggestion-popover-opened");
866
881
  }
867
882
  this.handleAriaExpanded();
868
883
  }
@@ -873,6 +888,7 @@ class UDExSearch extends UI5Element {
873
888
  this.Suggestion!.close();
874
889
  this.handleAriaExpanded();
875
890
  this.open = false;
891
+ this.fireDecoratorEvent("suggestion-popover-closed");
876
892
  }
877
893
  }
878
894
 
@@ -951,6 +967,9 @@ class UDExSearch extends UI5Element {
951
967
 
952
968
  if (mutation.attributeName === "open" && newValue !== oldValue && !ingoreOpenState) {
953
969
  this.open = popover?.open || false;
970
+ if (!popover?.open) {
971
+ this.fireDecoratorEvent("suggestion-popover-closed");
972
+ }
954
973
  }
955
974
  });
956
975
  });
@@ -1053,6 +1072,7 @@ class UDExSearch extends UI5Element {
1053
1072
  if (isEscape(e)) {
1054
1073
  if (this.open) {
1055
1074
  this.Suggestion?.onEscape(e);
1075
+ this.fireDecoratorEvent("suggestion-popover-closed");
1056
1076
  }
1057
1077
  }
1058
1078
  }