@sapudex/web-components 2.9.0 → 2.11.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 (367) hide show
  1. package/bundle.esm.js +2 -0
  2. package/cypress/fixtures/footer-links.ts +32 -33
  3. package/cypress/specs/Accordion.cy.tsx +19 -0
  4. package/cypress/specs/AccordionItem.cy.tsx +9 -0
  5. package/cypress/specs/CountrySelector.cy.tsx +5 -2
  6. package/cypress/specs/FilterMenu.cy.tsx +884 -0
  7. package/cypress/specs/Footer.cy.tsx +54 -18
  8. package/cypress/specs/PromoTile.cy.tsx +124 -0
  9. package/cypress/specs/Quote.cy.tsx +65 -0
  10. package/cypress/specs/SocialMediaButton.cy.tsx +44 -0
  11. package/cypress/specs/Table.cy.tsx +8 -2
  12. package/cypress/specs/TextField.cy.tsx +11 -4
  13. package/cypress/support/component-imports.instrumented.ts +15 -1
  14. package/cypress/support/component-imports.src.ts +15 -1
  15. package/dist/Accordion.d.ts +15 -0
  16. package/dist/Accordion.js +19 -0
  17. package/dist/Accordion.js.map +1 -1
  18. package/dist/AccordionItem.d.ts +19 -0
  19. package/dist/AccordionItem.js +23 -0
  20. package/dist/AccordionItem.js.map +1 -1
  21. package/dist/AccordionItemTemplate.js +7 -2
  22. package/dist/AccordionItemTemplate.js.map +1 -1
  23. package/dist/AccordionTemplate.js +21 -1
  24. package/dist/AccordionTemplate.js.map +1 -1
  25. package/dist/Assets.d.ts +1 -0
  26. package/dist/Assets.js +1 -0
  27. package/dist/Assets.js.map +1 -1
  28. package/dist/CountrySelector.d.ts +2 -2
  29. package/dist/CountrySelector.js +6 -3
  30. package/dist/CountrySelector.js.map +1 -1
  31. package/dist/DatePicker.js +2 -2
  32. package/dist/DatePicker.js.map +1 -1
  33. package/dist/FilterMenu.d.ts +13 -2
  34. package/dist/FilterMenu.js +59 -13
  35. package/dist/FilterMenu.js.map +1 -1
  36. package/dist/Footer.d.ts +50 -6
  37. package/dist/Footer.js +44 -22
  38. package/dist/Footer.js.map +1 -1
  39. package/dist/MastheadItem.d.ts +12 -0
  40. package/dist/MastheadItem.js +6 -0
  41. package/dist/MastheadItem.js.map +1 -1
  42. package/dist/MastheadShell.d.ts +13 -3
  43. package/dist/MastheadShell.js +17 -4
  44. package/dist/MastheadShell.js.map +1 -1
  45. package/dist/PromoTile.d.ts +143 -0
  46. package/dist/PromoTile.js +198 -0
  47. package/dist/PromoTile.js.map +1 -0
  48. package/dist/PromoTileTemplate.d.ts +2 -0
  49. package/dist/PromoTileTemplate.js +22 -0
  50. package/dist/PromoTileTemplate.js.map +1 -0
  51. package/dist/Quote.d.ts +11 -0
  52. package/dist/Quote.js +18 -3
  53. package/dist/Quote.js.map +1 -1
  54. package/dist/Search.d.ts +3 -1
  55. package/dist/Search.js +1 -0
  56. package/dist/Search.js.map +1 -1
  57. package/dist/SelectBox.d.ts +0 -1
  58. package/dist/SelectBox.js +2 -2
  59. package/dist/SelectBox.js.map +1 -1
  60. package/dist/SocialMediaButton.d.ts +73 -0
  61. package/dist/SocialMediaButton.js +135 -0
  62. package/dist/SocialMediaButton.js.map +1 -0
  63. package/dist/SocialMediaButtonTemplate.d.ts +2 -0
  64. package/dist/SocialMediaButtonTemplate.js +6 -0
  65. package/dist/SocialMediaButtonTemplate.js.map +1 -0
  66. package/dist/StepInput.d.ts +2 -1
  67. package/dist/StepInput.js +6 -0
  68. package/dist/StepInput.js.map +1 -1
  69. package/dist/StepInputTemplate.js +1 -1
  70. package/dist/StepInputTemplate.js.map +1 -1
  71. package/dist/TableRow.d.ts +11 -0
  72. package/dist/TableRow.js +16 -0
  73. package/dist/TableRow.js.map +1 -1
  74. package/dist/TextArea.d.ts +3 -8
  75. package/dist/TextArea.js +12 -5
  76. package/dist/TextArea.js.map +1 -1
  77. package/dist/TextField.d.ts +20 -11
  78. package/dist/TextField.js +44 -31
  79. package/dist/TextField.js.map +1 -1
  80. package/dist/assets/{InputSuggestions-BmjyLzkP.js → InputSuggestions-9WQMOg4t.js} +1 -1
  81. package/dist/assets/{ListItemStandardExpandableTextTemplate-CDt3iORy.js → ListItemStandardExpandableTextTemplate-BQaMMo_n.js} +1 -1
  82. package/dist/assets/ar-CUjm9SSI.js +1 -0
  83. package/dist/assets/ar_EG-DQlFzN6x.js +1 -0
  84. package/dist/assets/ar_SA-lp21-ovF.js +1 -0
  85. package/dist/assets/bg-BMgSEqKu.js +1 -0
  86. package/dist/assets/{bundle.esm-Dz11sAJe.js → bundle.esm-ZNiP-jPI.js} +211 -209
  87. package/dist/assets/ca-BEgqToWu.js +1 -0
  88. package/dist/assets/cnr-IJYa9RjY.js +1 -0
  89. package/dist/assets/cs-DcM44PeB.js +1 -0
  90. package/dist/assets/da-D81rJc1N.js +1 -0
  91. package/dist/assets/de-eQRPkDbn.js +1 -0
  92. package/dist/assets/de_AT-Ag3CVI5m.js +1 -0
  93. package/dist/assets/de_CH-DgRYNg0p.js +1 -0
  94. package/dist/assets/el-W3XNt9Wl.js +1 -0
  95. package/dist/assets/el_CY-BfNIiYpU.js +1 -0
  96. package/dist/assets/en-CrBjXhTl.js +1 -0
  97. package/dist/assets/en_AU-Br7ytKW4.js +1 -0
  98. package/dist/assets/en_GB-DfnNoCgD.js +1 -0
  99. package/dist/assets/en_HK-Cyj9DPsW.js +1 -0
  100. package/dist/assets/en_IE-B5FpEUby.js +1 -0
  101. package/dist/assets/en_IN-C3XmKnWe.js +1 -0
  102. package/dist/assets/en_NZ-COJ5ycaE.js +1 -0
  103. package/dist/assets/en_PG-BB-Cmgcm.js +1 -0
  104. package/dist/assets/en_SG-Dfevg5da.js +1 -0
  105. package/dist/assets/en_ZA-BgOSNy0v.js +1 -0
  106. package/dist/assets/es-CRcVj7aR.js +1 -0
  107. package/dist/assets/es_AR-CFf6aWC5.js +1 -0
  108. package/dist/assets/es_BO-DNFEED1o.js +1 -0
  109. package/dist/assets/es_CL-DZhLyidG.js +1 -0
  110. package/dist/assets/es_CO-uWf-1tom.js +1 -0
  111. package/dist/assets/es_MX-C_wDRcT-.js +1 -0
  112. package/dist/assets/es_PE-QQsdF6EB.js +1 -0
  113. package/dist/assets/es_UY-CWhNSkyr.js +1 -0
  114. package/dist/assets/es_VE-hweLK9Ws.js +1 -0
  115. package/dist/assets/et-B3fco2O5.js +1 -0
  116. package/dist/assets/fa-oRguSKlL.js +1 -0
  117. package/dist/assets/fi-Daa_vlE5.js +1 -0
  118. package/dist/assets/fr-CANfYyyO.js +1 -0
  119. package/dist/assets/fr_BE-CCxD_K6m.js +1 -0
  120. package/dist/assets/fr_CA-BEtkRJZv.js +1 -0
  121. package/dist/assets/fr_CH-CrBmdh_n.js +1 -0
  122. package/dist/assets/fr_LU-CDcjZueC.js +1 -0
  123. package/dist/assets/he-CVUhin6m.js +1 -0
  124. package/dist/assets/hi-DF2PyuOw.js +1 -0
  125. package/dist/assets/hr-b6c4wXpD.js +1 -0
  126. package/dist/assets/hu-B7IWSU6b.js +1 -0
  127. package/dist/assets/id-GxIydI_w.js +1 -0
  128. package/dist/assets/it-DAjzvm2X.js +1 -0
  129. package/dist/assets/it_CH-BvNuHKQK.js +1 -0
  130. package/dist/assets/ja-DhVA6Wxm.js +1 -0
  131. package/dist/assets/kk-BSxmnq67.js +1 -0
  132. package/dist/assets/ko-ZT8Z04Uq.js +1 -0
  133. package/dist/assets/lt-BVWqkFr_.js +1 -0
  134. package/dist/assets/lv-DyXyW37Y.js +1 -0
  135. package/dist/assets/messagebundle_en-DwlTjyni.js +1 -0
  136. package/dist/assets/mk-ChbdOzZI.js +1 -0
  137. package/dist/assets/ms-H9bJ42GA.js +1 -0
  138. package/dist/assets/nb-Dgkq7ozi.js +1 -0
  139. package/dist/assets/nl-DZqLtAXS.js +1 -0
  140. package/dist/assets/nl_BE-Dx4AxOFo.js +1 -0
  141. package/dist/assets/pl-MzEgIfvm.js +1 -0
  142. package/dist/assets/pt-2N8dosOm.js +1 -0
  143. package/dist/assets/pt_PT-CIcj5FsJ.js +1 -0
  144. package/dist/assets/ro-CZHCJKTk.js +1 -0
  145. package/dist/assets/ru-BcU9rFqC.js +1 -0
  146. package/dist/assets/ru_UA-aH_wNrwj.js +1 -0
  147. package/dist/assets/sk-DYn5gXzA.js +1 -0
  148. package/dist/assets/sl-RYb_KlOx.js +1 -0
  149. package/dist/assets/sr-Bap_3nyz.js +1 -0
  150. package/dist/assets/sr_Latn-FYOU_tQB.js +1 -0
  151. package/dist/assets/sv-CeQXZ1qM.js +1 -0
  152. package/dist/assets/th-C5mRgAid.js +1 -0
  153. package/dist/assets/tr-vCU3KUkO.js +1 -0
  154. package/dist/assets/uk-CKvdHIrD.js +1 -0
  155. package/dist/assets/vi-0BxthtV1.js +1 -0
  156. package/dist/assets/zh_CN-BV9PXZ7J.js +1 -0
  157. package/dist/assets/zh_HK-kGfo3-wS.js +1 -0
  158. package/dist/assets/zh_SG-B8bEKxnm.js +1 -0
  159. package/dist/assets/zh_TW-BshO-JEe.js +1 -0
  160. package/dist/css/themes/AccordionItem.css +1 -1
  161. package/dist/css/themes/BreadcrumbsPopover.css +1 -1
  162. package/dist/css/themes/CountrySelector.css +1 -1
  163. package/dist/css/themes/DatePicker.css +1 -1
  164. package/dist/css/themes/Divider.css +1 -1
  165. package/dist/css/themes/Dropdown.css +1 -1
  166. package/dist/css/themes/FilterMenu.css +1 -1
  167. package/dist/css/themes/Footer.css +1 -1
  168. package/dist/css/themes/HeroBanner.css +1 -1
  169. package/dist/css/themes/Link.css +1 -1
  170. package/dist/css/themes/MastheadItem.css +1 -1
  171. package/dist/css/themes/MastheadMenu.css +1 -1
  172. package/dist/css/themes/PromoTile.css +1 -0
  173. package/dist/css/themes/Quote.css +1 -1
  174. package/dist/css/themes/RatingIndicator.css +1 -1
  175. package/dist/css/themes/SelectBox.css +1 -1
  176. package/dist/css/themes/Slider.css +1 -1
  177. package/dist/css/themes/SocialMediaButton.css +1 -0
  178. package/dist/css/themes/Tag.css +1 -1
  179. package/dist/css/themes/TextField.css +1 -1
  180. package/dist/custom-elements-internal.json +894 -232
  181. package/dist/custom-elements.json +858 -215
  182. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  183. package/dist/generated/i18n/i18n-defaults.d.ts +4 -2
  184. package/dist/generated/i18n/i18n-defaults.js +4 -2
  185. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  186. package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -2
  187. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  188. package/dist/generated/templates/DatePickerTemplate.lit.js +4 -5
  189. package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
  190. package/dist/generated/templates/FilterMenuTemplate.lit.js +2 -2
  191. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  192. package/dist/generated/templates/FooterTemplate.lit.js +33 -32
  193. package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
  194. package/dist/generated/templates/HeroBannerTemplate.lit.js +1 -1
  195. package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
  196. package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
  197. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  198. package/dist/generated/templates/MastheadShellTemplate.lit.js +1 -1
  199. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  200. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +1 -1
  201. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  202. package/dist/generated/templates/SelectBoxTemplate.lit.js +4 -4
  203. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  204. package/dist/generated/templates/TextFieldTemplate.lit.js +2 -2
  205. package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
  206. package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
  207. package/dist/generated/themes/AccordionItem.css.js +1 -1
  208. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  209. package/dist/generated/themes/BreadcrumbsPopover.css.d.ts +1 -1
  210. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  211. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  212. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  213. package/dist/generated/themes/CountrySelector.css.js +1 -1
  214. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  215. package/dist/generated/themes/DatePicker.css.d.ts +1 -1
  216. package/dist/generated/themes/DatePicker.css.js +1 -1
  217. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  218. package/dist/generated/themes/Divider.css.d.ts +1 -1
  219. package/dist/generated/themes/Divider.css.js +1 -1
  220. package/dist/generated/themes/Divider.css.js.map +1 -1
  221. package/dist/generated/themes/Dropdown.css.d.ts +1 -1
  222. package/dist/generated/themes/Dropdown.css.js +1 -1
  223. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  224. package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
  225. package/dist/generated/themes/FilterMenu.css.js +1 -1
  226. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  227. package/dist/generated/themes/Footer.css.d.ts +1 -1
  228. package/dist/generated/themes/Footer.css.js +1 -1
  229. package/dist/generated/themes/Footer.css.js.map +1 -1
  230. package/dist/generated/themes/HeroBanner.css.d.ts +1 -1
  231. package/dist/generated/themes/HeroBanner.css.js +1 -1
  232. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  233. package/dist/generated/themes/Link.css.d.ts +1 -1
  234. package/dist/generated/themes/Link.css.js +1 -1
  235. package/dist/generated/themes/Link.css.js.map +1 -1
  236. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  237. package/dist/generated/themes/MastheadItem.css.js +1 -1
  238. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  239. package/dist/generated/themes/MastheadMenu.css.d.ts +1 -1
  240. package/dist/generated/themes/MastheadMenu.css.js +1 -1
  241. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  242. package/dist/generated/themes/PromoTile.css.d.ts +2 -0
  243. package/dist/generated/themes/PromoTile.css.js +8 -0
  244. package/dist/generated/themes/PromoTile.css.js.map +1 -0
  245. package/dist/generated/themes/Quote.css.d.ts +1 -1
  246. package/dist/generated/themes/Quote.css.js +1 -1
  247. package/dist/generated/themes/Quote.css.js.map +1 -1
  248. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  249. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  250. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  251. package/dist/generated/themes/SelectBox.css.d.ts +1 -1
  252. package/dist/generated/themes/SelectBox.css.js +1 -1
  253. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  254. package/dist/generated/themes/Slider.css.d.ts +1 -1
  255. package/dist/generated/themes/Slider.css.js +1 -1
  256. package/dist/generated/themes/Slider.css.js.map +1 -1
  257. package/dist/generated/themes/SocialMediaButton.css.d.ts +2 -0
  258. package/dist/generated/themes/SocialMediaButton.css.js +8 -0
  259. package/dist/generated/themes/SocialMediaButton.css.js.map +1 -0
  260. package/dist/generated/themes/Tag.css.d.ts +1 -1
  261. package/dist/generated/themes/Tag.css.js +1 -1
  262. package/dist/generated/themes/Tag.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/messagebundle.properties +9 -3
  267. package/dist/messagebundle_en.properties +3 -1
  268. package/dist/types/PromoTile.d.ts +60 -0
  269. package/dist/types/PromoTile.js +63 -0
  270. package/dist/types/PromoTile.js.map +1 -0
  271. package/dist/types/SocialMediaButtonType.d.ts +9 -0
  272. package/dist/types/SocialMediaButtonType.js +11 -0
  273. package/dist/types/SocialMediaButtonType.js.map +1 -0
  274. package/dist/utils/debounce.d.ts +3 -1
  275. package/dist/utils/debounce.js +16 -4
  276. package/dist/utils/debounce.js.map +1 -1
  277. package/dist/vscode.html-custom-data.json +152 -1
  278. package/dist/web-types.json +341 -11
  279. package/package.json +2 -1
  280. package/src/Accordion.ts +19 -0
  281. package/src/AccordionItem.ts +28 -0
  282. package/src/AccordionItemTemplate.tsx +25 -10
  283. package/src/AccordionTemplate.tsx +22 -1
  284. package/src/Assets.ts +1 -0
  285. package/src/CountrySelector.hbs +3 -9
  286. package/src/CountrySelector.ts +7 -4
  287. package/src/DatePicker.hbs +17 -26
  288. package/src/DatePicker.ts +2 -2
  289. package/src/FilterMenu.hbs +33 -37
  290. package/src/FilterMenu.ts +69 -15
  291. package/src/Footer.hbs +39 -43
  292. package/src/Footer.ts +88 -14
  293. package/src/HeroBanner.hbs +0 -1
  294. package/src/MastheadItem.hbs +2 -2
  295. package/src/MastheadItem.ts +18 -0
  296. package/src/MastheadShell.hbs +3 -2
  297. package/src/MastheadShell.ts +28 -7
  298. package/src/PromoTile.ts +290 -0
  299. package/src/PromoTileTemplate.tsx +68 -0
  300. package/src/Quote.ts +17 -3
  301. package/src/Search.ts +1 -0
  302. package/src/SearchableListBase.hbs +1 -1
  303. package/src/SelectBox.hbs +11 -13
  304. package/src/SelectBox.ts +2 -2
  305. package/src/SocialMediaButton.ts +152 -0
  306. package/src/SocialMediaButtonTemplate.tsx +18 -0
  307. package/src/StepInput.ts +8 -1
  308. package/src/StepInputTemplate.tsx +1 -2
  309. package/src/TableRow.ts +27 -1
  310. package/src/TextArea.ts +14 -7
  311. package/src/TextField.hbs +5 -5
  312. package/src/TextField.ts +87 -66
  313. package/src/generated/i18n/i18n-defaults.ts +2 -2
  314. package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -2
  315. package/src/generated/templates/DatePickerTemplate.lit.ts +4 -5
  316. package/src/generated/templates/FilterMenuTemplate.lit.ts +2 -2
  317. package/src/generated/templates/FooterTemplate.lit.ts +33 -32
  318. package/src/generated/templates/HeroBannerTemplate.lit.ts +1 -1
  319. package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
  320. package/src/generated/templates/MastheadShellTemplate.lit.ts +1 -1
  321. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +1 -1
  322. package/src/generated/templates/SelectBoxTemplate.lit.ts +4 -4
  323. package/src/generated/templates/TextFieldTemplate.lit.ts +2 -2
  324. package/src/generated/themes/AccordionItem.css.ts +1 -1
  325. package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
  326. package/src/generated/themes/CountrySelector.css.ts +1 -1
  327. package/src/generated/themes/DatePicker.css.ts +1 -1
  328. package/src/generated/themes/Divider.css.ts +1 -1
  329. package/src/generated/themes/Dropdown.css.ts +1 -1
  330. package/src/generated/themes/FilterMenu.css.ts +1 -1
  331. package/src/generated/themes/Footer.css.ts +1 -1
  332. package/src/generated/themes/HeroBanner.css.ts +1 -1
  333. package/src/generated/themes/Link.css.ts +1 -1
  334. package/src/generated/themes/MastheadItem.css.ts +1 -1
  335. package/src/generated/themes/MastheadMenu.css.ts +1 -1
  336. package/src/generated/themes/PromoTile.css.ts +9 -0
  337. package/src/generated/themes/Quote.css.ts +1 -1
  338. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  339. package/src/generated/themes/SelectBox.css.ts +1 -1
  340. package/src/generated/themes/Slider.css.ts +1 -1
  341. package/src/generated/themes/SocialMediaButton.css.ts +9 -0
  342. package/src/generated/themes/Tag.css.ts +1 -1
  343. package/src/generated/themes/TextField.css.ts +1 -1
  344. package/src/i18n/messagebundle.properties +9 -3
  345. package/src/i18n/messagebundle_en.properties +3 -1
  346. package/src/themes/AccordionItem.css +61 -22
  347. package/src/themes/BreadcrumbsPopover.css +2 -1
  348. package/src/themes/CountrySelector.css +4 -0
  349. package/src/themes/DatePicker.css +0 -5
  350. package/src/themes/Divider.css +2 -1
  351. package/src/themes/Dropdown.css +1 -1
  352. package/src/themes/FilterMenu.css +2 -2
  353. package/src/themes/Footer.css +44 -25
  354. package/src/themes/HeroBanner.css +34 -32
  355. package/src/themes/Link.css +4 -1
  356. package/src/themes/MastheadItem.css +2 -1
  357. package/src/themes/MastheadMenu.css +4 -4
  358. package/src/themes/PromoTile.css +152 -0
  359. package/src/themes/Quote.css +21 -24
  360. package/src/themes/SelectBox.css +1 -1
  361. package/src/themes/SocialMediaButton.css +50 -0
  362. package/src/themes/Tag.css +18 -24
  363. package/src/themes/TextField.css +0 -15
  364. package/src/types/PromoTile.ts +61 -0
  365. package/src/types/SocialMediaButtonType.ts +10 -0
  366. package/src/utils/debounce.ts +19 -4
  367. package/dist/assets/messagebundle_en-CKeTZNW3.js +0 -1
package/src/Quote.ts CHANGED
@@ -20,6 +20,11 @@ export enum UDExMaskType {
20
20
  rectangle = "rectangle"
21
21
  }
22
22
 
23
+ export enum UDExImagePlacement {
24
+ left = "left",
25
+ right = "right"
26
+ }
27
+
23
28
  /**
24
29
  * @class
25
30
  *
@@ -82,7 +87,7 @@ class UDExQuote extends UI5Element {
82
87
  * @default "large"
83
88
  */
84
89
  @property()
85
- imageSize: `${UDExSizeType}` = "large";
90
+ imageSize: `${UDExSizeType}` = UDExSizeType.large;
86
91
 
87
92
  /**
88
93
  * Defines text size
@@ -91,7 +96,7 @@ class UDExQuote extends UI5Element {
91
96
  * @default "large"
92
97
  */
93
98
  @property()
94
- textSize: `${UDExSizeType}` = "large";
99
+ textSize: `${UDExSizeType}` = UDExSizeType.large;
95
100
 
96
101
  /**
97
102
  * Defines image mask
@@ -100,7 +105,16 @@ class UDExQuote extends UI5Element {
100
105
  * @default "avatar"
101
106
  */
102
107
  @property()
103
- mask: `${UDExMaskType}` = "avatar";
108
+ mask: `${UDExMaskType}` = UDExMaskType.avatar;
109
+
110
+ /**
111
+ * Defines image placement
112
+ *
113
+ * @public
114
+ * @default "left"
115
+ */
116
+ @property()
117
+ imagePlacement: `${UDExImagePlacement}` = UDExImagePlacement.left;
104
118
  }
105
119
 
106
120
  UDExQuote.define();
package/src/Search.ts CHANGED
@@ -801,6 +801,7 @@ class UDExSearch extends UI5Element {
801
801
  }
802
802
 
803
803
  handleSubmitValue(): void {
804
+ this.handleDebounce.cancel();
804
805
  this.onClosePopover();
805
806
  this.fireDecoratorEvent("submit-search-value", { value: this.value });
806
807
  }
@@ -16,7 +16,7 @@
16
16
  </span>
17
17
  {{/if}}
18
18
  {{#if isListEmpty}}
19
- <div class="udex-no-result"><span>{{getNoResultText}}&lrm;</span></div>
19
+ <div class="udex-no-result"><span>{{getNoResultText}}</span></div>
20
20
  {{else if busy}}
21
21
  <ui5-busy-indicator
22
22
  class="udex-busy-indicator"
package/src/SelectBox.hbs CHANGED
@@ -15,7 +15,6 @@
15
15
  ?displayonly="{{displayonly}}"
16
16
  ?readonly="{{readonly}}"
17
17
  aria-label="{{accInfo.ariaLabel}}"
18
- aria-labelledby="{{accInfo.ariaLabelledBy}}"
19
18
  aria-readonly="{{isReadOrDisplayOnly}}"
20
19
  aria-disabled="{{disabled}}"
21
20
  aria-haspopup="{{listboxRole}}"
@@ -23,16 +22,18 @@
23
22
  aria-expanded="{{tokenizerExpanded}}"
24
23
  aria-activedescendant>
25
24
  {{#if label}}
26
- <span id="{{this._id}}-single-label" class="{{labelClass}}">
27
- {{label}}
28
- {{#if required}}
29
- *
30
- {{/if}}
31
- </span>
25
+ <span class="{{labelClass}}">
26
+ {{label}}
27
+ {{#if required}}
28
+ *
29
+ {{/if}}
30
+ </span>
31
+ <span class="hidden" id="{{this._id}}-single-label">{{accInfo.ariaLabel}}</span>
32
+ </span>
32
33
  {{/if}}
33
34
  {{#if showSingleSelectedOption}}
34
35
  <div class="udex-text-field__text-holder">
35
- <span class="udex-text-field__single-label">
36
+ <span class="udex-text-field__single-label" aria-hidden="true">
36
37
  {{{_singleSelectedOption}}}
37
38
  </span>
38
39
  </div>
@@ -66,15 +67,12 @@
66
67
  aria-expanded="{{accessibilityAttributes.expanded}}"
67
68
  aria-controls="{{accessibilityAttributes.controls}}"
68
69
  aria-haspopup="{{accessibilityAttributes.hasPopup}}"
69
- aria-label="{{accessibilityAttributes.ariaLabel}}"
70
70
  class="udex-text-field__trigger"
71
71
  tabindex="{{triggerTabIndex}}"
72
72
  @keydown="{{handleKeyDownTrigger}}"
73
73
  @click="{{getHandleMultiSelectOpen}}">
74
- <ui5-icon
75
- name="navigation-down-arrow"
76
- accessible-name="{{iconAccessibleNameText}}">
77
- </ui5-icon>
74
+ <ui5-icon name="navigation-down-arrow"></ui5-icon>
75
+ <span class="hidden">{{accessibilityAttributes.ariaLabel}}</span>
78
76
  </button>
79
77
  {{/if}}
80
78
  </div>
package/src/SelectBox.ts CHANGED
@@ -23,6 +23,7 @@ import Icon from "@ui5/webcomponents/dist/Icon.js";
23
23
  import Token from "@ui5/webcomponents/dist/Token.js";
24
24
  import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
25
25
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
26
+ import { getAllAccessibleNameRefTexts } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
26
27
  import Popover from "@ui5/webcomponents/dist/Popover.js";
27
28
  import UDExList from "./List.js";
28
29
  import UDExListItem from "./ListItem.js";
@@ -713,8 +714,7 @@ class UDExSelectBox extends UDExSearchableListBase {
713
714
 
714
715
  get accInfo() {
715
716
  return {
716
- "ariaLabel": this.accessibleName || this.label || undefined,
717
- "ariaLabelledBy": this.accessibleNameRef || undefined,
717
+ "ariaLabel": getAllAccessibleNameRefTexts(this) || this.accessibleName || this.label || undefined,
718
718
  };
719
719
  }
720
720
 
@@ -0,0 +1,152 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
+ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
5
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
6
+ import SocialMediaButtonTemplate from "./SocialMediaButtonTemplate.js";
7
+ import UDExSocialMediaButtonType from "./types/SocialMediaButtonType.js";
8
+ import type { LinkClickEventDetail } from "@ui5/webcomponents/dist/Link.js";
9
+ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
10
+ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
11
+ import { SOCIAL_MEDIA_BUTTON } from "./generated/i18n/i18n-defaults.js";
12
+ import { UDExTarget } from "./types/common.js";
13
+
14
+ // Styles
15
+ import SocialMediaButtonCss from "./generated/themes/SocialMediaButton.css.js";
16
+
17
+ const baseIconsURL = "https://cdn.udex.services.sap.com/dds/design-tokens/assets/icons/";
18
+
19
+ /**
20
+ * @class
21
+ *
22
+ * <h3 class="comment-api-title">Overview</h3>
23
+ *
24
+ *
25
+ * <h3>Usage</h3>
26
+ *
27
+ * For the <code>udex-social-media-button</code>
28
+ * <h3>ES6 Module Import</h3>
29
+ *
30
+ * <code>import "@sapudex/web-components/dist/SocialMediaButton.js";</code>
31
+ *
32
+ * @constructor
33
+ * @extends UI5Element
34
+ * @tagname udex-social-media-button
35
+ * @public
36
+ */
37
+ @customElement({
38
+ tag: "udex-social-media-button",
39
+ renderer: jsxRenderer,
40
+ styles: SocialMediaButtonCss,
41
+ template: SocialMediaButtonTemplate,
42
+ })
43
+
44
+ /**
45
+ * Triggered when the user clicks on an item.
46
+ * @public
47
+ */
48
+ @event("click", { cancelable: true, bubbles: true })
49
+
50
+ class UDExSocialMediaButton extends UI5Element {
51
+ eventDetails!: {
52
+ "click": LinkClickEventDetail,
53
+ };
54
+
55
+ /**
56
+ * Defines the type of Social Media Button.
57
+ * <br><br>
58
+ * Available options are:
59
+ * <ul>
60
+ * <li><code>facebook</code> - the button with Facebook icon</li>
61
+ * <li><code>instagram</code> - the button with Instagram icon</li>
62
+ * <li><code>linkedin</code> - the button with LinkedIn icon</li>
63
+ * <li><code>youtube</code> - the button with YouTube icon</li>
64
+ * <li><code>x</code> - the button with X icon</li>
65
+ * <li><code>mail</code> - the button with Instagram mail icon (default)</li>
66
+ * </ul>
67
+ *
68
+ * @public
69
+ */
70
+ @property()
71
+ type: `${UDExSocialMediaButtonType}` = UDExSocialMediaButtonType.email;
72
+
73
+ /**
74
+ * Defines the URL address for Social Media platform profile.
75
+ *
76
+ * @default ""
77
+ * @public
78
+ */
79
+ @property({ type: String })
80
+ url?: string;
81
+
82
+ /**
83
+ * Define the target of the Social Media Button link
84
+ * <b>Note:</b> Standard hyperlink behavior is supported.
85
+ * @public
86
+ * @default "_blank"
87
+ */
88
+ @property({ type: String })
89
+ target: `${UDExTarget}` = UDExTarget._blank;
90
+
91
+ /**
92
+ * Defines the accessible ARIA name of the component.
93
+ *
94
+ * @default "Social Media Button"
95
+ * @public
96
+ */
97
+ @property({ type: String })
98
+ accessibleName?: string;
99
+
100
+ @i18n("@sapudex/web-components")
101
+ static i18nBundle: I18nBundle;
102
+
103
+ private svgLoaded: boolean = false;
104
+
105
+ fireLinkClickEvent(e: CustomEvent<LinkClickEventDetail>): void {
106
+ const executeEvent = this.fireDecoratorEvent("click", e.detail);
107
+
108
+ if (!executeEvent) {
109
+ e.preventDefault();
110
+ }
111
+ }
112
+
113
+ onAfterRendering(): void {
114
+ this.fetchIconSvg();
115
+ }
116
+
117
+ async fetchIconSvg() {
118
+ if (this.svgLoaded) {
119
+ return;
120
+ }
121
+
122
+ try {
123
+ const response = await fetch(`${baseIconsURL}${this.type}.svg`);
124
+
125
+ if (!response.ok) {
126
+ console.warn("Failed to fetch SVG", response.statusText);
127
+ return;
128
+ }
129
+
130
+ const svgContent: string = await response.text();
131
+ this.updateSvgContent(svgContent);
132
+ } catch (error) {
133
+ console.warn("Failed to fetch SVG", error);
134
+ }
135
+ }
136
+
137
+ private updateSvgContent(svgContent: string): void {
138
+ const socialBtnEl = this.shadowRoot?.querySelector(".udex-social-media-button");
139
+ if (socialBtnEl) {
140
+ socialBtnEl.innerHTML = svgContent;
141
+ this.svgLoaded = true;
142
+ }
143
+ }
144
+
145
+ get buttonAccessibleName(): string {
146
+ return this.accessibleName || UDExSocialMediaButton.i18nBundle.getText(SOCIAL_MEDIA_BUTTON);
147
+ }
148
+ }
149
+
150
+ UDExSocialMediaButton.define();
151
+
152
+ export default UDExSocialMediaButton;
@@ -0,0 +1,18 @@
1
+ import type UDExSocialMediaButton from "./SocialMediaButton.js";
2
+ import UDExLink from "./Link.js";
3
+
4
+ export default function SocialMediaButtonTemplate(this: UDExSocialMediaButton) {
5
+ return (
6
+ <div
7
+ class="udex-social-media-button-wrapper">
8
+ <UDExLink
9
+ href={this.url}
10
+ target={this.target}
11
+ accessible-name={this.buttonAccessibleName}
12
+ onClick={this.fireLinkClickEvent}>
13
+ <div class={`udex-social-media-button udex-social-media-button-${this.type}`} title={this.buttonAccessibleName}></div>
14
+ <div class="hidden">{this.buttonAccessibleName}</div>
15
+ </UDExLink>
16
+ </div>
17
+ );
18
+ }
package/src/StepInput.ts CHANGED
@@ -20,6 +20,7 @@ import {
20
20
  isUpShift,
21
21
  isUpShiftCtrl,
22
22
  } from "@ui5/webcomponents-base/dist/Keys.js";
23
+ import { getAllAccessibleNameRefTexts } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
23
24
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
24
25
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
25
26
  import { STEPINPUT_DEC_ICON_TITLE, STEPINPUT_INC_ICON_TITLE } from "./generated/i18n/i18n-defaults.js";
@@ -29,7 +30,7 @@ import StepInputTemplate from "./StepInputTemplate.js";
29
30
  // Styles
30
31
  import StepInputCss from "./generated/themes/StepInput.css.js";
31
32
  import type UDExControlButtonDesign from "./types/ControlButtonDesign.js";
32
- import type { UDExTextFieldKeydownEventDetail } from "./TextField.js";
33
+ import type { AccInfo, UDExTextFieldKeydownEventDetail } from "./TextField.js";
33
34
 
34
35
  // Spin variables
35
36
  const INITIAL_WAIT_TIMEOUT = 500; // milliseconds
@@ -255,6 +256,12 @@ class UDExStepInput extends UI5Element {
255
256
  super();
256
257
  }
257
258
 
259
+ get accInfo(): AccInfo {
260
+ return {
261
+ "ariaLabel": getAllAccessibleNameRefTexts(this) || this.accessibleName || undefined,
262
+ };
263
+ }
264
+
258
265
  get controlButtonDesign(): UDExControlButtonDesign {
259
266
  return valueStateToControlButtonDesign[this.valueState];
260
267
  }
@@ -9,8 +9,7 @@ export default function StepInputTemplate(this: UDExStepInput) {
9
9
  label={this.label}
10
10
  supporting-text={this.supportingText}
11
11
  value={this._valuePrecisioned}
12
- aria-label={this.accessibleName}
13
- aria-labelledby={this.accessibleNameRef}
12
+ aria-label={this.accInfo.ariaLabel}
14
13
  onFocusIn={this._onInputFocusIn}
15
14
  onFocusOut={this._onInputFocusOut}
16
15
  onKeydown={this._onkeydown}
package/src/TableRow.ts CHANGED
@@ -2,6 +2,7 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
2
2
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import UDExTableRowBase from "./TableRowBase.js";
5
+ import type UDExTableCell from "./TableCell.js";
5
6
  import TableRowTemplate from "./generated/templates/TableRowTemplate.lit.js";
6
7
 
7
8
  /**
@@ -39,9 +40,34 @@ class UDExTableRow extends UDExTableRowBase {
39
40
  @property({ type: Boolean })
40
41
  interactive?: boolean;
41
42
 
42
- get isGroup() {
43
+ /**
44
+ * Defines highlighted the row.
45
+ *
46
+ * @default false
47
+ * @public
48
+ */
49
+ @property({ type: Boolean })
50
+ highlighted?: boolean;
51
+
52
+ onBeforeRendering(): void {
53
+ if (this.highlighted) {
54
+ this._setHighlightToCells();
55
+ }
56
+ }
57
+
58
+ _setHighlightToCells(): void {
59
+ this.cellsInRow.forEach(cell => {
60
+ cell._highlighted = true;
61
+ });
62
+ }
63
+
64
+ get isGroup(): boolean {
43
65
  return false;
44
66
  }
67
+
68
+ get cellsInRow(): Array<UDExTableCell> {
69
+ return this.getSlottedNodes<UDExTableCell>("cells");
70
+ }
45
71
  }
46
72
 
47
73
  UDExTableRow.define();
package/src/TextArea.ts CHANGED
@@ -4,6 +4,7 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
5
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
6
6
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
7
+ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
7
8
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
9
  import {
9
10
  READ_ONLY,
@@ -44,6 +45,12 @@ import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
44
45
  dependencies: [UDExStatusMessage],
45
46
  })
46
47
 
48
+ /**
49
+ * Fires when the value of the textarea changes and the textarea loses focus.
50
+ * @public
51
+ */
52
+ @event("change", { bubbles: true })
53
+
47
54
  class UDExTextArea extends UI5Element {
48
55
  eventDetails!: {
49
56
  "change": void,
@@ -236,10 +243,6 @@ class UDExTextArea extends UI5Element {
236
243
  @i18n("@sapudex/web-components")
237
244
  static i18nBundle: I18nBundle;
238
245
 
239
- getInputDomRef() {
240
- return this.getDomRef()!.querySelector<HTMLTextAreaElement>("textarea")!;
241
- }
242
-
243
246
  onBeforeRendering() {
244
247
  if (this.value && this.labelActiveClass === "") {
245
248
  this.labelActiveClass = this._labelActiveClassName;
@@ -254,8 +257,8 @@ class UDExTextArea extends UI5Element {
254
257
  this.handleGrowing();
255
258
  }
256
259
 
257
- handleInput = (event: InputEvent) => {
258
- this.value = (event.target as HTMLInputElement)?.value;
260
+ handleInput = (inputEvent: InputEvent) => {
261
+ this.value = (inputEvent.target as HTMLInputElement)?.value;
259
262
  };
260
263
 
261
264
  handleChange = () => {
@@ -313,6 +316,10 @@ class UDExTextArea extends UI5Element {
313
316
  this.active = false;
314
317
  };
315
318
 
319
+ getInputDomRef(): HTMLTextAreaElement {
320
+ return this.getDomRef()!.querySelector<HTMLTextAreaElement>("textarea")!;
321
+ }
322
+
316
323
  get ariaInvalid(): string | null {
317
324
  return this.valueState === UDExValueState.Error ? "true" : null;
318
325
  }
@@ -321,7 +328,7 @@ class UDExTextArea extends UI5Element {
321
328
  return this.valueState === UDExValueState.Error || this.valueState === UDExValueState.Warning || this.valueState === UDExValueState.Success;
322
329
  }
323
330
 
324
- get valueStateTypeMappings() {
331
+ get valueStateTypeMappings(): Record<UDExValueState, string> {
325
332
  return {
326
333
  [UDExValueState.Success]: UDExTextArea.i18nBundle.getText(VALUE_STATE_TYPE_SUCCESS),
327
334
  [UDExValueState.Standard]: UDExTextArea.i18nBundle.getText(VALUE_STATE_TYPE_STANDARD),
package/src/TextField.hbs CHANGED
@@ -31,28 +31,28 @@
31
31
  aria-describedby="{{accInfo.ariaDescribedBy}}"
32
32
  aria-haspopup="{{accInfo.ariaHasPopup}}"
33
33
  aria-label="{{accInfo.ariaLabel}}"
34
- aria-labelledby="{{accInfo.ariaLabelledBy}}"
35
34
  part="textfield-input"
36
35
  min="{{min}}"
37
36
  max="{{max}}"
38
37
  step="{{step}}"
39
38
  />
40
-
41
39
  {{#if icon}}
42
40
  <udex-control-button
43
- accessible-name="{{accessibleIconName}}"
41
+ accessible-name="{{buttonAccessibleName}}"
42
+ accessible-description="{{buttonAccessibleDescription}}"
44
43
  tooltip="{{showButtonTooltip}}"
45
44
  ?active="{{active}}"
46
45
  ?disabled="{{disabled}}"
47
46
  ?readonly="{{readonly}}"
47
+ ?_is-combobox-role="{{_isComboboxRole}}"
48
48
  ?non-interactive="{{readonly}}"
49
49
  design="{{valueState}}"
50
50
  icon="{{icon}}"
51
51
  @click="{{handleIconClick}}"
52
52
  part="textfield-control-btn"
53
53
  size="Large"
54
- class="udex-text-field_icon-container"
55
- ></udex-control-button>
54
+ class="udex-text-field_icon-container">
55
+ </udex-control-button>
56
56
  {{/if}}
57
57
  </div>
58
58