@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
@@ -2,12 +2,18 @@ import { UDExFooter } 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
4
 
5
+ const taglineAlt = "SAP tagline alt";
6
+ const chineseLogoUrl = "./stories/footer/chinese-logo.svg";
7
+ const chineseLogoLink = "https://www.sap.cn/index.html";
8
+ const taglineUrl = "./stories/footer/tagline.svg";
9
+ const chineseTaglineUrl = "./stories/footer/chinese-tagline.svg";
10
+
5
11
  const defaultFooter = <UDExFooter
6
12
  id="footer"
7
13
  logoLink="#test"
8
14
  logoTitle="SAP Title"
9
15
  logoAriaLabel="SAP Homepage"
10
- logoUrl='./assets/sap-logo.svg'
16
+ logoUrl='https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg'
11
17
  contactNumbersList='[{"country":"France","number":"400-619-0727"},{"country":"United State","number":"1-800-872-1727"}]'
12
18
  localCountryNumbersLink='#'
13
19
  chatWithUsLink='#'
@@ -16,7 +22,12 @@ const defaultFooter = <UDExFooter
16
22
  aboutLinks = {JSON.stringify(aboutLinks)}
17
23
  siteInformationLinks = {JSON.stringify(siteInformationLinks)}
18
24
  socialLinks = {JSON.stringify(socialLinks)}
19
- contactUsLink='#'>
25
+ contactUsLink='#'
26
+ tagline-alt={taglineAlt}
27
+ tagline-url={taglineUrl}
28
+ chinese-tagline-url={chineseTaglineUrl}
29
+ chinese-logo-url={chineseLogoUrl}
30
+ chinese-logo-link={chineseLogoLink}>
20
31
  </UDExFooter>
21
32
 
22
33
  describe("Footer", () => {
@@ -58,22 +69,29 @@ describe("Footer", () => {
58
69
  });
59
70
 
60
71
  it("renders social link target", () => {
61
- cy.get("#footer").shadow().find(".udex-footer__social-container a").first().should("have.attr", "target", "_blank")
72
+ cy.get("#footer").shadow().find(".udex-footer__social-container [udex-social-media-button]").first().should("have.attr", "target", "_blank")
62
73
  });
63
74
 
64
75
  it("renders all social links", () => {
65
- cy.get("#footer").shadow().find(".udex-footer__social-container a").should("have.length", 6)
76
+ cy.get("#footer").shadow().find(".udex-footer__social-container [udex-social-media-button]").should("have.length", 6)
66
77
  });
67
78
 
68
79
  it("renders copyright", () => {
69
80
  cy.get("#footer").shadow().find(".udex-footer__copyright-text").first().should("have.text", "© 2025 SAP SE or an SAP affiliate company. All rights reserved.")
70
81
  });
71
82
 
72
- it("renders chinese text when specified in url", () => {
73
- setLanguage("zh_cn")
74
- cy.mount(defaultFooter)
75
- cy.get("#footer").shadow().find(".udex-footer__copyright-chinese-text").should("have.text", "ICP_NUMBER PUBLIC_SECURITY_NETWORK_NUMBER")
76
- cy.get("#footer").shadow().find(".udex-footer__copyright-chinese-link").should("have.attr", "href", "https://beian.miit.gov.cn/")
83
+ it("sets data-id attribute to social links", () => {
84
+ cy.get("#footer").shadow().find(".udex-footer__social-container [udex-social-media-button]").each(($socialLink, index) => {
85
+ expect($socialLink[0]).attr("data-id").eqls(socialLinks[index].id)
86
+ })
87
+ });
88
+
89
+ it("renders tagline image", () => {
90
+ cy.get("#footer").shadow().find(".udex-footer__tagline-image").should("have.attr", "src", taglineUrl);
91
+ });
92
+
93
+ it("renders tagline image alt", () => {
94
+ cy.get("#footer").shadow().find(".udex-footer__tagline-image").should("have.attr", "alt", taglineAlt);
77
95
  });
78
96
 
79
97
  describe("Desktop tests", () => {
@@ -137,12 +155,6 @@ describe("Footer", () => {
137
155
  })
138
156
  });
139
157
 
140
- it("sets data-id attribute to social links", () => {
141
- cy.get("#footer").shadow().find(".udex-footer__social-container a").each(($socialLink, index) => {
142
- expect($socialLink[0]).attr("data-id").eqls(socialLinks[index].id)
143
- })
144
- });
145
-
146
158
  it("corectly renders default logo title", () => {
147
159
  cy.get("#footer").shadow().find(".udex-footer__logo a").should("have.attr", "title", "SAP Title")
148
160
  });
@@ -279,13 +291,12 @@ describe("Footer", () => {
279
291
  name: "facebook",
280
292
  id: "facebookId"
281
293
  }
282
-
283
294
  const socialMediaLinkCickHandler = cy.stub().as("socialMediaLinkHandler")
284
295
 
285
296
  cy.get("#footer").then($footer =>
286
297
  $footer[0].addEventListener("social-media-link-click", socialMediaLinkCickHandler)
287
- ).shadow().find(".udex-footer__social-container a").first().then($socialLink => {
288
- $socialLink[0].removeAttribute("href")
298
+ ).shadow().find(".udex-footer__social-container [udex-social-media-button]").first().then($socialLink => {
299
+ $socialLink[0].removeAttribute("url")
289
300
  }).click()
290
301
 
291
302
  cy.get("@socialMediaLinkHandler").should("have.been.called").its("lastCall.args.0.detail").should("include", expectedDetails)
@@ -310,4 +321,29 @@ describe("Footer", () => {
310
321
  cy.get("#footer").shadow().find("udex-accordion-item.udex-footer__action-item").should("exist")
311
322
  });
312
323
  });
324
+
325
+ describe("Footer chinese", () => {
326
+ beforeEach(() => {
327
+ cy.viewport(1920, 1080);
328
+ setLanguage("zh_cn");
329
+ cy.get("#footer").shadow().as("footer");
330
+ });
331
+
332
+ it("renders chinese text when specified in url", () => {
333
+ cy.get("@footer").find(".udex-footer__copyright-chinese-text").should("have.text", "ICP_NUMBER PUBLIC_SECURITY_NETWORK_NUMBER")
334
+ cy.get("@footer").find(".udex-footer__copyright-chinese-link").should("have.attr", "href", "https://beian.miit.gov.cn/")
335
+ });
336
+
337
+ it("renders chinese logo", () => {
338
+ cy.get("@footer").find(".udex-footer__logo-image-chinese").should("have.attr", "src", chineseLogoUrl);
339
+ });
340
+
341
+ it("renders chinese logo link", () => {
342
+ cy.get("@footer").find(".udex-footer__logo a").should("have.attr", "href", chineseLogoLink);
343
+ });
344
+
345
+ it("renders chinese tagline image", () => {
346
+ cy.get("@footer").find(".udex-footer__tagline-image-chinese").should("have.attr", "src", chineseTaglineUrl);
347
+ });
348
+ });
313
349
  });
@@ -0,0 +1,124 @@
1
+ import { UDExPromoTile } from "../support/component-imports.js";
2
+
3
+ const eyebrow = "Eyebrow";
4
+ const header = "Header";
5
+ const iconName = "add";
6
+ const imageLabel = "image label";
7
+ const logoUrl = "http://test.com";
8
+ const buttonLabel = "Button";
9
+ const design = "Tertiary";
10
+ const colorScheme = "Grey9";
11
+ const promoTile = <UDExPromoTile>Text</UDExPromoTile>;
12
+ const simplePromoTile = <UDExPromoTile eyebrow={eyebrow} header={header}>Text</UDExPromoTile>;
13
+ const iconPromoTile = <UDExPromoTile icon={iconName} image-label={imageLabel}>Text</UDExPromoTile>;
14
+ const logoPromoTile = <UDExPromoTile logoUrl={logoUrl} image-label={imageLabel}>Text</UDExPromoTile>;
15
+ const buttonPromoTile = <UDExPromoTile button={buttonLabel} button-design={design}>Text</UDExPromoTile>;
16
+ const horizontalPromoTile = <UDExPromoTile orientation="Horizontal" button={buttonLabel}>Text</UDExPromoTile>;
17
+ const darkPromoTile = <UDExPromoTile color-scheme={colorScheme} button={buttonLabel}>Text</UDExPromoTile>;
18
+
19
+ describe("Promo Tile", () => {
20
+ it("renders simple promo tile", () => {
21
+ cy.mount(promoTile)
22
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("be.visible");
23
+ });
24
+
25
+ it("renders promo tile with default classes", () => {
26
+ cy.mount(promoTile)
27
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--vertical");
28
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--light");
29
+ });
30
+
31
+ it("renders promo tile with default aria label", () => {
32
+ cy.mount(promoTile)
33
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.attr", "aria-label", "Promo Tile");
34
+ });
35
+
36
+ it("renders promo tile without footer", () => {
37
+ cy.mount(promoTile)
38
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__footer").should("not.exist");
39
+ });
40
+
41
+ it("renders promo tile in horizontal orientation", () => {
42
+ cy.mount(horizontalPromoTile)
43
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--horizontal");
44
+ });
45
+
46
+ it("renders promo tile with eyebrow", () => {
47
+ cy.mount(simplePromoTile)
48
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__eyebrow").should("have.text", eyebrow);
49
+ });
50
+
51
+ it("renders promo tile with header", () => {
52
+ cy.mount(simplePromoTile)
53
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.attr", "aria-label", header);
54
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__header").should("have.text", header);
55
+ });
56
+
57
+ it("renders promo tile with UI5 icon", () => {
58
+ cy.mount(iconPromoTile)
59
+ cy.get("[udex-promo-tile]").shadow().find("[ui5-icon]").should("have.attr", "name", iconName);
60
+ cy.get("[udex-promo-tile]").shadow().find("[ui5-icon]").should("have.attr", "accessible-name", imageLabel);
61
+ });
62
+
63
+ it("renders promo tile with custom logo", () => {
64
+ cy.mount(logoPromoTile)
65
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__pictogram").should("have.class", "udex-promo-tile__pictogram--logo");
66
+ cy.get("[udex-promo-tile]").shadow().find("img").should("have.attr", "src", logoUrl);
67
+ cy.get("[udex-promo-tile]").shadow().find("img").should("have.attr", "alt", imageLabel);
68
+ });
69
+
70
+ it("renders promo tile with dark color scheme", () => {
71
+ cy.mount(darkPromoTile)
72
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--dark");
73
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "design", "Secondary");
74
+ });
75
+ });
76
+
77
+ describe("Promo Tile - CTA button", () => {
78
+ beforeEach(() => {
79
+ cy.mount(buttonPromoTile)
80
+ })
81
+
82
+ it("renders promo tile with CTA button", () => {
83
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__footer").should("be.visible");
84
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").shadow().find("button").should("have.attr", "aria-label", buttonLabel);
85
+ });
86
+
87
+ it("renders promo tile with CTA default desktop size", () => {
88
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "size", "Large");
89
+ });
90
+
91
+ it("renders promo tile with CTA button Tertiary design", () => {
92
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "design", design);
93
+ });
94
+
95
+ it("button click emits \"button-click\" event", () => {
96
+ const stub = cy.stub();
97
+ cy.get("[udex-promo-tile]").then($tiles => {
98
+ $tiles.get(0).addEventListener("button-click", stub);
99
+ });
100
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").click()
101
+ .then(() => {
102
+ expect(stub).to.have.been.called;
103
+ });
104
+ });
105
+ });
106
+
107
+ describe("Promo Tile - Mobile tests", () => {
108
+ beforeEach(() => {
109
+ cy.simulateDevice();
110
+ cy.mount(horizontalPromoTile);
111
+ });
112
+
113
+ it("renders promo tile with smaller CTA button size", () => {
114
+ cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "size", "Medium");
115
+ });
116
+
117
+ it("renders promo tile with mobile design", () => {
118
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").then($tiles => {
119
+ const tileStyles = window.getComputedStyle($tiles[0]);
120
+ expect(tileStyles.padding).eqls("24px");
121
+ expect(tileStyles.flexDirection).eqls("column");
122
+ })
123
+ });
124
+ });
@@ -0,0 +1,65 @@
1
+ import {UDExFilterMenu, UDExQuote} from "../support/component-imports.js";
2
+ import { UDExLink } from "../support/component-imports.js";
3
+ import { UDExMaskType, UDExSizeType, UDExImagePlacement } from "../../src/Quote.js";
4
+
5
+
6
+ const componentQuote = <UDExQuote
7
+ image-size={UDExSizeType.large}
8
+ text-size={UDExSizeType.large}
9
+ mask={UDExMaskType.avatar}>
10
+ <img
11
+ alt="John Ford avatar"
12
+ slot="image"
13
+ style="border-radius: 100px;"
14
+ src="https://cdn.udex.services.sap.com/dds/design-tokens/assets/logos/sap-logo.svg"
15
+ />
16
+ It is great for data management and comparing data. It does analysis of data
17
+ and compares old data and new data as well. Data is easily stored and easily
18
+ editable.
19
+ <span slot="author">John Ford, Job Title, Company, Inc.</span>
20
+ <UDExLink
21
+ slot="link"
22
+ design="Default"
23
+ interactive-area-size="Normal"
24
+ wrapping-type="Normal">
25
+ Read more
26
+ </UDExLink>
27
+ </UDExQuote>
28
+
29
+ describe("Quote", () => {
30
+ beforeEach(() => {
31
+ cy.mount(componentQuote)
32
+ })
33
+
34
+ it("Default slot content renders correctly", () => {
35
+ cy.get("[udex-quote]").shadow().find(".content-container__text").should("exist");
36
+ });
37
+
38
+ it("Image slot content renders correctly", () => {
39
+ cy.get("[udex-quote]").shadow().find("[slot=image]").should("exist");
40
+ });
41
+
42
+ it("Author slot content renders correctly", () => {
43
+ cy.get("[udex-quote]").shadow().find("[slot=author]").should("exist");
44
+ });
45
+
46
+ it("Link slot content renders correctly", () => {
47
+ cy.get("[udex-quote]").shadow().find("[slot=link]").should("exist");
48
+ });
49
+
50
+ it("Updates image placement to 'right' correctly", () => {
51
+ cy.get("[udex-quote]").then($quote => {
52
+ const quote = $quote[0] as UDExQuote;
53
+ quote.imagePlacement = UDExImagePlacement.right;
54
+ });
55
+ cy.get("[udex-quote]").should("have.attr", "image-placement", "right");
56
+ });
57
+
58
+ it("Updates image size correctly", () => {
59
+ cy.get("[udex-quote]").then($quote => {
60
+ const quote = $quote[0] as UDExQuote;
61
+ quote.imageSize = UDExSizeType.small;
62
+ });
63
+ cy.get("[udex-quote]").should("have.attr", "image-size", "small");
64
+ });
65
+ });
@@ -0,0 +1,44 @@
1
+ import { UDExSocialMediaButton } from "../support/component-imports.js";
2
+
3
+ const url = 'http://test.com';
4
+ const target = "_self";
5
+ const accessibleName = "Test Social Media Button";
6
+ const defaultSMB = <UDExSocialMediaButton url={url}></UDExSocialMediaButton>
7
+ const customSMB = <UDExSocialMediaButton type="facebook" url={url} target={target} accessible-name={accessibleName}></UDExSocialMediaButton>
8
+
9
+ describe("SocialMediaButton", () => {
10
+ it("renders default social media button", () => {
11
+ cy.mount(defaultSMB)
12
+ cy.get("[udex-social-media-button]").shadow().find(".udex-social-media-button-wrapper").should("exist")
13
+ });
14
+
15
+ it("renders social media button as udex link component", () => {
16
+ cy.mount(defaultSMB)
17
+ cy.get("[udex-social-media-button]").shadow().find("[udex-link]").should("be.visible")
18
+ });
19
+
20
+ it("renders social media button with default target attribute", () => {
21
+ cy.mount(defaultSMB)
22
+ cy.get("[udex-social-media-button]").shadow().find("[udex-link]").should("have.attr", "target", "_blank")
23
+ });
24
+
25
+ it("propagates target attribute correctly", () => {
26
+ cy.mount(customSMB)
27
+ cy.get("[udex-social-media-button]").shadow().find("[udex-link]").should("have.attr", "target", target)
28
+ });
29
+
30
+ it("propagates url attribute correctly", () => {
31
+ cy.mount(defaultSMB)
32
+ cy.get("[udex-social-media-button]").shadow().find("[udex-link]").shadow().find(".ui5-link-root").should("have.attr", "href", url)
33
+ });
34
+
35
+ it("propagates accessible name attribute correctly", () => {
36
+ cy.mount(customSMB)
37
+ cy.get("[udex-social-media-button]").shadow().find("[udex-link]").shadow().find(".ui5-link-root").should("have.attr", "aria-label", accessibleName)
38
+ });
39
+
40
+ it("renders social media button with proper type class", () => {
41
+ cy.mount(customSMB)
42
+ cy.get("[udex-social-media-button]").shadow().find(".udex-social-media-button").should("have.class", "udex-social-media-button-facebook")
43
+ });
44
+ });
@@ -194,7 +194,7 @@ const customWidthTable = <UDExTable customColumns="50px 50px 50px"
194
194
  <UDExTableHeaderCell>Display</UDExTableHeaderCell>
195
195
  <UDExTableHeaderCell>Resolution</UDExTableHeaderCell>
196
196
  </UDExTableHeaderRow>
197
- <UDExTableRow>
197
+ <UDExTableRow id="highlighted-row" highlighted>
198
198
  <UDExTableCell>Cell1</UDExTableCell>
199
199
  <UDExTableCell>Cell2</UDExTableCell>
200
200
  <UDExTableCell>Cell3</UDExTableCell>
@@ -206,7 +206,6 @@ const customWidthTable = <UDExTable customColumns="50px 50px 50px"
206
206
  </UDExTableRow>
207
207
  </UDExTable>
208
208
 
209
-
210
209
  describe("Table", () => {
211
210
  beforeEach(() => {
212
211
  cy.mount(defaultTable)
@@ -350,4 +349,11 @@ describe("Table", () => {
350
349
  expect(outlineColor).eqls("rgb(34, 53, 72)")
351
350
  })
352
351
  });
352
+
353
+ it("highlighted row applies _highlighted property to its cells", () => {
354
+ cy.mount(customWidthTable);
355
+ cy.get("#table-custom-width").find("#highlighted-row").find("udex-table-cell").each($cell => {
356
+ cy.wrap($cell).should("have.attr", "_highlighted")
357
+ })
358
+ });
353
359
  });
@@ -2,12 +2,18 @@ import { UDExTextField } from "../support/component-imports.js";
2
2
 
3
3
  const defaultTextField = <UDExTextField
4
4
  ariaDescribedBy="aria described by attribute"
5
- accessibleNameRef="accessible name ref attribute"
6
5
  accessibleName="accessible name attribute"
7
6
  value="Test value"
8
7
  id="defaultTextField">
9
8
  </UDExTextField>
10
9
 
10
+ const accessibleRefTextField = <><h3 id="custom">Custom title</h3><UDExTextField
11
+ accessibleName="accessible name attribute"
12
+ accessibleNameRef="custom"
13
+ value="Test value"
14
+ id="accessibleRefTextField">
15
+ </UDExTextField></>
16
+
11
17
  const numberTextField = <UDExTextField
12
18
  type="Number"
13
19
  min={1}
@@ -106,9 +112,10 @@ describe("Text Field", () => {
106
112
  })
107
113
  });
108
114
 
109
- it("\"aria-labelledby\" attribute is set", () => {
110
- cy.get("#defaultTextField").shadow().find("input").then($input => {
111
- expect($input.attr("aria-labelledby")).to.be.equal("accessible name ref attribute")
115
+ it("\"accessible-name-ref\" renders in aria-label", () => {
116
+ cy.mount(accessibleRefTextField)
117
+ cy.get("#accessibleRefTextField").shadow().find("input").then($input => {
118
+ expect($input.attr("aria-label")).to.be.equal("Custom title");
112
119
  })
113
120
  });
114
121
 
@@ -47,6 +47,13 @@ import UDExContact from "../../instrumented/Contact.js";
47
47
  import UDExContactItem from "../../instrumented/ContactItem.js";
48
48
  import UDExEventRibbon from "../../instrumented/EventRibbon.js";
49
49
  import UDExDivider from "../../instrumented/Divider.js";
50
+ import UDExFilterMenu from "../../instrumented/FilterMenu.js";
51
+ import UDExFilterMenuItem from "../../instrumented/FilterMenuItem.js";
52
+ import UDExFilterMenuGroupHeader from "../../instrumented/FilterMenuGroupHeader.js";
53
+ import UDExFilterMenuSelectAll from "../../instrumented/FilterMenuSelectAll.js";
54
+ import UDExSocialMediaButton from "../../instrumented/SocialMediaButton.js";
55
+ import UDExPromoTile from "../../instrumented/PromoTile.js";
56
+ import UDExQuote from "../../instrumented/Quote.js";
50
57
 
51
58
  export {
52
59
  UDExAccordion,
@@ -60,13 +67,19 @@ export {
60
67
  UDExContact,
61
68
  UDExContactItem,
62
69
  UDExCountrySelector,
70
+ UDExDivider,
63
71
  UDExEventRibbon,
72
+ UDExFilterMenu,
73
+ UDExFilterMenuItem,
74
+ UDExFilterMenuGroupHeader,
75
+ UDExFilterMenuSelectAll,
64
76
  UDExFooter,
65
77
  UDExLink,
66
78
  UDExLinkList,
67
79
  UDExLinkListItem,
68
80
  UDExListItem,
69
81
  UDExPhoneNumberField,
82
+ UDExPromoTile,
70
83
  UDExRatingBar,
71
84
  UDExRatingIndicator,
72
85
  UDExReview,
@@ -81,6 +94,7 @@ export {
81
94
  UDExSwitch,
82
95
  UDExTable,
83
96
  UDExSelectBoxGroupHeader,
97
+ UDExSocialMediaButton,
84
98
  UDExTableGroupRow,
85
99
  UDExTableCell,
86
100
  UDExTableHeaderCell,
@@ -97,5 +111,5 @@ export {
97
111
  UDExUploadItem,
98
112
  UDExWizard,
99
113
  UDExWizardStep,
100
- UDExDivider,
114
+ UDExQuote,
101
115
  };
@@ -47,6 +47,13 @@ import UDExContact from "../../src/Contact.js";
47
47
  import UDExContactItem from "../../src/ContactItem.js";
48
48
  import UDExEventRibbon from "../../src/EventRibbon.js";
49
49
  import UDExDivider from "../../src/Divider.js";
50
+ import UDExFilterMenu from "../../src/FilterMenu.js";
51
+ import UDExFilterMenuItem from "../../src/FilterMenuItem.js";
52
+ import UDExFilterMenuGroupHeader from "../../src/FilterMenuGroupHeader.js";
53
+ import UDExFilterMenuSelectAll from "../../src/FilterMenuSelectAll.js";
54
+ import UDExSocialMediaButton from "../../src/SocialMediaButton.js";
55
+ import UDExPromoTile from "../../src/PromoTile.js";
56
+ import UDExQuote from "../../src/Quote.js";
50
57
 
51
58
  export {
52
59
  UDExAccordion,
@@ -60,13 +67,19 @@ export {
60
67
  UDExContact,
61
68
  UDExContactItem,
62
69
  UDExCountrySelector,
70
+ UDExDivider,
63
71
  UDExEventRibbon,
72
+ UDExFilterMenu,
73
+ UDExFilterMenuItem,
74
+ UDExFilterMenuGroupHeader,
75
+ UDExFilterMenuSelectAll,
64
76
  UDExFooter,
65
77
  UDExLink,
66
78
  UDExLinkList,
67
79
  UDExLinkListItem,
68
80
  UDExListItem,
69
81
  UDExPhoneNumberField,
82
+ UDExPromoTile,
70
83
  UDExRatingBar,
71
84
  UDExRatingIndicator,
72
85
  UDExReview,
@@ -81,6 +94,7 @@ export {
81
94
  UDExSwitch,
82
95
  UDExTable,
83
96
  UDExSelectBoxGroupHeader,
97
+ UDExSocialMediaButton,
84
98
  UDExTableGroupRow,
85
99
  UDExTableCell,
86
100
  UDExTableHeaderCell,
@@ -97,5 +111,5 @@ export {
97
111
  UDExUploadItem,
98
112
  UDExWizard,
99
113
  UDExWizardStep,
100
- UDExDivider
114
+ UDExQuote,
101
115
  };
@@ -5,6 +5,14 @@ import type UDExAccordionItem from "./AccordionItem.js";
5
5
  type UDExAccordionToggleItemsEventDetail = {
6
6
  isOpen: boolean;
7
7
  };
8
+ export declare enum UDExAccordionHeadlineLevel {
9
+ H1 = "H1",
10
+ H2 = "H2",
11
+ H3 = "H3",
12
+ H4 = "H4",
13
+ H5 = "H5",
14
+ H6 = "H6"
15
+ }
8
16
  /**
9
17
  * @class
10
18
  *
@@ -54,6 +62,13 @@ declare class UDExAccordion extends UI5Element {
54
62
  * @public
55
63
  */
56
64
  headline: string;
65
+ /**
66
+ * Defines the semantic level of the headline.
67
+ *
68
+ * @default UDExAccordionHeadlineLevel.h3
69
+ * @public
70
+ */
71
+ headlineLevel: UDExAccordionHeadlineLevel;
57
72
  /**
58
73
  * Slot for accordion items.
59
74
  *
package/dist/Accordion.js CHANGED
@@ -18,6 +18,15 @@ import AccordionTemplate from "./AccordionTemplate.js";
18
18
  import { COLLAPSE_ALL, EXPAND_ALL } from "./generated/i18n/i18n-defaults.js";
19
19
  // Styles
20
20
  import AccordionCss from "./generated/themes/Accordion.css.js";
21
+ export var UDExAccordionHeadlineLevel;
22
+ (function (UDExAccordionHeadlineLevel) {
23
+ UDExAccordionHeadlineLevel["H1"] = "H1";
24
+ UDExAccordionHeadlineLevel["H2"] = "H2";
25
+ UDExAccordionHeadlineLevel["H3"] = "H3";
26
+ UDExAccordionHeadlineLevel["H4"] = "H4";
27
+ UDExAccordionHeadlineLevel["H5"] = "H5";
28
+ UDExAccordionHeadlineLevel["H6"] = "H6";
29
+ })(UDExAccordionHeadlineLevel || (UDExAccordionHeadlineLevel = {}));
21
30
  /**
22
31
  * @class
23
32
  *
@@ -40,6 +49,13 @@ import AccordionCss from "./generated/themes/Accordion.css.js";
40
49
  let UDExAccordion = UDExAccordion_1 = class UDExAccordion extends UI5Element {
41
50
  constructor() {
42
51
  super();
52
+ /**
53
+ * Defines the semantic level of the headline.
54
+ *
55
+ * @default UDExAccordionHeadlineLevel.h3
56
+ * @public
57
+ */
58
+ this.headlineLevel = UDExAccordionHeadlineLevel.H3;
43
59
  this._allExpanded = false;
44
60
  this._activeItemIndex = -1;
45
61
  }
@@ -133,6 +149,9 @@ __decorate([
133
149
  __decorate([
134
150
  property({ type: String })
135
151
  ], UDExAccordion.prototype, "headline", void 0);
152
+ __decorate([
153
+ property()
154
+ ], UDExAccordion.prototype, "headlineLevel", void 0);
136
155
  __decorate([
137
156
  slot({ type: HTMLElement, "default": true, individualSlots: true })
138
157
  ], UDExAccordion.prototype, "_items", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../src/Accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport \"@ui5/webcomponents-icons/dist/feeder-arrow.js\";\nimport { isEnter, isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport AccordionTemplate from \"./AccordionTemplate.js\";\nimport type UDExAccordionItem from \"./AccordionItem.js\";\nimport { COLLAPSE_ALL, EXPAND_ALL } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport AccordionCss from \"./generated/themes/Accordion.css.js\";\n\ntype UDExAccordionToggleItemsEventDetail = {\n isOpen: boolean\n}\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-accordion</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Accordion.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-accordion\n * @public\n */\n@customElement({\n tag: \"udex-accordion\",\n renderer: jsxRenderer,\n styles: AccordionCss,\n template: AccordionTemplate,\n})\n\n/**\n * Triggered when the user clicks on the Expand/Collapse All button..\n *\n * @public\n */\n@event(\"toggle-items\", { bubbles: true })\n\nclass UDExAccordion extends UI5Element {\n eventDetails!: {\n \"toggle-items\": UDExAccordionToggleItemsEventDetail,\n };\n\n /**\n * Used internally to store expand/collapse button state.\n *\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _allExpanded!: boolean;\n\n /**\n * Defines if expandAll button should be displayed.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n hideExpandButton!: boolean;\n\n /**\n * Defines direction of the accordion component.\n *\n * @private\n */\n @property({ type: String })\n _direction?: string;\n\n /**\n * Defines the headline text of the accordion component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n headline!: string;\n\n /**\n * Slot for accordion items.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true, individualSlots: true })\n _items!: Array<UDExAccordionItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _activeItemIndex: number;\n\n constructor() {\n super();\n this._allExpanded = false;\n this._activeItemIndex = -1;\n }\n\n onEnterDOM() {\n this.updateAllExpandedStatus();\n }\n\n toggleAllHandler(e: Event) {\n e.preventDefault();\n this._allExpanded = !this._allExpanded;\n this.toggleOpenItems(this._allExpanded);\n this.fireDecoratorEvent(\"toggle-items\", { isOpen: this._allExpanded });\n }\n\n toggleOpenItems(isOpen: boolean) {\n this._items.forEach(item => {\n item.expanded = isOpen;\n });\n }\n\n toggleKeyAllHandler(e: KeyboardEvent) {\n if (isEnter(e) || isSpace(e)) {\n this.toggleAllHandler(e);\n }\n }\n\n keydownHandler(e: KeyboardEvent) {\n if (e.key !== \"Tab\") {\n e.preventDefault();\n }\n const len = this._items.length;\n const focusOnItem = (itemIndex: number) => {\n const item = this._items[itemIndex];\n this._activeItemIndex = itemIndex;\n (item?.shadowRoot?.querySelector(\".udex-accordion-item__header\") as HTMLElement)?.focus();\n };\n\n switch (e.key) {\n case \"Home\":\n focusOnItem(0);\n break;\n case \"End\":\n focusOnItem(len - 1);\n break;\n case \"ArrowUp\":\n if (this._activeItemIndex > 0) {\n focusOnItem(this._activeItemIndex - 1);\n } else if (this._activeItemIndex === 0) {\n focusOnItem(len - 1);\n }\n break;\n case \"ArrowDown\":\n if (this._activeItemIndex < len - 1) {\n focusOnItem(this._activeItemIndex + 1);\n } else if (this._activeItemIndex === len - 1) {\n focusOnItem(0);\n }\n break;\n default:\n break;\n }\n }\n\n itemFocusHandler(e: CustomEvent) {\n const target = e.target as UDExAccordionItem;\n if (target) {\n this._activeItemIndex = this._items?.indexOf(target) ?? -1;\n }\n }\n\n updateAllExpandedStatus() {\n this._allExpanded = this._items.every(item => item.expanded);\n }\n\n get toggleAllText(): string {\n return this._allExpanded\n ? UDExAccordion.i18nBundle.getText(COLLAPSE_ALL)\n : UDExAccordion.i18nBundle.getText(EXPAND_ALL);\n }\n\n get items(): {item: UDExAccordionItem}[] {\n return this._items.map(el => {\n return {\n item: el,\n };\n });\n }\n}\n\nUDExAccordion.define();\n\nexport default UDExAccordion;\n"]}
1
+ {"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../src/Accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport \"@ui5/webcomponents-icons/dist/feeder-arrow.js\";\nimport { isEnter, isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport AccordionTemplate from \"./AccordionTemplate.js\";\nimport type UDExAccordionItem from \"./AccordionItem.js\";\nimport { COLLAPSE_ALL, EXPAND_ALL } from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport AccordionCss from \"./generated/themes/Accordion.css.js\";\n\ntype UDExAccordionToggleItemsEventDetail = {\n isOpen: boolean\n}\n\nexport enum UDExAccordionHeadlineLevel {\n H1 = \"H1\",\n H2 = \"H2\",\n H3 = \"H3\",\n H4 = \"H4\",\n H5 = \"H5\",\n H6 = \"H6\"\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-accordion</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Accordion.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-accordion\n * @public\n */\n@customElement({\n tag: \"udex-accordion\",\n renderer: jsxRenderer,\n styles: AccordionCss,\n template: AccordionTemplate,\n})\n\n/**\n * Triggered when the user clicks on the Expand/Collapse All button..\n *\n * @public\n */\n@event(\"toggle-items\", { bubbles: true })\n\nclass UDExAccordion extends UI5Element {\n eventDetails!: {\n \"toggle-items\": UDExAccordionToggleItemsEventDetail,\n };\n\n /**\n * Used internally to store expand/collapse button state.\n *\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _allExpanded!: boolean;\n\n /**\n * Defines if expandAll button should be displayed.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n hideExpandButton!: boolean;\n\n /**\n * Defines direction of the accordion component.\n *\n * @private\n */\n @property({ type: String })\n _direction?: string;\n\n /**\n * Defines the headline text of the accordion component.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n headline!: string;\n\n /**\n * Defines the semantic level of the headline.\n *\n * @default UDExAccordionHeadlineLevel.h3\n * @public\n */\n @property()\n headlineLevel: UDExAccordionHeadlineLevel = UDExAccordionHeadlineLevel.H3;\n\n /**\n * Slot for accordion items.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true, individualSlots: true })\n _items!: Array<UDExAccordionItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _activeItemIndex: number;\n\n constructor() {\n super();\n this._allExpanded = false;\n this._activeItemIndex = -1;\n }\n\n onEnterDOM() {\n this.updateAllExpandedStatus();\n }\n\n toggleAllHandler(e: Event) {\n e.preventDefault();\n this._allExpanded = !this._allExpanded;\n this.toggleOpenItems(this._allExpanded);\n this.fireDecoratorEvent(\"toggle-items\", { isOpen: this._allExpanded });\n }\n\n toggleOpenItems(isOpen: boolean) {\n this._items.forEach(item => {\n item.expanded = isOpen;\n });\n }\n\n toggleKeyAllHandler(e: KeyboardEvent) {\n if (isEnter(e) || isSpace(e)) {\n this.toggleAllHandler(e);\n }\n }\n\n keydownHandler(e: KeyboardEvent) {\n if (e.key !== \"Tab\") {\n e.preventDefault();\n }\n const len = this._items.length;\n const focusOnItem = (itemIndex: number) => {\n const item = this._items[itemIndex];\n this._activeItemIndex = itemIndex;\n (item?.shadowRoot?.querySelector(\".udex-accordion-item__header\") as HTMLElement)?.focus();\n };\n\n switch (e.key) {\n case \"Home\":\n focusOnItem(0);\n break;\n case \"End\":\n focusOnItem(len - 1);\n break;\n case \"ArrowUp\":\n if (this._activeItemIndex > 0) {\n focusOnItem(this._activeItemIndex - 1);\n } else if (this._activeItemIndex === 0) {\n focusOnItem(len - 1);\n }\n break;\n case \"ArrowDown\":\n if (this._activeItemIndex < len - 1) {\n focusOnItem(this._activeItemIndex + 1);\n } else if (this._activeItemIndex === len - 1) {\n focusOnItem(0);\n }\n break;\n default:\n break;\n }\n }\n\n itemFocusHandler(e: CustomEvent) {\n const target = e.target as UDExAccordionItem;\n if (target) {\n this._activeItemIndex = this._items?.indexOf(target) ?? -1;\n }\n }\n\n updateAllExpandedStatus() {\n this._allExpanded = this._items.every(item => item.expanded);\n }\n\n get toggleAllText(): string {\n return this._allExpanded\n ? UDExAccordion.i18nBundle.getText(COLLAPSE_ALL)\n : UDExAccordion.i18nBundle.getText(EXPAND_ALL);\n }\n\n get items(): {item: UDExAccordionItem}[] {\n return this._items.map(el => {\n return {\n item: el,\n };\n });\n }\n}\n\nUDExAccordion.define();\n\nexport default UDExAccordion;\n"]}