@sapudex/web-components 2.17.1 → 2.19.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 (349) hide show
  1. package/bundle.esm.js +3 -0
  2. package/config/dev-server.mjs +13 -9
  3. package/cypress/specs/Accordion.cy.tsx +0 -20
  4. package/cypress/specs/BusyIndicator.cy.tsx +10 -0
  5. package/cypress/specs/FilterMenu.cy.tsx +1 -1
  6. package/cypress/specs/Footer.cy.tsx +20 -1
  7. package/cypress/specs/ImageGridTicker.cy.tsx +208 -0
  8. package/cypress/specs/ImageGridTickerItem.cy.tsx +74 -0
  9. package/cypress/specs/RatingIndicator.cy.tsx +74 -0
  10. package/cypress/specs/Table.cy.tsx +1 -1
  11. package/cypress/support/component-imports.instrumented.ts +52 -46
  12. package/cypress/support/component-imports.src.ts +53 -47
  13. package/dist/Accordion.js +3 -3
  14. package/dist/Accordion.js.map +1 -1
  15. package/dist/AccordionItem.d.ts +6 -1
  16. package/dist/AccordionItem.js +1 -1
  17. package/dist/AccordionItem.js.map +1 -1
  18. package/dist/AccordionItemTemplate.js +1 -1
  19. package/dist/AccordionItemTemplate.js.map +1 -1
  20. package/dist/Assets.d.ts +1 -2
  21. package/dist/Assets.js +2 -2
  22. package/dist/Assets.js.map +1 -1
  23. package/dist/AssetsVariables.js +6 -0
  24. package/dist/AssetsVariables.js.map +1 -1
  25. package/dist/BusyIndicator.d.ts +22 -0
  26. package/dist/BusyIndicator.js +39 -0
  27. package/dist/BusyIndicator.js.map +1 -0
  28. package/dist/FilterMenu.js +2 -2
  29. package/dist/FilterMenu.js.map +1 -1
  30. package/dist/Footer.d.ts +13 -0
  31. package/dist/Footer.js +16 -0
  32. package/dist/Footer.js.map +1 -1
  33. package/dist/FooterTemplate.js +3 -3
  34. package/dist/FooterTemplate.js.map +1 -1
  35. package/dist/ImageGridTicker.d.ts +129 -0
  36. package/dist/ImageGridTicker.js +305 -0
  37. package/dist/ImageGridTicker.js.map +1 -0
  38. package/dist/ImageGridTickerItem.d.ts +50 -0
  39. package/dist/ImageGridTickerItem.js +61 -0
  40. package/dist/ImageGridTickerItem.js.map +1 -0
  41. package/dist/ImageGridTickerItemTemplate.d.ts +2 -0
  42. package/dist/ImageGridTickerItemTemplate.js +9 -0
  43. package/dist/ImageGridTickerItemTemplate.js.map +1 -0
  44. package/dist/ImageGridTickerTemplate.d.ts +2 -0
  45. package/dist/ImageGridTickerTemplate.js +14 -0
  46. package/dist/ImageGridTickerTemplate.js.map +1 -0
  47. package/dist/MediaPlayer.d.ts +1 -2
  48. package/dist/MediaPlayer.js +3 -8
  49. package/dist/MediaPlayer.js.map +1 -1
  50. package/dist/MediaPlayerTemplate.d.ts +3 -0
  51. package/dist/MediaPlayerTemplate.js +32 -0
  52. package/dist/MediaPlayerTemplate.js.map +1 -0
  53. package/dist/MediaPlayerVimeo.js +3 -4
  54. package/dist/MediaPlayerVimeo.js.map +1 -1
  55. package/dist/MediaPlayerVimeoTemplate.d.ts +2 -0
  56. package/dist/MediaPlayerVimeoTemplate.js +5 -0
  57. package/dist/MediaPlayerVimeoTemplate.js.map +1 -0
  58. package/dist/MediaPlayerYoutube.js +3 -3
  59. package/dist/MediaPlayerYoutube.js.map +1 -1
  60. package/dist/MediaPlayerYoutubeTemplate.d.ts +2 -0
  61. package/dist/MediaPlayerYoutubeTemplate.js +5 -0
  62. package/dist/MediaPlayerYoutubeTemplate.js.map +1 -0
  63. package/dist/Pagination.d.ts +3 -6
  64. package/dist/Pagination.js +5 -11
  65. package/dist/Pagination.js.map +1 -1
  66. package/dist/PaginationTemplate.d.ts +2 -0
  67. package/dist/PaginationTemplate.js +23 -0
  68. package/dist/PaginationTemplate.js.map +1 -0
  69. package/dist/RatingIndicator.d.ts +1 -1
  70. package/dist/RatingIndicator.js +6 -6
  71. package/dist/RatingIndicator.js.map +1 -1
  72. package/dist/RatingIndicatorTemplate.d.ts +2 -0
  73. package/dist/RatingIndicatorTemplate.js +13 -0
  74. package/dist/RatingIndicatorTemplate.js.map +1 -0
  75. package/dist/SelectBox.js +2 -0
  76. package/dist/SelectBox.js.map +1 -1
  77. package/dist/Table.js +2 -2
  78. package/dist/Table.js.map +1 -1
  79. package/dist/assets/InputComposition-DoqxipV9.js +1 -0
  80. package/dist/assets/InputSuggestions-EAcC3wZN.js +2 -0
  81. package/dist/assets/{ListItemStandardExpandableTextTemplate-DUnH9BGH.js → ListItemStandardExpandableTextTemplate-Bb5Y2JOR.js} +3 -3
  82. package/dist/assets/bundle.esm-BXDoCHfu.js +500 -0
  83. package/dist/assets/messagebundle_ar-CDVauCu2.js +1 -0
  84. package/dist/assets/messagebundle_ar-CH9uoq9g.js +1 -0
  85. package/dist/assets/messagebundle_bg-D9EStGhk.js +1 -0
  86. package/dist/assets/messagebundle_bg-Ns2ALSY2.js +1 -0
  87. package/dist/assets/messagebundle_ca-cMnWazdh.js +1 -0
  88. package/dist/assets/messagebundle_ca-v3O8CWC9.js +1 -0
  89. package/dist/assets/messagebundle_cnr-oRKAxWSt.js +1 -0
  90. package/dist/assets/messagebundle_cnr-uyge3vU_.js +1 -0
  91. package/dist/assets/messagebundle_cs-BL-46wSf.js +1 -0
  92. package/dist/assets/messagebundle_cs-D-wmquh4.js +1 -0
  93. package/dist/assets/messagebundle_cy-CNMNe2DY.js +1 -0
  94. package/dist/assets/messagebundle_cy-CZCpck3Z.js +1 -0
  95. package/dist/assets/messagebundle_da-38nADUJE.js +1 -0
  96. package/dist/assets/messagebundle_da-CkKInIrf.js +1 -0
  97. package/dist/assets/messagebundle_de-CN3Cg-Gc.js +1 -0
  98. package/dist/assets/messagebundle_de-DmraOZqt.js +1 -0
  99. package/dist/assets/messagebundle_el-BFRFxMEL.js +1 -0
  100. package/dist/assets/messagebundle_el-Zxg11y2d.js +1 -0
  101. package/dist/assets/messagebundle_en-BdiOvVBD.js +1 -0
  102. package/dist/assets/messagebundle_en-BhTYnZbC.js +1 -0
  103. package/dist/assets/messagebundle_en-H6ibWmd8.js +1 -0
  104. package/dist/assets/messagebundle_en_GB-CHl7nqmg.js +1 -0
  105. package/dist/assets/messagebundle_en_GB-DNER1sXC.js +1 -0
  106. package/dist/assets/messagebundle_en_US_sappsd-A24jipei.js +1 -0
  107. package/dist/assets/messagebundle_en_US_sappsd-DRY0RcFI.js +1 -0
  108. package/dist/assets/messagebundle_en_US_saprigi-B6BJ2fjK.js +1 -0
  109. package/dist/assets/messagebundle_en_US_saprigi-DrIdR2OA.js +1 -0
  110. package/dist/assets/messagebundle_en_US_saptrc-DhCdjVNQ.js +1 -0
  111. package/dist/assets/messagebundle_en_US_saptrc-eaUqSl9-.js +1 -0
  112. package/dist/assets/messagebundle_es-D5nxxweU.js +1 -0
  113. package/dist/assets/messagebundle_es-DjKiFArz.js +1 -0
  114. package/dist/assets/messagebundle_es_MX-Bl6mL4Gm.js +1 -0
  115. package/dist/assets/messagebundle_es_MX-j4O3ktQl.js +1 -0
  116. package/dist/assets/messagebundle_et-BnJvORLZ.js +1 -0
  117. package/dist/assets/messagebundle_et-C4MZaBvU.js +1 -0
  118. package/dist/assets/messagebundle_fi-CilvS7NU.js +1 -0
  119. package/dist/assets/messagebundle_fi-lfNyCHae.js +1 -0
  120. package/dist/assets/messagebundle_fr-CQ9l7Sw-.js +1 -0
  121. package/dist/assets/messagebundle_fr-ChaecN7D.js +1 -0
  122. package/dist/assets/messagebundle_fr_CA-BiszoJL1.js +1 -0
  123. package/dist/assets/messagebundle_fr_CA-ClnSTsg4.js +1 -0
  124. package/dist/assets/messagebundle_hi-B06bgABi.js +1 -0
  125. package/dist/assets/messagebundle_hi-B4f1dtl5.js +1 -0
  126. package/dist/assets/messagebundle_hr-BsOekihu.js +1 -0
  127. package/dist/assets/messagebundle_hr-DSTrAQyP.js +1 -0
  128. package/dist/assets/messagebundle_hu-AQQHZ70T.js +1 -0
  129. package/dist/assets/messagebundle_hu-BHcMtlLL.js +1 -0
  130. package/dist/assets/messagebundle_id-CFalTccS.js +1 -0
  131. package/dist/assets/messagebundle_id-CRwRJl1J.js +1 -0
  132. package/dist/assets/messagebundle_it-DB8xkT1m.js +1 -0
  133. package/dist/assets/messagebundle_it-iOLGro27.js +1 -0
  134. package/dist/assets/messagebundle_iw-BIOuaDHS.js +1 -0
  135. package/dist/assets/messagebundle_iw-ayxle34r.js +1 -0
  136. package/dist/assets/messagebundle_ja-OWv_hkCF.js +1 -0
  137. package/dist/assets/messagebundle_ja-TwMnsX09.js +1 -0
  138. package/dist/assets/messagebundle_kk-BS30sa4p.js +1 -0
  139. package/dist/assets/messagebundle_kk-DhQM-S2v.js +1 -0
  140. package/dist/assets/messagebundle_ko-BHkAwaFF.js +1 -0
  141. package/dist/assets/messagebundle_ko-CXyX3bMY.js +1 -0
  142. package/dist/assets/messagebundle_lt-2Ha0Zkp4.js +1 -0
  143. package/dist/assets/messagebundle_lt-BpZaKuUr.js +1 -0
  144. package/dist/assets/messagebundle_lv-rwRjOWkA.js +1 -0
  145. package/dist/assets/messagebundle_lv-tJm-NcJt.js +1 -0
  146. package/dist/assets/messagebundle_mk-Bvnsj6mW.js +1 -0
  147. package/dist/assets/messagebundle_mk-CcQTgbUA.js +1 -0
  148. package/dist/assets/messagebundle_ms-DvrAqqcA.js +1 -0
  149. package/dist/assets/messagebundle_ms-v1iRMlhZ.js +1 -0
  150. package/dist/assets/messagebundle_nl-CBTv22ZS.js +1 -0
  151. package/dist/assets/messagebundle_nl-DHvNmpQL.js +1 -0
  152. package/dist/assets/messagebundle_no-CuWL-QZt.js +1 -0
  153. package/dist/assets/messagebundle_no-hc8LfCOM.js +1 -0
  154. package/dist/assets/messagebundle_pl-C6B67me2.js +1 -0
  155. package/dist/assets/messagebundle_pl-hh7tWX9o.js +1 -0
  156. package/dist/assets/messagebundle_pt-D-AHlB8y.js +1 -0
  157. package/dist/assets/messagebundle_pt-D8iDr9U7.js +1 -0
  158. package/dist/assets/messagebundle_pt_PT-Bj7dZnQ9.js +1 -0
  159. package/dist/assets/messagebundle_pt_PT-DV-pULKY.js +1 -0
  160. package/dist/assets/messagebundle_ro-UECV-Atd.js +1 -0
  161. package/dist/assets/messagebundle_ro-z0yjCDrM.js +1 -0
  162. package/dist/assets/messagebundle_ru-BBC8LnLh.js +1 -0
  163. package/dist/assets/messagebundle_ru-zm7B9n87.js +1 -0
  164. package/dist/assets/messagebundle_sh-ByDIxvq3.js +1 -0
  165. package/dist/assets/messagebundle_sh-CK1rAFs-.js +1 -0
  166. package/dist/assets/messagebundle_sk-BTvYn1Yb.js +1 -0
  167. package/dist/assets/messagebundle_sk-DJps-B07.js +1 -0
  168. package/dist/assets/messagebundle_sl-0FOODTiB.js +1 -0
  169. package/dist/assets/messagebundle_sl-P0U3pDjV.js +1 -0
  170. package/dist/assets/messagebundle_sr-BGu5zwgU.js +1 -0
  171. package/dist/assets/messagebundle_sr-CG9T0bXH.js +1 -0
  172. package/dist/assets/messagebundle_sv-Cl8CaUzX.js +1 -0
  173. package/dist/assets/messagebundle_sv-D-9GhRzG.js +1 -0
  174. package/dist/assets/messagebundle_th-BUmGNQWk.js +1 -0
  175. package/dist/assets/messagebundle_th-CBE63UoI.js +1 -0
  176. package/dist/assets/messagebundle_tr-CKJwjJhQ.js +1 -0
  177. package/dist/assets/messagebundle_tr-io8qsWwA.js +1 -0
  178. package/dist/assets/messagebundle_uk-DHSEF0TD.js +1 -0
  179. package/dist/assets/messagebundle_uk-PTyymK4i.js +1 -0
  180. package/dist/assets/messagebundle_vi-D2ZgzSpx.js +1 -0
  181. package/dist/assets/messagebundle_vi-SGqRlDXf.js +1 -0
  182. package/dist/assets/messagebundle_zh_CN-CjpQTGvp.js +1 -0
  183. package/dist/assets/messagebundle_zh_CN-DDFdOOoj.js +1 -0
  184. package/dist/assets/messagebundle_zh_TW-8M6mp9Ec.js +1 -0
  185. package/dist/assets/messagebundle_zh_TW-CjV5SF65.js +1 -0
  186. package/dist/assets/parameters-bundle.css-7tmaWxIc.js +2 -0
  187. package/dist/assets/parameters-bundle.css-BERBdAGd.js +2 -0
  188. package/dist/assets/parameters-bundle.css-B_2Jldx4.js +2 -0
  189. package/dist/assets/parameters-bundle.css-BbhFHnRW.js +2 -0
  190. package/dist/assets/parameters-bundle.css-Bg4Huwh4.js +2 -0
  191. package/dist/assets/parameters-bundle.css-BwKgmVCr.js +2 -0
  192. package/dist/assets/parameters-bundle.css-C759-AfS.js +2 -0
  193. package/dist/assets/parameters-bundle.css-CCDcKh9J.js +2 -0
  194. package/dist/assets/parameters-bundle.css-COmXsTqR.js +2 -0
  195. package/dist/assets/parameters-bundle.css-CPZYPVEO.js +2 -0
  196. package/dist/assets/parameters-bundle.css-C_z8R1zV.js +2 -0
  197. package/dist/assets/parameters-bundle.css-CuV0KqCS.js +2 -0
  198. package/dist/assets/parameters-bundle.css-DT8OC7CO.js +2 -0
  199. package/dist/assets/parameters-bundle.css-Df2zY3XY.js +2 -0
  200. package/dist/assets/parameters-bundle.css-H0NCnWYS.js +2 -0
  201. package/dist/assets/parameters-bundle.css-pC6uofhy.js +2 -0
  202. package/dist/css/themes/AccordionItem.css +1 -1
  203. package/dist/css/themes/Badge.css +1 -1
  204. package/dist/css/themes/Button.css +1 -1
  205. package/dist/css/themes/CountrySelector.css +1 -1
  206. package/dist/css/themes/DatePickerPopover.css +1 -1
  207. package/dist/css/themes/ImageGridTicker.css +1 -0
  208. package/dist/css/themes/ImageGridTickerItem.css +1 -0
  209. package/dist/css/themes/MediaPlayer.css +1 -1
  210. package/dist/css/themes/RatingIndicator.css +1 -1
  211. package/dist/css/themes/Slider.css +1 -1
  212. package/dist/css/themes/Upload.css +1 -1
  213. package/dist/custom-elements-internal.json +3136 -2863
  214. package/dist/custom-elements.json +1548 -1309
  215. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  216. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  217. package/dist/generated/i18n/i18n-defaults.js +3 -1
  218. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  219. package/dist/generated/templates/SearchTemplate.lit.js +1 -1
  220. package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
  221. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +1 -1
  222. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  223. package/dist/generated/templates/TableTemplate.lit.js +1 -1
  224. package/dist/generated/templates/TableTemplate.lit.js.map +1 -1
  225. package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
  226. package/dist/generated/themes/AccordionItem.css.js +1 -1
  227. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  228. package/dist/generated/themes/Badge.css.d.ts +1 -1
  229. package/dist/generated/themes/Badge.css.js +1 -1
  230. package/dist/generated/themes/Badge.css.js.map +1 -1
  231. package/dist/generated/themes/Button.css.d.ts +1 -1
  232. package/dist/generated/themes/Button.css.js +1 -1
  233. package/dist/generated/themes/Button.css.js.map +1 -1
  234. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  235. package/dist/generated/themes/CountrySelector.css.js +1 -1
  236. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  237. package/dist/generated/themes/DatePickerPopover.css.d.ts +1 -1
  238. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  239. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  240. package/dist/generated/themes/ImageGridTicker.css.d.ts +2 -0
  241. package/dist/generated/themes/ImageGridTicker.css.js +8 -0
  242. package/dist/generated/themes/ImageGridTicker.css.js.map +1 -0
  243. package/dist/generated/themes/ImageGridTickerItem.css.d.ts +2 -0
  244. package/dist/generated/themes/ImageGridTickerItem.css.js +8 -0
  245. package/dist/generated/themes/ImageGridTickerItem.css.js.map +1 -0
  246. package/dist/generated/themes/MediaPlayer.css.d.ts +1 -1
  247. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  248. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  249. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  250. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  251. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  252. package/dist/generated/themes/Slider.css.d.ts +1 -1
  253. package/dist/generated/themes/Slider.css.js +1 -1
  254. package/dist/generated/themes/Slider.css.js.map +1 -1
  255. package/dist/generated/themes/Upload.css.d.ts +1 -1
  256. package/dist/generated/themes/Upload.css.js +1 -1
  257. package/dist/generated/themes/Upload.css.js.map +1 -1
  258. package/dist/messagebundle.properties +4 -0
  259. package/dist/messagebundle_en.properties +2 -0
  260. package/dist/types/BadgeDesign.d.ts +19 -1
  261. package/dist/types/BadgeDesign.js +42 -1
  262. package/dist/types/BadgeDesign.js.map +1 -1
  263. package/dist/vscode.html-custom-data.json +53 -2
  264. package/dist/web-types.json +118 -4
  265. package/package-scripts.cjs +4 -2
  266. package/package.json +9 -9
  267. package/src/Accordion.ts +3 -3
  268. package/src/AccordionItem.ts +8 -2
  269. package/src/AccordionItemTemplate.tsx +1 -0
  270. package/src/Assets.ts +2 -2
  271. package/src/AssetsVariables.ts +6 -0
  272. package/src/BusyIndicator.ts +33 -0
  273. package/src/FilterMenu.ts +2 -2
  274. package/src/Footer.ts +28 -0
  275. package/src/FooterTemplate.tsx +30 -15
  276. package/src/ImageGridTicker.ts +355 -0
  277. package/src/ImageGridTickerItem.ts +81 -0
  278. package/src/ImageGridTickerItemTemplate.tsx +28 -0
  279. package/src/ImageGridTickerTemplate.tsx +50 -0
  280. package/src/MediaPlayer.ts +6 -9
  281. package/src/MediaPlayerTemplate.tsx +102 -0
  282. package/src/MediaPlayerVimeo.ts +4 -4
  283. package/src/MediaPlayerVimeoTemplate.tsx +19 -0
  284. package/src/MediaPlayerYoutube.ts +3 -3
  285. package/src/MediaPlayerYoutubeTemplate.tsx +7 -0
  286. package/src/Pagination.ts +8 -11
  287. package/src/PaginationTemplate.tsx +80 -0
  288. package/src/RatingIndicator.ts +7 -7
  289. package/src/RatingIndicatorTemplate.tsx +53 -0
  290. package/src/Search.hbs +0 -1
  291. package/src/SearchableListBase.hbs +2 -2
  292. package/src/SelectBox.ts +2 -0
  293. package/src/Table.hbs +2 -2
  294. package/src/Table.ts +2 -2
  295. package/src/generated/i18n/i18n-defaults.ts +2 -2
  296. package/src/generated/templates/SearchTemplate.lit.ts +1 -1
  297. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +1 -1
  298. package/src/generated/templates/TableTemplate.lit.ts +1 -1
  299. package/src/generated/themes/AccordionItem.css.ts +1 -1
  300. package/src/generated/themes/Badge.css.ts +1 -1
  301. package/src/generated/themes/Button.css.ts +1 -1
  302. package/src/generated/themes/CountrySelector.css.ts +1 -1
  303. package/src/generated/themes/DatePickerPopover.css.ts +1 -1
  304. package/src/generated/themes/ImageGridTicker.css.ts +9 -0
  305. package/src/generated/themes/ImageGridTickerItem.css.ts +9 -0
  306. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  307. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  308. package/src/generated/themes/Slider.css.ts +1 -1
  309. package/src/generated/themes/Upload.css.ts +1 -1
  310. package/src/i18n/messagebundle.properties +4 -0
  311. package/src/i18n/messagebundle_en.properties +2 -0
  312. package/src/themes/AccordionItem.css +11 -2
  313. package/src/themes/Badge.css +206 -3
  314. package/src/themes/Button.css +1 -0
  315. package/src/themes/CountrySelector.css +2 -2
  316. package/src/themes/DatePickerPopover.css +3 -2
  317. package/src/themes/ImageGridTicker.css +134 -0
  318. package/src/themes/ImageGridTickerItem.css +52 -0
  319. package/src/themes/MediaPlayer.css +6 -7
  320. package/src/themes/Upload.css +4 -0
  321. package/src/types/BadgeDesign.ts +45 -3
  322. package/dist/assets/InputSuggestions-Bxc8oM64.js +0 -2
  323. package/dist/assets/bundle.esm-qoZLPRl7.js +0 -492
  324. package/dist/assets/messagebundle_en-D6cJIiUq.js +0 -1
  325. package/dist/generated/templates/MediaPlayerTemplate.lit.d.ts +0 -3
  326. package/dist/generated/templates/MediaPlayerTemplate.lit.js +0 -16
  327. package/dist/generated/templates/MediaPlayerTemplate.lit.js.map +0 -1
  328. package/dist/generated/templates/MediaPlayerVimeoTemplate.lit.d.ts +0 -3
  329. package/dist/generated/templates/MediaPlayerVimeoTemplate.lit.js +0 -7
  330. package/dist/generated/templates/MediaPlayerVimeoTemplate.lit.js.map +0 -1
  331. package/dist/generated/templates/MediaPlayerYoutubeTemplate.lit.d.ts +0 -3
  332. package/dist/generated/templates/MediaPlayerYoutubeTemplate.lit.js +0 -7
  333. package/dist/generated/templates/MediaPlayerYoutubeTemplate.lit.js.map +0 -1
  334. package/dist/generated/templates/PaginationTemplate.lit.d.ts +0 -3
  335. package/dist/generated/templates/PaginationTemplate.lit.js +0 -11
  336. package/dist/generated/templates/PaginationTemplate.lit.js.map +0 -1
  337. package/dist/generated/templates/RatingIndicatorTemplate.lit.d.ts +0 -3
  338. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +0 -17
  339. package/dist/generated/templates/RatingIndicatorTemplate.lit.js.map +0 -1
  340. package/src/MediaPlayer.hbs +0 -73
  341. package/src/MediaPlayerVimeo.hbs +0 -16
  342. package/src/MediaPlayerYoutube.hbs +0 -1
  343. package/src/Pagination.hbs +0 -54
  344. package/src/RatingIndicator.hbs +0 -53
  345. package/src/generated/templates/MediaPlayerTemplate.lit.ts +0 -20
  346. package/src/generated/templates/MediaPlayerVimeoTemplate.lit.ts +0 -11
  347. package/src/generated/templates/MediaPlayerYoutubeTemplate.lit.ts +0 -11
  348. package/src/generated/templates/PaginationTemplate.lit.ts +0 -15
  349. package/src/generated/templates/RatingIndicatorTemplate.lit.ts +0 -21
@@ -16,6 +16,7 @@ import UDExAccordionItem from "./AccordionItem.js";
16
16
  import UDExButton from "./Button.js";
17
17
  import UDExButtonDesign from "./types/ButtonDesign.js";
18
18
  import UDExButtonSize from "./types/ButtonSize.js";
19
+ import type { AriaRole } from "@ui5/webcomponents-base";
19
20
 
20
21
  export default function FooterTemplate(this: Footer) {
21
22
  const rootClass = "udex-footer";
@@ -178,7 +179,7 @@ export default function FooterTemplate(this: Footer) {
178
179
  <span className={`${rootClass}__copyright-text`}>{this.copyrightText}</span>
179
180
  </div>
180
181
 
181
- {this.socialLinksArray.length > 0 && (
182
+ {(this.socialLinksArray.length > 0 || this.hasSocialLinksSlot) && (
182
183
  <ul className={`${rootClass}__social-container`}>
183
184
  {this.socialLinksArray.map((social, index) => (
184
185
  <UDExSocialMediaButton
@@ -193,6 +194,13 @@ export default function FooterTemplate(this: Footer) {
193
194
  onui5-click={this._onSocialMediaLinkClick}>
194
195
  </UDExSocialMediaButton>
195
196
  ))}
197
+ {this.hasSocialLinksSlot && (
198
+ <>
199
+ {this.customSocialLinks.map(link =>
200
+ <slot name={link._individualSlot}></slot>
201
+ )}
202
+ </>
203
+ )}
196
204
  </ul>
197
205
  )}
198
206
  </div>
@@ -203,8 +211,7 @@ export default function FooterTemplate(this: Footer) {
203
211
  onClick={this.onBackToTopClick}
204
212
  design={UDExButtonDesign.Tertiary}
205
213
  size={UDExButtonSize.Large}
206
- tooltip={this.backToTopTitle}
207
- accessibleName={this.backToTopTitle}>
214
+ tooltip={this.backToTopTitle}>
208
215
  </UDExButton>
209
216
  </footer>
210
217
  );
@@ -215,7 +222,7 @@ function mobileNavigation(this: Footer, rootClass: string) {
215
222
  <UDExAccordion class={`${rootClass}__accordion`}>
216
223
  {this.quickLinksArray.length > 0 && (
217
224
  <>
218
- <UDExAccordionItem label={this._quickLinksTitle} class={`${rootClass}__action-item`}>
225
+ <UDExAccordionItem onAccordionItemClick={this.handleAccordionItemClick} label={this._quickLinksTitle} class={`${rootClass}__action-item`}>
219
226
  <ul className={`${rootClass}__links-list udex-footer__links-list--mobile`}>
220
227
  {this.quickLinksArray.map((link, index) => (
221
228
  <li key={index}>
@@ -224,7 +231,8 @@ function mobileNavigation(this: Footer, rootClass: string) {
224
231
  aria-describedby={`${rootClass}__quick-links`}
225
232
  href={link.url}
226
233
  data-id={link.id}
227
- onClick={this._onQuickLinksClick}>
234
+ onClick={this._onQuickLinksClick}
235
+ {...(link.role ? { "role": link.role as AriaRole } : {})}>
228
236
  {link.title}
229
237
  </a>
230
238
  </li>
@@ -239,7 +247,7 @@ function mobileNavigation(this: Footer, rootClass: string) {
239
247
 
240
248
  {this.trendingLinksArray.length > 0 && (
241
249
  <>
242
- <UDExAccordionItem label={this._trendingTitle} class={`${rootClass}__action-item`}>
250
+ <UDExAccordionItem onAccordionItemClick={this.handleAccordionItemClick} label={this._trendingTitle} class={`${rootClass}__action-item`}>
243
251
  <ul className={`${rootClass}__links-list ${rootClass}__links-list--mobile`}>
244
252
  {this.trendingLinksArray.map((link, index) => (
245
253
  <li key={index}>
@@ -248,7 +256,8 @@ function mobileNavigation(this: Footer, rootClass: string) {
248
256
  aria-describedby={`${rootClass}__footer__trending`}
249
257
  href={link.url}
250
258
  data-id={link.id}
251
- onClick={this._onTrendingClick}>
259
+ onClick={this._onTrendingClick}
260
+ {...(link.role ? { "role": link.role as AriaRole } : {})}>
252
261
  {link.title}
253
262
  </a>
254
263
  </li>
@@ -263,7 +272,7 @@ function mobileNavigation(this: Footer, rootClass: string) {
263
272
 
264
273
  {this.aboutLinksArray.length > 0 && (
265
274
  <>
266
- <UDExAccordionItem label={this._aboutSapTitle} class={`${rootClass}__action-item`}>
275
+ <UDExAccordionItem onAccordionItemClick={this.handleAccordionItemClick} label={this._aboutSapTitle} class={`${rootClass}__action-item`}>
267
276
  <ul className={`${rootClass}__links-list ${rootClass}__links-list--mobile`}>
268
277
  {this.aboutLinksArray.map((link, index) => (
269
278
  <li key={index}>
@@ -272,7 +281,8 @@ function mobileNavigation(this: Footer, rootClass: string) {
272
281
  aria-describedby={`${rootClass}__about`}
273
282
  href={link.url}
274
283
  data-id={link.id}
275
- onClick={this._onAboutSapClick}>
284
+ onClick={this._onAboutSapClick}
285
+ {...(link.role ? { "role": link.role as AriaRole } : {})}>
276
286
  {link.title}
277
287
  </a>
278
288
  </li>
@@ -287,7 +297,7 @@ function mobileNavigation(this: Footer, rootClass: string) {
287
297
 
288
298
  {this.siteInformationLinksArray.length > 0 && (
289
299
  <>
290
- <UDExAccordionItem label={this._siteInformationTitle} class={`${rootClass}__action-item`}>
300
+ <UDExAccordionItem onAccordionItemClick={this.handleAccordionItemClick} label={this._siteInformationTitle} class={`${rootClass}__action-item`}>
291
301
  <ul className={`${rootClass}__links-list rootClass__links-list--mobile`}>
292
302
  {this.siteInformationLinksArray.map((link, index) => (
293
303
  <li key={index}>
@@ -296,7 +306,8 @@ function mobileNavigation(this: Footer, rootClass: string) {
296
306
  aria-describedby={`${rootClass}__site-information`}
297
307
  href={link.url}
298
308
  data-id={link.id}
299
- onClick={this._onSiteInformationClick}>
309
+ onClick={this._onSiteInformationClick}
310
+ {...(link.role ? { "role": link.role as AriaRole } : {})}>
300
311
  {link.title}
301
312
  </a>
302
313
  </li>
@@ -329,7 +340,8 @@ function desktopNavigation(this: Footer, rootClass: string) {
329
340
  aria-describedby={`${rootClass}__quick-links`}
330
341
  data-id={link.id}
331
342
  href={link.url}
332
- onClick={this._onQuickLinksClick}>
343
+ onClick={this._onQuickLinksClick}
344
+ {...(link.role ? { "role": link.role as AriaRole } : {})}>
333
345
  {link.title}
334
346
  </a>
335
347
  </li>
@@ -352,7 +364,8 @@ function desktopNavigation(this: Footer, rootClass: string) {
352
364
  aria-describedby={`${rootClass}__footer__trending`}
353
365
  data-id={link.id}
354
366
  href={link.url}
355
- onClick={this._onTrendingClick}>
367
+ onClick={this._onTrendingClick}
368
+ {...(link.role ? { "role": link.role as AriaRole } : {})}>
356
369
  {link.title}
357
370
  </a>
358
371
  </li>
@@ -375,7 +388,8 @@ function desktopNavigation(this: Footer, rootClass: string) {
375
388
  aria-describedby={`${rootClass}__about`}
376
389
  data-id={link.id}
377
390
  href={link.url}
378
- onClick={this._onAboutSapClick}>
391
+ onClick={this._onAboutSapClick}
392
+ {...(link.role ? { "role": link.role as AriaRole } : {})}>
379
393
  {link.title}
380
394
  </a>
381
395
  </li>
@@ -398,7 +412,8 @@ function desktopNavigation(this: Footer, rootClass: string) {
398
412
  aria-describedby={`${rootClass}__site-information`}
399
413
  data-id={link.id}
400
414
  href={link.url}
401
- onClick={this._onSiteInformationClick}>
415
+ onClick={this._onSiteInformationClick}
416
+ {...(link.role ? { "role": link.role as AriaRole } : {})}>
402
417
  {link.title}
403
418
  </a>
404
419
  </li>
@@ -0,0 +1,355 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
4
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
5
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
6
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
7
+ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
8
+ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
10
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
11
+ import { isDesktop } from "@ui5/webcomponents-base/Device.js";
12
+ import { isLeft, isRight } from "@ui5/webcomponents-base/dist/Keys.js";
13
+ import { PAUSE_BUTTON_ACCESSIBLE_NAME, PLAY_BUTTON_ACCESSIBLE_NAME } from "./generated/i18n/i18n-defaults.js";
14
+ import { BreakpointUtils } from "./utils/Breakpoints.js";
15
+ import type UDExImageGridTickerItem from "./ImageGridTickerItem.js";
16
+ import ImageGridTickerItem from "./ImageGridTickerItem.js";
17
+ import ImageGridTickerTemplate from "./ImageGridTickerTemplate.js";
18
+
19
+ // Styles
20
+ import ImageGridTickerCss from "./generated/themes/ImageGridTicker.css.js";
21
+
22
+ export enum UDExImageGridTickerVariable {
23
+ itemGaps = "--udex-image-grid-ticker-item-gaps",
24
+ itemWidth = "--udex-image-grid-ticker-item-width",
25
+ }
26
+
27
+ type UDExImageGridTickerPlayBtnClickEventDetail = {
28
+ isPaused: boolean;
29
+ }
30
+
31
+ /**
32
+ * @class
33
+ *
34
+ * <h3 class="comment-api-title">Overview</h3>
35
+ *
36
+ *
37
+ * <h3>Usage</h3>
38
+ *
39
+ * For the <code>udex-image-grid-ticker</code>
40
+ * <h3>ES6 Module Import</h3>
41
+ *
42
+ * <code>import "@sapudex/web-components/dist/ImageGridTicker.js";</code>
43
+ *
44
+ * @constructor
45
+ * @extends UI5Element
46
+ * @public
47
+ */
48
+ @customElement({
49
+ tag: "udex-image-grid-ticker",
50
+ renderer: jsxRenderer,
51
+ styles: ImageGridTickerCss,
52
+ template: ImageGridTickerTemplate,
53
+ dependencies: [ImageGridTickerItem],
54
+ })
55
+
56
+ /**
57
+ * Fired event when the user click on a play/paused button.
58
+ *
59
+ * @public
60
+ */
61
+ @event("play-button-click", { bubbles: true })
62
+
63
+ class UDExImageGridTicker extends UI5Element {
64
+ eventDetails!: {
65
+ "play-button-click": UDExImageGridTickerPlayBtnClickEventDetail;
66
+ };
67
+
68
+ /**
69
+ * Slot for image grid ticker items.
70
+ *
71
+ * @slot
72
+ * @public
73
+ */
74
+ @slot({ type: HTMLElement, "default": true, individualSlots: true })
75
+ items!: Array<UDExImageGridTickerItem>;
76
+
77
+ /**
78
+ * Grayscale mode enhances visual harmony and can be used for minimal,
79
+ * professional layouts or to de-emphasize logos.
80
+ *
81
+ * @default false
82
+ * @public
83
+ */
84
+ @property({ type: Boolean })
85
+ grayscale = false;
86
+
87
+ /**
88
+ * Indicates whether the image grid ticker is scrollable.
89
+ *
90
+ * @default false
91
+ * @private
92
+ */
93
+ @property({ type: Boolean })
94
+ _isScrollable = false;
95
+
96
+ /**
97
+ * Indicates whether the screen size is small.
98
+ *
99
+ * @default false
100
+ * @private
101
+ */
102
+ @property({ type: Boolean })
103
+ _isSmallScreen = false;
104
+
105
+ /**
106
+ * Indicates whether the animation is paused.
107
+ *
108
+ * @default false
109
+ * @private
110
+ */
111
+ @property({ type: Boolean })
112
+ _isPaused = false;
113
+
114
+ /**
115
+ * Indicates focus in state.
116
+ *
117
+ * @default false
118
+ * @private
119
+ */
120
+ @property({ type: Boolean })
121
+ _isFocusIn: boolean = false;
122
+
123
+ /**
124
+ * Indicates mobile view.
125
+ *
126
+ * @default false
127
+ * @private
128
+ */
129
+ @property({ type: Boolean })
130
+ _isMobileView: boolean = false;
131
+
132
+ /**
133
+ * Defines direction of the component.
134
+ *
135
+ * @default undefined
136
+ * @private
137
+ */
138
+ @property({ type: String })
139
+ _direction!: string;
140
+
141
+ _isPlayBtnClicked: boolean = false;
142
+ _isMouseDown: boolean = false;
143
+ _handleResizeBound: ResizeObserverCallback;
144
+
145
+ @i18n("@sapudex/web-components")
146
+ static i18nBundle: I18nBundle;
147
+
148
+ constructor() {
149
+ super();
150
+ this._isMobileView = !this.isAtLeastBreakpointM;
151
+ this._handleResizeBound = this._handleResize.bind(this);
152
+ }
153
+
154
+ onAfterRendering(): void {
155
+ if (this._isMobileView) {
156
+ this._handleMobileView();
157
+ return;
158
+ }
159
+
160
+ this._handleDesktopView();
161
+ }
162
+
163
+ onEnterDOM(): void {
164
+ ResizeHandler.register(this, this._handleResizeBound);
165
+ if (isDesktop()) {
166
+ this.setAttribute("desktop", "");
167
+ }
168
+ }
169
+
170
+ onExitDOM(): void {
171
+ ResizeHandler.deregister(this, this._handleResizeBound);
172
+ }
173
+
174
+ _handleResize(): void {
175
+ this._isMobileView = !this.isAtLeastBreakpointM;
176
+ this._checkScrollable();
177
+ }
178
+
179
+ _checkScrollable(): void {
180
+ if (!this.grid || !this.track || this._isMobileView) {
181
+ this._isScrollable = false;
182
+ return;
183
+ }
184
+
185
+ const { width: itemWidth, gaps: itemGaps } = this.itemDimensions;
186
+ const totalItemWidth = itemWidth + itemGaps;
187
+ const totalWidth = this.items.length * totalItemWidth;
188
+
189
+ this._isScrollable = totalWidth > this.grid.offsetWidth;
190
+ }
191
+
192
+ _startAnimation(): void {
193
+ if (this._isScrollable && !this._isPlayBtnClicked && !this._isMobileView) {
194
+ this._isPaused = false;
195
+ }
196
+ }
197
+
198
+ _stopAnimation(): void {
199
+ if (this._isScrollable && !this._isMobileView) {
200
+ this._isPaused = true;
201
+ }
202
+ }
203
+
204
+ _toggleAnimation(): void {
205
+ this._isPlayBtnClicked = !this._isPlayBtnClicked;
206
+ if (this._isPaused) {
207
+ this._startAnimation();
208
+ } else {
209
+ this._stopAnimation();
210
+ }
211
+ }
212
+
213
+ _onFocusIn(): void {
214
+ if (this._isMouseDown || !this._isScrollable) {
215
+ return;
216
+ }
217
+
218
+ this._isFocusIn = true;
219
+ this._stopAnimation();
220
+
221
+ const focusedItem = this.trackItems[this.focusedIndex];
222
+ const isLastItem = this.focusedIndex === this.trackItems.length - 1;
223
+ const { right, left } = focusedItem.getBoundingClientRect();
224
+ const windowWidth = window.innerWidth || document.documentElement.clientWidth;
225
+ const isPartiallyVisible = right > 0 && left < windowWidth;
226
+
227
+ if (isPartiallyVisible) {
228
+ focusedItem.scrollIntoView({
229
+ behavior: "smooth",
230
+ block: "nearest",
231
+ inline: "center",
232
+ });
233
+ }
234
+
235
+ if (isLastItem) {
236
+ this._focusLastItem();
237
+ }
238
+ }
239
+
240
+ _onFocusOut(): void {
241
+ this._isFocusIn = false;
242
+ this._startAnimation();
243
+ }
244
+
245
+ _onKeyDown(e: KeyboardEvent): void {
246
+ if (isLeft(e) || isRight(e)) {
247
+ e.preventDefault();
248
+ const direction = (isLeft(e) && !this.isRtl) || (isRight(e) && this.isRtl) ? -1 : 1;
249
+ const index = this.focusedIndex + direction;
250
+
251
+ if (index >= 0 && index < this.trackItems.length) {
252
+ this._focusItem(this.trackItems[index]);
253
+ }
254
+ }
255
+ }
256
+
257
+ _onMouseDown(): void {
258
+ this._isMouseDown = true;
259
+ }
260
+
261
+ _onMouseUp(): void {
262
+ this._isMouseDown = false;
263
+ }
264
+
265
+ _focusLastItem(): void {
266
+ const lastItem = this.trackItems[this.items.length - 1];
267
+ this._focusItem(lastItem);
268
+ lastItem.scrollIntoView({
269
+ behavior: "smooth",
270
+ block: "nearest",
271
+ });
272
+ }
273
+
274
+ _handleMobileView(): void {
275
+ this._isScrollable = false;
276
+ this._stopAnimation();
277
+ }
278
+
279
+ _handleDesktopView(): void {
280
+ this._handleDirection();
281
+ this._checkScrollable();
282
+ if (this._isScrollable && !this._isPaused && !this._isMobileView) {
283
+ this._startAnimation();
284
+ } else {
285
+ this._stopAnimation();
286
+ }
287
+ }
288
+
289
+ _focusItem(item: HTMLElement): void {
290
+ const link = item.shadowRoot?.querySelector(".udex-image-grid-ticker-item__link") as HTMLElement;
291
+ link.focus();
292
+ }
293
+
294
+ _handleDirection(): void {
295
+ const directionStyles = window.getComputedStyle(this).getPropertyValue("direction");
296
+ this._direction = directionStyles || "ltr";
297
+ }
298
+
299
+ _onPlayButtonClick(): void {
300
+ this._toggleAnimation();
301
+ this._firePlayButtonClickEvent();
302
+ }
303
+
304
+ _firePlayButtonClickEvent(): void {
305
+ this.fireDecoratorEvent("play-button-click", {
306
+ isPaused: this._isPaused,
307
+ });
308
+ }
309
+
310
+ _getPropertyValues(variable: string): number {
311
+ const itemStyles = window.getComputedStyle(this.items[0]);
312
+ return parseInt(itemStyles.getPropertyValue(variable));
313
+ }
314
+
315
+ get itemDimensions(): { width: number; gaps: number } {
316
+ const width = this._getPropertyValues(UDExImageGridTickerVariable.itemWidth);
317
+ const gaps = this._getPropertyValues(UDExImageGridTickerVariable.itemGaps) * 2;
318
+ return { width, gaps };
319
+ }
320
+
321
+ get trackItems(): HTMLElement[] {
322
+ return Array.from(this.track.children) as HTMLElement[];
323
+ }
324
+
325
+ get focusedIndex(): number {
326
+ return this.trackItems.findIndex(item => item.matches(":focus"));
327
+ }
328
+
329
+ get isAtLeastBreakpointM(): boolean {
330
+ return BreakpointUtils.isAtLeast("M");
331
+ }
332
+
333
+ get track(): HTMLElement {
334
+ return this.shadowRoot?.querySelector(".udex-image-grid-ticker__track") as HTMLElement;
335
+ }
336
+
337
+ get grid(): HTMLElement {
338
+ return this.shadowRoot?.querySelector(".udex-image-grid-ticker") as HTMLElement;
339
+ }
340
+
341
+ get isRtl(): boolean {
342
+ return this._direction === "rtl";
343
+ }
344
+
345
+ get playBtnTooltipText(): string {
346
+ return this._isPaused
347
+ ? UDExImageGridTicker.i18nBundle.getText(PLAY_BUTTON_ACCESSIBLE_NAME)
348
+ : UDExImageGridTicker.i18nBundle.getText(PAUSE_BUTTON_ACCESSIBLE_NAME);
349
+ }
350
+ }
351
+
352
+ UDExImageGridTicker.define();
353
+
354
+ export default UDExImageGridTicker;
355
+ export type { UDExImageGridTickerPlayBtnClickEventDetail };
@@ -0,0 +1,81 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import { isDesktop } from "@ui5/webcomponents-base/Device.js";
3
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
4
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
5
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
6
+ import ImageGridTickerItemTemplate from "./ImageGridTickerItemTemplate.js";
7
+
8
+ // Styles
9
+ import ImageGridTickerItemCss from "./generated/themes/ImageGridTickerItem.css.js";
10
+
11
+ /**
12
+ * @class
13
+ *
14
+ * <h3 class="comment-api-title">Overview</h3>
15
+ *
16
+ *
17
+ * <h3>Usage</h3>
18
+ *
19
+ * For the <code>udex-image-grid-ticker-item</code>
20
+ * <h3>ES6 Module Import</h3>
21
+ *
22
+ * <code>import "@sapudex/web-components/dist/ImageGridTickerItem.js";</code>
23
+ *
24
+ * @constructor
25
+ * @extends UI5Element
26
+ * @public
27
+ */
28
+ @customElement({
29
+ tag: "udex-image-grid-ticker-item",
30
+ renderer: jsxRenderer,
31
+ styles: ImageGridTickerItemCss,
32
+ template: ImageGridTickerItemTemplate,
33
+ })
34
+
35
+ class UDExImageGridTickerItem extends UI5Element {
36
+ /**
37
+ * Defines the source URL
38
+ *
39
+ * @default ""
40
+ * @public
41
+ */
42
+ @property({ type: String })
43
+ src!: string;
44
+
45
+ /**
46
+ * Defines image alt text
47
+ *
48
+ * @default undefined
49
+ * @public
50
+ */
51
+ @property({ type: String })
52
+ alt?: string;
53
+
54
+ /**
55
+ * Defines tooltip on hover
56
+ *
57
+ * @default undefined
58
+ * @public
59
+ */
60
+ @property({ type: String })
61
+ tooltip?: string;
62
+
63
+ /**
64
+ * Defines link URL
65
+ *
66
+ * @default undefined
67
+ * @public
68
+ */
69
+ @property({ type: String })
70
+ href?: string;
71
+
72
+ onEnterDOM(): void {
73
+ if (isDesktop()) {
74
+ this.setAttribute("desktop", "");
75
+ }
76
+ }
77
+ }
78
+
79
+ UDExImageGridTickerItem.define();
80
+
81
+ export default UDExImageGridTickerItem;
@@ -0,0 +1,28 @@
1
+ import type ImageGridTickerItem from "./ImageGridTickerItem.js";
2
+
3
+ export default function ImageGridTickerItemTemplate(this: ImageGridTickerItem) {
4
+ const rootClass = "udex-image-grid-ticker-item";
5
+ const img = (
6
+ <img
7
+ class={`${rootClass}__img`}
8
+ part="grid-image"
9
+ src={this.src}
10
+ alt={this.alt}
11
+ title={this.tooltip}
12
+ />
13
+ );
14
+
15
+ return (
16
+ <div class={rootClass}>
17
+ {this.href && this.href.length > 0
18
+ ? <a
19
+ class={`${rootClass}__link`}
20
+ href={this.href}
21
+ title={this.tooltip}>
22
+ {img}
23
+ </a>
24
+ : img
25
+ }
26
+ </div>
27
+ );
28
+ }
@@ -0,0 +1,50 @@
1
+ import type ImageGridTicker from "./ImageGridTicker.js";
2
+ import ImageGridTickerItem from "./ImageGridTickerItem.js";
3
+ import UDExButton from "./Button.js";
4
+ import UDExButtonDesign from "./types/ButtonDesign.js";
5
+ import playIcon from "@ui5/webcomponents-icons/dist/play.js";
6
+ import pauseIcon from "@ui5/webcomponents-icons/dist/pause.js";
7
+
8
+ export default function ImageGridTickerTemplate(this: ImageGridTicker) {
9
+ const rootClass = "udex-image-grid-ticker";
10
+ const items = this._isScrollable && !this._isMobileView && !this._isFocusIn ? [...this.items, ...this.items] : this.items;
11
+ const btnIcon = this._isPaused ? playIcon : pauseIcon;
12
+
13
+ return (
14
+ <div class={rootClass}>
15
+ {this._isScrollable &&
16
+ <div className={`${rootClass}__play-button-holder`}>
17
+ <UDExButton
18
+ class={`${rootClass}__play-button`}
19
+ icon={btnIcon}
20
+ design={UDExButtonDesign.Invisible}
21
+ onClick={this._onPlayButtonClick}
22
+ tooltip={this.playBtnTooltipText}>
23
+ </UDExButton>
24
+ </div>
25
+ }
26
+ <div className={`${rootClass}__track-holder`}>
27
+ <div className={`${rootClass}__track-wrapper`}>
28
+ <div
29
+ className={`${rootClass}__track`}
30
+ onMouseEnter={this._stopAnimation}
31
+ onMouseLeave={this._startAnimation}
32
+ onFocusIn={this._onFocusIn}
33
+ onFocusOut={this._onFocusOut}
34
+ onKeyDown={this._onKeyDown}
35
+ onMouseDown={this._onMouseDown}
36
+ onMouseUp={this._onMouseUp}>
37
+ {items.map(item =>
38
+ <ImageGridTickerItem
39
+ src={item.src}
40
+ alt={item.alt}
41
+ tooltip={item.tooltip}
42
+ href={item.href}>
43
+ </ImageGridTickerItem>
44
+ )}
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ );
50
+ }