@sapudex/web-components 2.54.0 → 2.56.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 (415) hide show
  1. package/cypress/specs/Breadcrumbs.cy.tsx +3 -1
  2. package/cypress/specs/FilterMenu.cy.tsx +34 -2
  3. package/cypress/specs/Footer.cy.tsx +59 -0
  4. package/cypress/specs/HeroBanner.cy.tsx +35 -1
  5. package/cypress/specs/List.cy.tsx +63 -1
  6. package/cypress/specs/ListItem.cy.tsx +44 -0
  7. package/cypress/specs/MastheadShell.cy.tsx +39 -0
  8. package/cypress/specs/MediaPlayer.cy.tsx +58 -0
  9. package/cypress/specs/PhoneNumberField.cy.tsx +29 -1
  10. package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +2 -2
  11. package/cypress/specs/SelectBox.cy.tsx +173 -0
  12. package/dist/BreadcrumbsTemplate.js +1 -1
  13. package/dist/BreadcrumbsTemplate.js.map +1 -1
  14. package/dist/CountrySelectorTemplate.js +1 -1
  15. package/dist/CountrySelectorTemplate.js.map +1 -1
  16. package/dist/FilterMenu.d.ts +1 -1
  17. package/dist/FilterMenu.js +11 -7
  18. package/dist/FilterMenu.js.map +1 -1
  19. package/dist/Footer.d.ts +20 -1
  20. package/dist/Footer.js +40 -3
  21. package/dist/Footer.js.map +1 -1
  22. package/dist/FooterTemplate.js +7 -2
  23. package/dist/FooterTemplate.js.map +1 -1
  24. package/dist/HeroBanner.d.ts +12 -0
  25. package/dist/HeroBanner.js +54 -0
  26. package/dist/HeroBanner.js.map +1 -1
  27. package/dist/List.d.ts +5 -0
  28. package/dist/List.js +13 -6
  29. package/dist/List.js.map +1 -1
  30. package/dist/ListGroupHeader.js +12 -5
  31. package/dist/ListGroupHeader.js.map +1 -1
  32. package/dist/ListGroupHeaderBase.d.ts +1 -1
  33. package/dist/ListGroupHeaderBase.js +2 -2
  34. package/dist/ListGroupHeaderBase.js.map +1 -1
  35. package/dist/ListGroupHeaderTemplate.d.ts +2 -0
  36. package/dist/ListGroupHeaderTemplate.js +33 -0
  37. package/dist/ListGroupHeaderTemplate.js.map +1 -0
  38. package/dist/ListItem.d.ts +1 -1
  39. package/dist/ListItem.js +9 -4
  40. package/dist/ListItem.js.map +1 -1
  41. package/dist/ListItemBase.d.ts +1 -0
  42. package/dist/ListItemBase.js +8 -4
  43. package/dist/ListItemBase.js.map +1 -1
  44. package/dist/ListItemTemplate.d.ts +2 -0
  45. package/dist/ListItemTemplate.js +18 -0
  46. package/dist/ListItemTemplate.js.map +1 -0
  47. package/dist/ListSelectAll.js +4 -5
  48. package/dist/ListSelectAll.js.map +1 -1
  49. package/dist/ListSelectAllTemplate.d.ts +2 -0
  50. package/dist/ListSelectAllTemplate.js +6 -0
  51. package/dist/ListSelectAllTemplate.js.map +1 -0
  52. package/dist/ListTemplate.d.ts +2 -0
  53. package/dist/ListTemplate.js +11 -0
  54. package/dist/ListTemplate.js.map +1 -0
  55. package/dist/MastheadShell.d.ts +7 -0
  56. package/dist/MastheadShell.js +38 -0
  57. package/dist/MastheadShell.js.map +1 -1
  58. package/dist/MediaPlayer.js +6 -0
  59. package/dist/MediaPlayer.js.map +1 -1
  60. package/dist/PhoneNumberField.d.ts +3 -3
  61. package/dist/PhoneNumberField.js +18 -21
  62. package/dist/PhoneNumberField.js.map +1 -1
  63. package/dist/PhoneNumberFieldTemplate.d.ts +2 -0
  64. package/dist/PhoneNumberFieldTemplate.js +12 -0
  65. package/dist/PhoneNumberFieldTemplate.js.map +1 -0
  66. package/dist/Search.d.ts +2 -0
  67. package/dist/Search.js +21 -0
  68. package/dist/Search.js.map +1 -1
  69. package/dist/SearchableListBase.d.ts +4 -0
  70. package/dist/SearchableListBase.js +66 -6
  71. package/dist/SearchableListBase.js.map +1 -1
  72. package/dist/SearchableListBaseTemplate.js +1 -1
  73. package/dist/SearchableListBaseTemplate.js.map +1 -1
  74. package/dist/SelectBase.js +14 -22
  75. package/dist/SelectBase.js.map +1 -1
  76. package/dist/SelectBox.js +31 -0
  77. package/dist/SelectBox.js.map +1 -1
  78. package/dist/SelectBoxTemplate.js +3 -2
  79. package/dist/SelectBoxTemplate.js.map +1 -1
  80. package/dist/StatusMessage.d.ts +2 -2
  81. package/dist/StatusMessage.js +1 -1
  82. package/dist/StatusMessage.js.map +1 -1
  83. package/dist/TextAreaTemplate.js +1 -1
  84. package/dist/TextAreaTemplate.js.map +1 -1
  85. package/dist/TextFieldTemplate.js +1 -1
  86. package/dist/TextFieldTemplate.js.map +1 -1
  87. package/dist/Upload.js +6 -9
  88. package/dist/Upload.js.map +1 -1
  89. package/dist/UploadItem.d.ts +2 -2
  90. package/dist/UploadItem.js +6 -9
  91. package/dist/UploadItem.js.map +1 -1
  92. package/dist/UploadItemTemplate.d.ts +2 -0
  93. package/dist/UploadItemTemplate.js +14 -0
  94. package/dist/UploadItemTemplate.js.map +1 -0
  95. package/dist/UploadTemplate.d.ts +2 -0
  96. package/dist/UploadTemplate.js +11 -0
  97. package/dist/UploadTemplate.js.map +1 -0
  98. package/dist/assets/{InputSuggestions-CqOrRXxa.js → InputSuggestions-ChhTxYh4.js} +1 -1
  99. package/dist/assets/{ListItemStandardExpandableTextTemplate-DKUm4L2B.js → ListItemStandardExpandableTextTemplate-Bh1HxZfH.js} +1 -1
  100. package/dist/assets/{bundle-C7Yft7IG.css → bundle-CdO3MnjQ.css} +1 -1
  101. package/dist/assets/{bundle.esm-CI60uvdr.js → bundle.esm-DCX_ohoZ.js} +277 -265
  102. package/dist/assets/messagebundle_en-B0P3kkb6.js +1 -0
  103. package/dist/assets/messagebundle_it-BML2SC0W.js +1 -0
  104. package/dist/assets/messagebundle_ja-zyFfZHcj.js +1 -0
  105. package/dist/assets/messagebundle_ko-BCPaSqNp.js +1 -0
  106. package/dist/assets/messagebundle_lt-DB4b6FVx.js +1 -0
  107. package/dist/assets/messagebundle_lv-tAOia5tU.js +1 -0
  108. package/dist/assets/messagebundle_uk-CCv57GhV.js +1 -0
  109. package/dist/css/themes/AccordionItem.css +1 -1
  110. package/dist/css/themes/AccordionSpotlight.css +1 -1
  111. package/dist/css/themes/Avatar.css +1 -1
  112. package/dist/css/themes/Breadcrumbs.css +1 -1
  113. package/dist/css/themes/BreadcrumbsPopover.css +1 -1
  114. package/dist/css/themes/CountrySelector.css +1 -1
  115. package/dist/css/themes/EventRibbon.css +1 -1
  116. package/dist/css/themes/FilterMenu.css +1 -1
  117. package/dist/css/themes/Footer.css +1 -1
  118. package/dist/css/themes/HeroBanner.css +1 -1
  119. package/dist/css/themes/ImageGridTicker.css +1 -1
  120. package/dist/css/themes/Link.css +1 -1
  121. package/dist/css/themes/ListGroupHeader.css +1 -1
  122. package/dist/css/themes/ListItem.css +1 -1
  123. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  124. package/dist/css/themes/MastheadItem.css +1 -1
  125. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  126. package/dist/css/themes/MastheadShell.css +1 -1
  127. package/dist/css/themes/MediaPlayer.css +1 -1
  128. package/dist/css/themes/Modal.css +1 -1
  129. package/dist/css/themes/PhoneNumberField.css +1 -1
  130. package/dist/css/themes/Search.css +1 -1
  131. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  132. package/dist/css/themes/SelectBase.css +1 -1
  133. package/dist/css/themes/StepInput.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/Wizard.css +1 -1
  141. package/dist/custom-elements-internal.json +1191 -82
  142. package/dist/custom-elements.json +818 -127
  143. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  149. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  150. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  151. package/dist/generated/i18n/i18n-defaults.js +2 -1
  152. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  153. package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
  154. package/dist/generated/themes/AccordionItem.css.js +1 -1
  155. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  156. package/dist/generated/themes/AccordionSpotlight.css.d.ts +1 -1
  157. package/dist/generated/themes/AccordionSpotlight.css.js +1 -1
  158. package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -1
  159. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  160. package/dist/generated/themes/Avatar.css.js +1 -1
  161. package/dist/generated/themes/Avatar.css.js.map +1 -1
  162. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  163. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  164. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  165. package/dist/generated/themes/BreadcrumbsPopover.css.d.ts +1 -1
  166. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  167. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  168. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  169. package/dist/generated/themes/CountrySelector.css.js +1 -1
  170. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  171. package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
  172. package/dist/generated/themes/EventRibbon.css.js +1 -1
  173. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  174. package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
  175. package/dist/generated/themes/FilterMenu.css.js +1 -1
  176. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  177. package/dist/generated/themes/Footer.css.d.ts +1 -1
  178. package/dist/generated/themes/Footer.css.js +1 -1
  179. package/dist/generated/themes/Footer.css.js.map +1 -1
  180. package/dist/generated/themes/HeroBanner.css.d.ts +1 -1
  181. package/dist/generated/themes/HeroBanner.css.js +1 -1
  182. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  183. package/dist/generated/themes/ImageGridTicker.css.d.ts +1 -1
  184. package/dist/generated/themes/ImageGridTicker.css.js +1 -1
  185. package/dist/generated/themes/ImageGridTicker.css.js.map +1 -1
  186. package/dist/generated/themes/Link.css.d.ts +1 -1
  187. package/dist/generated/themes/Link.css.js +1 -1
  188. package/dist/generated/themes/Link.css.js.map +1 -1
  189. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  190. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  191. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  192. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  193. package/dist/generated/themes/ListItem.css.js +1 -1
  194. package/dist/generated/themes/ListItem.css.js.map +1 -1
  195. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  196. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  197. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  198. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  199. package/dist/generated/themes/MastheadItem.css.js +1 -1
  200. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  201. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  202. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  203. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  204. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  205. package/dist/generated/themes/MastheadShell.css.js +1 -1
  206. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  207. package/dist/generated/themes/MediaPlayer.css.d.ts +1 -1
  208. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  209. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  210. package/dist/generated/themes/Modal.css.d.ts +1 -1
  211. package/dist/generated/themes/Modal.css.js +1 -1
  212. package/dist/generated/themes/Modal.css.js.map +1 -1
  213. package/dist/generated/themes/PhoneNumberField.css.d.ts +1 -1
  214. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  215. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  216. package/dist/generated/themes/Search.css.d.ts +1 -1
  217. package/dist/generated/themes/Search.css.js +1 -1
  218. package/dist/generated/themes/Search.css.js.map +1 -1
  219. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
  220. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  221. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  222. package/dist/generated/themes/SelectBase.css.d.ts +1 -1
  223. package/dist/generated/themes/SelectBase.css.js +1 -1
  224. package/dist/generated/themes/SelectBase.css.js.map +1 -1
  225. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  226. package/dist/generated/themes/StepInput.css.js +1 -1
  227. package/dist/generated/themes/StepInput.css.js.map +1 -1
  228. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  229. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  230. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  231. package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
  232. package/dist/generated/themes/TabNavigation.css.js +1 -1
  233. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  234. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  235. package/dist/generated/themes/TableCellBase.css.js +1 -1
  236. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  237. package/dist/generated/themes/TagGroup.css.d.ts +1 -1
  238. package/dist/generated/themes/TagGroup.css.js +1 -1
  239. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  240. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  241. package/dist/generated/themes/TextArea.css.js +1 -1
  242. package/dist/generated/themes/TextArea.css.js.map +1 -1
  243. package/dist/generated/themes/TextField.css.d.ts +1 -1
  244. package/dist/generated/themes/TextField.css.js +1 -1
  245. package/dist/generated/themes/TextField.css.js.map +1 -1
  246. package/dist/generated/themes/Wizard.css.d.ts +1 -1
  247. package/dist/generated/themes/Wizard.css.js +1 -1
  248. package/dist/generated/themes/Wizard.css.js.map +1 -1
  249. package/dist/messagebundle.properties +1 -0
  250. package/dist/messagebundle_en.properties +1 -0
  251. package/dist/messagebundle_it.properties +123 -0
  252. package/dist/messagebundle_ja.properties +127 -1
  253. package/dist/messagebundle_ko.properties +126 -0
  254. package/dist/messagebundle_lt.properties +126 -0
  255. package/dist/messagebundle_lv.properties +9 -0
  256. package/dist/messagebundle_uk.properties +8 -0
  257. package/dist/types/FooterAskJoulePosition.d.ts +5 -0
  258. package/dist/types/FooterAskJoulePosition.js +7 -0
  259. package/dist/types/FooterAskJoulePosition.js.map +1 -0
  260. package/dist/utils/searchBackdrop.d.ts +1 -0
  261. package/dist/utils/searchBackdrop.js +23 -0
  262. package/dist/utils/searchBackdrop.js.map +1 -0
  263. package/dist/vscode.html-custom-data.json +176 -3
  264. package/dist/web-types.json +396 -8
  265. package/package.json +1 -1
  266. package/src/BreadcrumbsTemplate.tsx +12 -10
  267. package/src/CountrySelectorTemplate.tsx +2 -2
  268. package/src/FilterMenu.ts +11 -7
  269. package/src/Footer.ts +41 -3
  270. package/src/FooterTemplate.tsx +28 -4
  271. package/src/HeroBanner.ts +66 -0
  272. package/src/List.ts +16 -8
  273. package/src/ListGroupHeader.ts +12 -5
  274. package/src/ListGroupHeaderBase.ts +3 -3
  275. package/src/ListGroupHeaderTemplate.tsx +228 -0
  276. package/src/ListItem.ts +10 -5
  277. package/src/ListItemBase.ts +9 -4
  278. package/src/ListItemTemplate.tsx +193 -0
  279. package/src/ListSelectAll.ts +4 -5
  280. package/src/ListSelectAllTemplate.tsx +38 -0
  281. package/src/ListTemplate.tsx +60 -0
  282. package/src/MastheadShell.ts +44 -0
  283. package/src/MediaPlayer.ts +6 -0
  284. package/src/PhoneNumberField.ts +23 -22
  285. package/src/PhoneNumberFieldTemplate.tsx +128 -0
  286. package/src/Search.ts +21 -1
  287. package/src/SearchableListBase.ts +62 -7
  288. package/src/SearchableListBaseTemplate.tsx +1 -0
  289. package/src/SelectBase.ts +14 -21
  290. package/src/SelectBox.ts +34 -0
  291. package/src/SelectBoxTemplate.tsx +3 -1
  292. package/src/StatusMessage.ts +4 -3
  293. package/src/TextAreaTemplate.tsx +1 -1
  294. package/src/TextFieldTemplate.tsx +1 -1
  295. package/src/Upload.ts +7 -10
  296. package/src/UploadItem.ts +7 -9
  297. package/src/UploadItemTemplate.tsx +62 -0
  298. package/src/UploadTemplate.tsx +53 -0
  299. package/src/generated/i18n/i18n-defaults.ts +2 -2
  300. package/src/generated/themes/AccordionItem.css.ts +1 -1
  301. package/src/generated/themes/AccordionSpotlight.css.ts +1 -1
  302. package/src/generated/themes/Avatar.css.ts +1 -1
  303. package/src/generated/themes/Breadcrumbs.css.ts +1 -1
  304. package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
  305. package/src/generated/themes/CountrySelector.css.ts +1 -1
  306. package/src/generated/themes/EventRibbon.css.ts +1 -1
  307. package/src/generated/themes/FilterMenu.css.ts +1 -1
  308. package/src/generated/themes/Footer.css.ts +1 -1
  309. package/src/generated/themes/HeroBanner.css.ts +1 -1
  310. package/src/generated/themes/ImageGridTicker.css.ts +1 -1
  311. package/src/generated/themes/Link.css.ts +1 -1
  312. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  313. package/src/generated/themes/ListItem.css.ts +1 -1
  314. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  315. package/src/generated/themes/MastheadItem.css.ts +1 -1
  316. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  317. package/src/generated/themes/MastheadShell.css.ts +1 -1
  318. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  319. package/src/generated/themes/Modal.css.ts +1 -1
  320. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  321. package/src/generated/themes/Search.css.ts +1 -1
  322. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  323. package/src/generated/themes/SelectBase.css.ts +1 -1
  324. package/src/generated/themes/StepInput.css.ts +1 -1
  325. package/src/generated/themes/TabInOverflow.css.ts +1 -1
  326. package/src/generated/themes/TabNavigation.css.ts +1 -1
  327. package/src/generated/themes/TableCellBase.css.ts +1 -1
  328. package/src/generated/themes/TagGroup.css.ts +1 -1
  329. package/src/generated/themes/TextArea.css.ts +1 -1
  330. package/src/generated/themes/TextField.css.ts +1 -1
  331. package/src/generated/themes/Wizard.css.ts +1 -1
  332. package/src/i18n/messagebundle.properties +1 -0
  333. package/src/i18n/messagebundle_en.properties +1 -0
  334. package/src/i18n/messagebundle_it.properties +123 -0
  335. package/src/i18n/messagebundle_ja.properties +127 -1
  336. package/src/i18n/messagebundle_ko.properties +126 -0
  337. package/src/i18n/messagebundle_lt.properties +126 -0
  338. package/src/i18n/messagebundle_lv.properties +9 -0
  339. package/src/i18n/messagebundle_uk.properties +8 -0
  340. package/src/themes/AccordionItem.css +1 -1
  341. package/src/themes/AccordionSpotlight.css +1 -1
  342. package/src/themes/Avatar.css +1 -1
  343. package/src/themes/Breadcrumbs.css +46 -5
  344. package/src/themes/BreadcrumbsPopover.css +65 -0
  345. package/src/themes/CountrySelector.css +12 -2
  346. package/src/themes/EventRibbon.css +1 -1
  347. package/src/themes/FilterMenu.css +3 -2
  348. package/src/themes/Footer.css +98 -1
  349. package/src/themes/HeroBanner.css +1 -1
  350. package/src/themes/ImageGridTicker.css +1 -1
  351. package/src/themes/Link.css +127 -8
  352. package/src/themes/ListGroupHeader.css +6 -3
  353. package/src/themes/ListItem.css +10 -2
  354. package/src/themes/MastheadCountrySelector.css +1 -1
  355. package/src/themes/MastheadItem.css +1 -1
  356. package/src/themes/MastheadProfileMenu.css +1 -1
  357. package/src/themes/MastheadShell.css +1 -1
  358. package/src/themes/MediaPlayer.css +10 -10
  359. package/src/themes/Modal.css +5 -3
  360. package/src/themes/PhoneNumberField.css +16 -6
  361. package/src/themes/Search.css +9 -9
  362. package/src/themes/SecondaryNavigationItem.css +1 -1
  363. package/src/themes/SelectBase.css +2 -2
  364. package/src/themes/StepInput.css +1 -1
  365. package/src/themes/TabInOverflow.css +2 -2
  366. package/src/themes/TabNavigation.css +7 -7
  367. package/src/themes/TableCellBase.css +1 -1
  368. package/src/themes/TagGroup.css +1 -1
  369. package/src/themes/TextArea.css +1 -1
  370. package/src/themes/TextField.css +1 -1
  371. package/src/themes/Wizard.css +1 -1
  372. package/src/types/FooterAskJoulePosition.ts +6 -0
  373. package/src/utils/searchBackdrop.ts +23 -0
  374. package/dist/assets/messagebundle_en-DoNTK1BE.js +0 -1
  375. package/dist/assets/messagebundle_it-BhrBdOd4.js +0 -1
  376. package/dist/assets/messagebundle_ja-5P5L7sQ1.js +0 -1
  377. package/dist/assets/messagebundle_ko-B9H5YQlC.js +0 -1
  378. package/dist/assets/messagebundle_lt-BJ5gr_LF.js +0 -1
  379. package/dist/assets/messagebundle_lv-D06tlATH.js +0 -1
  380. package/dist/assets/messagebundle_uk-GmdhsMsP.js +0 -1
  381. package/dist/generated/templates/ListGroupHeaderTemplate.lit.d.ts +0 -3
  382. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +0 -30
  383. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +0 -1
  384. package/dist/generated/templates/ListItemTemplate.lit.d.ts +0 -3
  385. package/dist/generated/templates/ListItemTemplate.lit.js +0 -49
  386. package/dist/generated/templates/ListItemTemplate.lit.js.map +0 -1
  387. package/dist/generated/templates/ListSelectAllTemplate.lit.d.ts +0 -3
  388. package/dist/generated/templates/ListSelectAllTemplate.lit.js +0 -7
  389. package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +0 -1
  390. package/dist/generated/templates/ListTemplate.lit.d.ts +0 -3
  391. package/dist/generated/templates/ListTemplate.lit.js +0 -11
  392. package/dist/generated/templates/ListTemplate.lit.js.map +0 -1
  393. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.d.ts +0 -3
  394. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +0 -16
  395. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +0 -1
  396. package/dist/generated/templates/UploadItemTemplate.lit.d.ts +0 -3
  397. package/dist/generated/templates/UploadItemTemplate.lit.js +0 -12
  398. package/dist/generated/templates/UploadItemTemplate.lit.js.map +0 -1
  399. package/dist/generated/templates/UploadTemplate.lit.d.ts +0 -3
  400. package/dist/generated/templates/UploadTemplate.lit.js +0 -10
  401. package/dist/generated/templates/UploadTemplate.lit.js.map +0 -1
  402. package/src/List.hbs +0 -38
  403. package/src/ListGroupHeader.hbs +0 -188
  404. package/src/ListItem.hbs +0 -166
  405. package/src/ListSelectAll.hbs +0 -31
  406. package/src/PhoneNumberField.hbs +0 -119
  407. package/src/Upload.hbs +0 -21
  408. package/src/UploadItem.hbs +0 -32
  409. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +0 -34
  410. package/src/generated/templates/ListItemTemplate.lit.ts +0 -53
  411. package/src/generated/templates/ListSelectAllTemplate.lit.ts +0 -11
  412. package/src/generated/templates/ListTemplate.lit.ts +0 -15
  413. package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +0 -20
  414. package/src/generated/templates/UploadItemTemplate.lit.ts +0 -16
  415. package/src/generated/templates/UploadTemplate.lit.ts +0 -14
@@ -165,7 +165,9 @@ describe("Breadcrumbs", () => {
165
165
  cy.get("#breadcrumbs").shadow()
166
166
  .find("[udex-link].udex-breadcrumbs__item--hidden")
167
167
  .each($link => {
168
- cy.wrap($link).parent("li").should("exist");
168
+ cy.wrap($link)
169
+ .parent("li")
170
+ .should("exist");
169
171
  });
170
172
  });
171
173
 
@@ -279,12 +279,12 @@ describe("Filter Menu component", () => {
279
279
  trigger().should("have.attr", "aria-expanded", "true");
280
280
  });
281
281
 
282
- it('popover exposes accessible-role="Dialog" when opened', () => {
282
+ it('popover exposes accessible-role="None" when opened', () => {
283
283
  trigger().click();
284
284
  trigger().should("have.attr", "aria-expanded", "true");
285
285
 
286
286
  cy.get("[udex-filter-menu]").shadow()
287
- .find("ui5-popover").should("have.attr", "accessible-role", "Dialog");
287
+ .find("ui5-popover").should("have.attr", "accessible-role", "None");
288
288
  });
289
289
 
290
290
  it("trigger aria-controls points at the popover id", () => {
@@ -822,6 +822,38 @@ describe("Filter Menu component", () => {
822
822
 
823
823
  cy.get("#next-focus").should("have.focus");
824
824
  });
825
+
826
+ it("pressing Escape on Result button closes dropdown", () => {
827
+ cy.mount(filterMenuSelectAll);
828
+ cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__trigger").as("triggerBtn");
829
+ cy.get("@triggerBtn").click();
830
+
831
+ cy.realPress("Tab");
832
+ cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__result-btn").shadow().find("button")
833
+ .should("have.focus");
834
+
835
+ cy.realPress("Escape");
836
+
837
+ cy.get("@triggerBtn").should("not.have.class", "udex-filter-menu__trigger-active");
838
+ });
839
+
840
+ it("pressing Escape on Reset button closes dropdown", () => {
841
+ cy.mount(filterMenuSelectAll);
842
+ cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__trigger").as("triggerBtn");
843
+ cy.get("@triggerBtn").click();
844
+
845
+ cy.realPress("Tab");
846
+ cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__result-btn").shadow().find("button")
847
+ .should("have.focus");
848
+
849
+ cy.realPress("Tab");
850
+ cy.get("[udex-filter-menu]").shadow().find(".udex-filter-menu__reset-btn").shadow().find("button")
851
+ .should("have.focus");
852
+
853
+ cy.realPress("Escape");
854
+
855
+ cy.get("@triggerBtn").should("not.have.class", "udex-filter-menu__trigger-active");
856
+ });
825
857
  });
826
858
 
827
859
  describe('Filter menu events tests',async () => {
@@ -1,6 +1,7 @@
1
1
  import { UDExFooter, UDExSocialMediaButton } from "../support/component-imports.js";
2
2
  import { quickLinks, trendingLinks, aboutLinks, siteInformationLinks, socialLinks } from "../fixtures/footer-links.js";
3
3
  import { setLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
4
+ import UDExFooterAskJoulePosition from "../../src/types/FooterAskJoulePosition.js";
4
5
 
5
6
  const taglineAlt = "SAP tagline alt";
6
7
  const chineseLogoUrl = "./stories/footer/chinese-logo.svg";
@@ -11,6 +12,7 @@ const chineseSecurityNetworkNumber = "Custom number";
11
12
  const chineseIcpNumber = "Custom ICP";
12
13
  const chineseIcpNumberLink = "https://custom-url.com";
13
14
  const url = 'http://test.com';
15
+ const askJouleLink = "#";
14
16
 
15
17
  const defaultFooter = <UDExFooter
16
18
  id="footer"
@@ -196,6 +198,63 @@ describe("Footer", () => {
196
198
  cy.get("#footer").shadow().find(".udex-footer__logo a").should("have.attr", "aria-label", "SAP Homepage")
197
199
  });
198
200
 
201
+ it("does not render Ask Joule block when askJouleLink is not set", () => {
202
+ cy.get("#footer").shadow().find(".udex-footer__ask-joule").should("not.exist");
203
+ });
204
+
205
+ it("renders Ask Joule block at start position by default", () => {
206
+ cy.mount(
207
+ <UDExFooter id="footer" ask-joule-link={askJouleLink} chatWithUsLink="#" contactUsLink="#">
208
+ </UDExFooter>
209
+ );
210
+ cy.get("#footer").shadow().find(".udex-footer__ask-joule").should("exist");
211
+ cy.get("#footer").shadow().find(".udex-footer__ask-joule-link").should("have.attr", "href", askJouleLink);
212
+ });
213
+
214
+ it("renders Ask Joule link text", () => {
215
+ cy.mount(<UDExFooter id="footer" ask-joule-link={askJouleLink}></UDExFooter>);
216
+ cy.get("#footer").shadow().find(".udex-footer__ask-joule-link").should("have.text", "Ask Joule");
217
+ });
218
+
219
+ it("renders Ask Joule at start before phone numbers", () => {
220
+ cy.mount(
221
+ <UDExFooter
222
+ id="footer"
223
+ ask-joule-link={askJouleLink}
224
+ ask-joule-position={UDExFooterAskJoulePosition.Start}
225
+ contactNumbersList='[{"country":"France","number":"400-619-0727"}]'>
226
+ </UDExFooter>
227
+ );
228
+ cy.get("#footer").shadow().find(".udex-footer__contact > *").first().should("have.class", "udex-footer__ask-joule");
229
+ });
230
+
231
+ it("renders Ask Joule at end after other contact items", () => {
232
+ cy.mount(
233
+ <UDExFooter
234
+ id="footer"
235
+ ask-joule-link={askJouleLink}
236
+ ask-joule-position={UDExFooterAskJoulePosition.End}
237
+ contactNumbersList='[{"country":"France","number":"400-619-0727"}]'>
238
+ </UDExFooter>
239
+ );
240
+ cy.get("#footer").shadow().find(".udex-footer__contact > *").last().should("have.class", "udex-footer__ask-joule");
241
+ });
242
+
243
+ it("emits \"ui5-ask-joule-click\" when clicking the Ask Joule link", () => {
244
+ const askJouleClickHandler = cy.stub().as("askJouleClickHandler");
245
+ cy.mount(
246
+ <UDExFooter id="footer" ask-joule-link={askJouleLink}>
247
+ </UDExFooter>
248
+ );
249
+ cy.get("#footer").then($footer =>
250
+ $footer[0].addEventListener("ask-joule-click", askJouleClickHandler)
251
+ ).shadow().find(".udex-footer__ask-joule-link").then($link => {
252
+ $link[0].removeAttribute("href");
253
+ }).click();
254
+
255
+ cy.get("@askJouleClickHandler").should("have.been.called");
256
+ });
257
+
199
258
  it("emits \"ui5-logo-click\" when clicking on logo", () => {
200
259
  const logoClickHandler = cy.stub().as("logoClickHandler")
201
260
  cy.get("#footer").then($footer =>
@@ -1,5 +1,7 @@
1
- import {UDExHeroBanner, UDExButton, UDExBreadcrumbs, UDExBreadcrumbsItem} from "../support/component-imports.js";
1
+ import {UDExHeroBanner, UDExButton, UDExBreadcrumbs, UDExBreadcrumbsItem, UDExSearch} from "../support/component-imports.js";
2
2
  import UDExButtonDesign from "../../src/types/ButtonDesign.js";
3
+ // The SearchSuggestionsPopover feature must be imported so the backdrop events are enabled.
4
+ import "../../src/features/SearchSuggestionsPopover.js";
3
5
 
4
6
  const primaryContentHeader = "Grow your business through enterprise";
5
7
  const secondaryContentHeader = "Entertain an idea";
@@ -172,3 +174,35 @@ describe("Hero Banner component", () => {
172
174
  });
173
175
  });
174
176
  });
177
+
178
+ const BACKDROP_SUGGESTION_LIST = JSON.stringify({
179
+ suggested: ["SAP HANA", "SAP BTP"],
180
+ recommended: ["What is SAP HANA"],
181
+ });
182
+
183
+ const heroBannerWithSearch = (
184
+ <UDExHeroBanner id="heroBannerSearchBackdrop">
185
+ <div slot="content">
186
+ <UDExSearch show-suggested-popover open-suggestion-popup />
187
+ </div>
188
+ </UDExHeroBanner>
189
+ );
190
+
191
+ describe("HeroBanner — search backdrop", () => {
192
+ beforeEach(() => {
193
+ cy.mount(heroBannerWithSearch);
194
+ cy.get("[udex-search]").invoke("attr", "suggestion-list", BACKDROP_SUGGESTION_LIST);
195
+ });
196
+
197
+ it("backdrop is rendered after search suggestions are opened", () => {
198
+ cy.get(".udex-search-backdrop").should("be.visible");
199
+ });
200
+
201
+ it("backdrop is not visible after search dropdown is closed", () => {
202
+ cy.get(".udex-search-backdrop").should("be.visible");
203
+ cy.get("[udex-search]").invoke("removeAttr", "open-suggestion-popup");
204
+ cy.get("[udex-search]").shadow().find("#search-input").focus();
205
+ cy.realPress("Escape");
206
+ cy.get(".udex-search-backdrop").should("not.be.visible");
207
+ });
208
+ });
@@ -421,4 +421,66 @@ describe("List component - SingleContent accessible name", () => {
421
421
  );
422
422
  cy.get("[udex-list]").shadow().find(".udex-list").should("not.have.attr", "aria-label");
423
423
  });
424
- });
424
+ });
425
+
426
+ // SingleContent is purely informational (no selection), so the inner list container must
427
+ // expose the generic list/listitem semantics instead of the listbox/option selection-widget
428
+ // semantics. listbox/option compute the option's accessible name from its whole subtree, which
429
+ // pulls a nested udex-button (e.g. an info icon) label into the option name AND announces it
430
+ // again when focused — a double announcement.
431
+ describe("List component - SingleContent uses list/listitem role", () => {
432
+ const innerList = () =>
433
+ cy.get("[udex-list]").shadow().find(".udex-list");
434
+
435
+ it("SingleContent: inner list container has role=\"list\" by default", () => {
436
+ cy.mount(
437
+ <UDExList mode="SingleContent" accessible-name="Info list">
438
+ <UDExListItem id="sc-item">Cloud Solution</UDExListItem>
439
+ </UDExList>
440
+ );
441
+ innerList().should("have.attr", "role", "list");
442
+ });
443
+
444
+ it("SingleContent list item: shadow [part=item] has role=\"listitem\" by default", () => {
445
+ cy.mount(
446
+ <UDExList mode="SingleContent" accessible-name="Info list">
447
+ <UDExListItem id="sc-item">Cloud Solution</UDExListItem>
448
+ </UDExList>
449
+ );
450
+ cy.get("#sc-item").shadow().find("[part=item]").should("have.attr", "role", "listitem");
451
+ });
452
+
453
+
454
+ it("SingleContent: an explicit non-listbox accessible-role is respected (not forced to \"list\")", () => {
455
+ cy.mount(
456
+ <UDExList mode="SingleContent" accessible-role="menu" accessible-name="Info list">
457
+ <UDExListItem>Cloud Solution</UDExListItem>
458
+ </UDExList>
459
+ );
460
+ innerList().should("have.attr", "role", "menu");
461
+ });
462
+ });
463
+
464
+ // The SingleContent fix must not alter the selection modes. SingleSelect / MultiSelect /
465
+ // RadioGroup lists (without collapsible group headers, so no tree pattern) still render the
466
+ // listbox/option selection-widget semantics.
467
+ describe("List component - selection modes keep listbox/option role", () => {
468
+ const listboxFixture = (mode: string) => (
469
+ <UDExList id="selection-list" mode={mode as "SingleSelect" | "MultiSelect" | "RadioGroup"}>
470
+ <UDExListItem id="selection-item">Item 1</UDExListItem>
471
+ <UDExListItem>Item 2</UDExListItem>
472
+ </UDExList>
473
+ );
474
+
475
+ ["SingleSelect", "MultiSelect", "RadioGroup"].forEach(mode => {
476
+ it(`${mode}: inner #udex-list div keeps role="listbox"`, () => {
477
+ cy.mount(listboxFixture(mode));
478
+ cy.get("#selection-list").shadow().find("#udex-list").should("have.attr", "role", "listbox");
479
+ });
480
+
481
+ it(`${mode}: list item shadow [part=item] keeps role="option"`, () => {
482
+ cy.mount(listboxFixture(mode));
483
+ cy.get("#selection-item").shadow().find("[part=item]").should("have.attr", "role", "option");
484
+ });
485
+ });
486
+ });
@@ -511,4 +511,48 @@ describe("ListItem", () => {
511
511
  .and("not.have.attr", "aria-checked");
512
512
  });
513
513
  });
514
+
515
+ // SingleContent is informational, not a selection widget, so the item's shadow
516
+ // [part=item] renders role="listitem" (not "option").
517
+ describe("SingleContent role", () => {
518
+ it("SingleContent item: [part=item] has role=\"listitem\" by default", () => {
519
+ cy.mount(<UDExListItem
520
+ id="sc-role-item"
521
+ mode={UDExListMode.SingleContent}
522
+ label="Cloud Solution">
523
+ </UDExListItem>);
524
+
525
+ cy.get("#sc-role-item").shadow()
526
+ .find("[part=item]").should("have.attr", "role", "listitem");
527
+ });
528
+
529
+ // Regression: the selection modes keep role="option" (roleItem returns the "option"
530
+ // fallback for every mode except SingleContent).
531
+ [UDExListMode.SingleSelect, UDExListMode.MultiSelect, UDExListMode.RadioGroup].forEach(mode => {
532
+ it(`${mode} item: [part=item] keeps role="option" by default`, () => {
533
+ cy.mount(<UDExListItem
534
+ id="sel-role-item"
535
+ mode={mode}
536
+ label="JavaScript">
537
+ </UDExListItem>);
538
+
539
+ cy.get("#sel-role-item").shadow()
540
+ .find("[part=item]").should("have.attr", "role", "option");
541
+ });
542
+ });
543
+
544
+ // An explicit accessible-role always wins over the SingleContent default (getter
545
+ // returns accessibleRole before falling through to the mode-based default).
546
+ it("explicit accessible-role overrides the SingleContent \"listitem\" default", () => {
547
+ cy.mount(<UDExListItem
548
+ id="sc-role-override"
549
+ accessible-role="option"
550
+ mode={UDExListMode.SingleContent}
551
+ label="Cloud Solution">
552
+ </UDExListItem>);
553
+
554
+ cy.get("#sc-role-override").shadow()
555
+ .find("[part=item]").should("have.attr", "role", "option");
556
+ });
557
+ });
514
558
  });
@@ -8,6 +8,8 @@ import {
8
8
  UDExSearch,
9
9
  } from "../support/component-imports.js";
10
10
  import { profileLoggedInUser, profileLinks, subItemsExplore, subItemsProduct } from "../fixtures/masthead-shell.js";
11
+ // The SearchSuggestionsPopover feature must be imported so the backdrop events are enabled.
12
+ import "../../src/features/SearchSuggestionsPopover.js";
11
13
 
12
14
  const logoUrl = "https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg";
13
15
  const homeUrl = "https://sap.com";
@@ -724,3 +726,40 @@ describe("MastheadShell Search-Focused", () => {
724
726
  });
725
727
  });
726
728
  });
729
+
730
+ const BACKDROP_SUGGESTION_LIST = JSON.stringify({
731
+ suggested: ["SAP HANA", "SAP BTP"],
732
+ recommended: ["What is SAP HANA"],
733
+ });
734
+
735
+ const mastheadWithSuggestionsSearch = (
736
+ <UDExMastheadShell
737
+ id="mastheadBackdropTest"
738
+ show-search-by-default
739
+ logo-url={logoUrl}
740
+ site-label="Test"
741
+ homepage-aria-label="SAP Homepage"
742
+ close-button-accessible-name="Close Search">
743
+ <UDExSearch slot="search" show-suggested-popover open-suggestion-popup />
744
+ </UDExMastheadShell>
745
+ );
746
+
747
+ describe("MastheadShell — search backdrop", () => {
748
+ beforeEach(() => {
749
+ cy.viewport(1440, 900);
750
+ cy.mount(mastheadWithSuggestionsSearch);
751
+ cy.get("[udex-search]").invoke("attr", "suggestion-list", BACKDROP_SUGGESTION_LIST);
752
+ });
753
+
754
+ it("backdrop is rendered after search suggestions are opened", () => {
755
+ cy.get(".udex-search-backdrop").should("be.visible");
756
+ });
757
+
758
+ it("backdrop is not visible after search dropdown is closed", () => {
759
+ cy.get(".udex-search-backdrop").should("be.visible");
760
+ cy.get("[udex-search]").invoke("removeAttr", "open-suggestion-popup");
761
+ cy.get("[udex-search]").shadow().find("#search-input").focus();
762
+ cy.realPress("Escape");
763
+ cy.get(".udex-search-backdrop").should("not.be.visible");
764
+ });
765
+ });
@@ -6,6 +6,14 @@ import { UDExMediaPlayer } from "../support/component-imports.js";
6
6
  const BLANK_SOURCE = "about:blank";
7
7
  const BLANK_TYPE = "video/mp4";
8
8
 
9
+ // Minimal structural type for driving the embed (YouTube/Vimeo) code path
10
+ // directly, without a real iframe player. Extend as more embed handlers are
11
+ // exercised by tests.
12
+ type EmbedPlayer = HTMLElement & {
13
+ handleEmbedVideoPlaying: (embedEvent: CustomEvent) => void;
14
+ handleEmbedVideoEnded: () => void;
15
+ };
16
+
9
17
  const basicPlayer = (
10
18
  <UDExMediaPlayer
11
19
  id="test-media-player"
@@ -239,3 +247,53 @@ describe("MediaPlayer — custom plugin support", () => {
239
247
  });
240
248
  });
241
249
  });
250
+
251
+ describe("Embedded video – replay detection", () => {
252
+ // A YouTube source + poster forces onAfterRendering() to early-return
253
+ // (no video.js import) and renders only the poster, so we can drive the
254
+ // embed progress/ended handlers directly without a real iframe player.
255
+ const YT_SOURCE = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";
256
+
257
+ const embedPlayer = (
258
+ <UDExMediaPlayer
259
+ id="embed-media-player"
260
+ source={YT_SOURCE}
261
+ poster={BLANK_SOURCE}
262
+ />
263
+ );
264
+
265
+ it("re-fires video25/video50/video75 milestones on replay after the video ends", () => {
266
+ const video25 = cy.stub().as("video25");
267
+ const video50 = cy.stub().as("video50");
268
+ const video75 = cy.stub().as("video75");
269
+
270
+ cy.mount(embedPlayer);
271
+
272
+ // First play: a single progress update past 75% crosses all three
273
+ // milestones, so each event fires exactly once.
274
+ cy.get("#embed-media-player").then(($el) => {
275
+ const el = $el[0] as unknown as EmbedPlayer;
276
+ el.addEventListener("video25", video25);
277
+ el.addEventListener("video50", video50);
278
+ el.addEventListener("video75", video75);
279
+
280
+ el.handleEmbedVideoPlaying({ detail: { percentPlayed: 80 } } as CustomEvent);
281
+ });
282
+
283
+ cy.get("@video25").should("have.been.calledOnce");
284
+ cy.get("@video50").should("have.been.calledOnce");
285
+ cy.get("@video75").should("have.been.calledOnce");
286
+
287
+ // Ending the video resets the milestone flags so the events can re-fire.
288
+ // Replaying past 75% again must fire each milestone a second time.
289
+ cy.get("#embed-media-player").then(($el) => {
290
+ const el = $el[0] as unknown as EmbedPlayer;
291
+ el.handleEmbedVideoEnded();
292
+ el.handleEmbedVideoPlaying({ detail: { percentPlayed: 80 } } as CustomEvent);
293
+ });
294
+
295
+ cy.get("@video25").should("have.been.calledTwice");
296
+ cy.get("@video50").should("have.been.calledTwice");
297
+ cy.get("@video75").should("have.been.calledTwice");
298
+ });
299
+ });
@@ -116,6 +116,34 @@ describe("PhoneNumberField", () => {
116
116
  cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "UA")
117
117
  });
118
118
 
119
+ it("country flag is automatically updated when value is set programmatically", () => {
120
+ cy.mount(defaultPhoneNumberField)
121
+ cy.get("#default").then($el => {
122
+ ($el[0] as any).value = "+38012345678"
123
+ })
124
+ cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "UA")
125
+ cy.get("#default").shadow().find("input").should("have.attr", "placeholder", "+380 XXXXX XXXXX")
126
+ });
127
+
128
+ it("country flag is updated when value is set programmatically after manual country selection", () => {
129
+ cy.mount(defaultPhoneNumberField)
130
+ cy.get("#default").shadow().find(".udex-phone-number-field__input-wrapper").find(".udex-phone-number-field__open-button").click().realPress("d").realPress("Enter")
131
+ cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "DK")
132
+ cy.get("#default").then($el => {
133
+ ($el[0] as any).value = "+38012345678"
134
+ })
135
+ cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "UA")
136
+ });
137
+
138
+ it("changing country from dropdown updates flag and resets value to new prefix", () => {
139
+ cy.mount(defaultPhoneNumberField)
140
+ cy.get("#default").shadow().find("input").type("38012345")
141
+ cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "UA")
142
+ cy.get("#default").shadow().find(".udex-phone-number-field__input-wrapper").find(".udex-phone-number-field__open-button").click().realPress("d").realPress("Enter")
143
+ cy.get("#default").shadow().find("udex-list-item[selected]").should("have.attr", "id", "DK")
144
+ cy.get("#default").shadow().find("input").should("have.value", "+45")
145
+ });
146
+
119
147
  it("check that the maxlength and formatting is applied correctly", () => {
120
148
  cy.mount(defaultPhoneNumberField)
121
149
  cy.get("#default").shadow().find("input").type("+380123456789123456").should("have.value", "+380 12345 6789123")
@@ -192,4 +220,4 @@ describe("PhoneNumberField", () => {
192
220
  cy.get("#default").shadow().find("input").type("123-abc-456!@#").should("have.value", "+1 (234) 56")
193
221
  });
194
222
  });
195
- });
223
+ });
@@ -67,8 +67,8 @@ describe("Desktop", () => {
67
67
  });
68
68
 
69
69
  it("item component renders dropdown after clicking", () => {
70
- cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first().click()
71
- .shadow().find(".udex-secondary-navigation__dropdown").should("be.visible")
70
+ cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first().click();
71
+ cy.get("#secondary-nav").shadow().find("udex-secondary-navigation-item").first().shadow().find(".udex-secondary-navigation__dropdown").should("be.visible");
72
72
  });
73
73
 
74
74
  it("emits 'item-click' event and displays item info", () => {