@sapudex/web-components 2.47.0 → 2.49.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 (396) hide show
  1. package/bundle.esm.js +2 -0
  2. package/cypress/specs/AccordionSpotlight.cy.tsx +402 -0
  3. package/cypress/specs/BusyIndicator.cy.tsx +15 -0
  4. package/cypress/specs/Carousel.cy.tsx +142 -0
  5. package/cypress/specs/DatePicker.cy.tsx +62 -0
  6. package/cypress/specs/FilterMenu.cy.tsx +968 -10
  7. package/cypress/specs/List.cy.tsx +106 -0
  8. package/cypress/specs/ListItem.cy.tsx +291 -1
  9. package/cypress/specs/MediaPlayer.cy.tsx +32 -0
  10. package/cypress/specs/SelectBox.cy.tsx +134 -3
  11. package/cypress/specs/Tag.cy.tsx +34 -3
  12. package/cypress/specs/TextField.cy.tsx +68 -0
  13. package/cypress/support/component-imports.instrumented.ts +6 -0
  14. package/cypress/support/component-imports.src.ts +6 -0
  15. package/dist/AccordionSpotlight.d.ts +149 -0
  16. package/dist/AccordionSpotlight.js +284 -0
  17. package/dist/AccordionSpotlight.js.map +1 -0
  18. package/dist/AccordionSpotlightItem.d.ts +76 -0
  19. package/dist/AccordionSpotlightItem.js +115 -0
  20. package/dist/AccordionSpotlightItem.js.map +1 -0
  21. package/dist/AccordionSpotlightItemTemplate.d.ts +2 -0
  22. package/dist/AccordionSpotlightItemTemplate.js +5 -0
  23. package/dist/AccordionSpotlightItemTemplate.js.map +1 -0
  24. package/dist/AccordionSpotlightTemplate.d.ts +2 -0
  25. package/dist/AccordionSpotlightTemplate.js +10 -0
  26. package/dist/AccordionSpotlightTemplate.js.map +1 -0
  27. package/dist/BusyIndicator.d.ts +9 -0
  28. package/dist/BusyIndicator.js +7 -1
  29. package/dist/BusyIndicator.js.map +1 -1
  30. package/dist/Carousel.d.ts +64 -8
  31. package/dist/Carousel.js +191 -33
  32. package/dist/Carousel.js.map +1 -1
  33. package/dist/CarouselTemplate.js +9 -2
  34. package/dist/CarouselTemplate.js.map +1 -1
  35. package/dist/DatePicker.d.ts +5 -0
  36. package/dist/DatePicker.js +10 -0
  37. package/dist/DatePicker.js.map +1 -1
  38. package/dist/DatePickerTemplate.js +1 -1
  39. package/dist/DatePickerTemplate.js.map +1 -1
  40. package/dist/FilterMenu.d.ts +12 -2
  41. package/dist/FilterMenu.js +24 -4
  42. package/dist/FilterMenu.js.map +1 -1
  43. package/dist/FilterMenuTemplate.js +1 -1
  44. package/dist/FilterMenuTemplate.js.map +1 -1
  45. package/dist/List.d.ts +1 -0
  46. package/dist/List.js +24 -11
  47. package/dist/List.js.map +1 -1
  48. package/dist/ListGroupHeader.js +5 -1
  49. package/dist/ListGroupHeader.js.map +1 -1
  50. package/dist/ListGroupHeaderBase.d.ts +22 -0
  51. package/dist/ListGroupHeaderBase.js +44 -0
  52. package/dist/ListGroupHeaderBase.js.map +1 -1
  53. package/dist/ListItem.d.ts +4 -0
  54. package/dist/ListItem.js +32 -0
  55. package/dist/ListItem.js.map +1 -1
  56. package/dist/MediaPlayer.d.ts +2 -0
  57. package/dist/MediaPlayer.js +12 -0
  58. package/dist/MediaPlayer.js.map +1 -1
  59. package/dist/PromoTile.js +1 -1
  60. package/dist/PromoTile.js.map +1 -1
  61. package/dist/SearchableListBase.d.ts +10 -1
  62. package/dist/SearchableListBase.js +23 -7
  63. package/dist/SearchableListBase.js.map +1 -1
  64. package/dist/SearchableListBaseTemplate.js +3 -2
  65. package/dist/SearchableListBaseTemplate.js.map +1 -1
  66. package/dist/SelectBase.d.ts +14 -0
  67. package/dist/SelectBase.js +56 -3
  68. package/dist/SelectBase.js.map +1 -1
  69. package/dist/SelectBoxTemplate.js +1 -1
  70. package/dist/SelectBoxTemplate.js.map +1 -1
  71. package/dist/TabNavigation.d.ts +6 -0
  72. package/dist/TabNavigation.js +5 -0
  73. package/dist/TabNavigation.js.map +1 -1
  74. package/dist/Tag.js +3 -2
  75. package/dist/Tag.js.map +1 -1
  76. package/dist/TagTemplate.js +2 -2
  77. package/dist/TagTemplate.js.map +1 -1
  78. package/dist/TextField.d.ts +12 -0
  79. package/dist/TextField.js +15 -0
  80. package/dist/TextField.js.map +1 -1
  81. package/dist/TextFieldTemplate.js +1 -1
  82. package/dist/TextFieldTemplate.js.map +1 -1
  83. package/dist/assets/{InputSuggestions-CbKVAumI.js → InputSuggestions-DaB1A6jW.js} +1 -1
  84. package/dist/assets/{ListItemStandardExpandableTextTemplate-C3-WJZBS.js → ListItemStandardExpandableTextTemplate-Co4KQuVw.js} +1 -1
  85. package/dist/assets/{bundle-JYo3bV8v.css → bundle-CkxyEA8c.css} +1 -1
  86. package/dist/assets/{bundle.esm-D8jQybCx.js → bundle.esm-al3NYhoB.js} +242 -239
  87. package/dist/assets/messagebundle_ar-BUZ_gTvQ.js +1 -0
  88. package/dist/assets/messagebundle_en-DoNTK1BE.js +1 -0
  89. package/dist/assets/messagebundle_no-BZQfeWxT.js +1 -0
  90. package/dist/assets/messagebundle_pl-CsXeN1y6.js +1 -0
  91. package/dist/assets/messagebundle_pt_PT-CQ5YAsmx.js +1 -0
  92. package/dist/css/themes/Accordion.css +1 -1
  93. package/dist/css/themes/AccordionItem.css +1 -1
  94. package/dist/css/themes/AccordionSpotlight.css +1 -0
  95. package/dist/css/themes/AccordionSpotlightItem.css +1 -0
  96. package/dist/css/themes/Badge.css +1 -1
  97. package/dist/css/themes/BusyIndicator.css +1 -0
  98. package/dist/css/themes/Button.css +1 -1
  99. package/dist/css/themes/Carousel.css +1 -1
  100. package/dist/css/themes/Divider.css +1 -1
  101. package/dist/css/themes/Dropdown.css +1 -1
  102. package/dist/css/themes/FilterMenu.css +1 -1
  103. package/dist/css/themes/Footer.css +1 -1
  104. package/dist/css/themes/ImageGridTableItem.css +1 -1
  105. package/dist/css/themes/MastheadItem.css +1 -1
  106. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  107. package/dist/css/themes/MastheadShell.css +1 -1
  108. package/dist/css/themes/MediaPlayer.css +1 -1
  109. package/dist/css/themes/PhoneNumberField.css +1 -1
  110. package/dist/css/themes/ProgressBar.css +1 -1
  111. package/dist/css/themes/PromoTile.css +1 -1
  112. package/dist/css/themes/Review.css +1 -1
  113. package/dist/css/themes/ReviewItem.css +1 -1
  114. package/dist/css/themes/Search.css +1 -1
  115. package/dist/css/themes/SelectBase.css +1 -1
  116. package/dist/css/themes/SelectBox.css +1 -1
  117. package/dist/css/themes/SideNavigation.css +1 -1
  118. package/dist/css/themes/SideNavigationGroup.css +1 -1
  119. package/dist/css/themes/SocialMediaButton.css +1 -1
  120. package/dist/css/themes/StepInput.css +1 -1
  121. package/dist/css/themes/Switch.css +1 -1
  122. package/dist/css/themes/TabNavigation.css +1 -1
  123. package/dist/css/themes/Table.css +1 -1
  124. package/dist/css/themes/TableCell.css +1 -1
  125. package/dist/css/themes/TableGroupRow.css +1 -1
  126. package/dist/css/themes/TableHeaderCell.css +1 -1
  127. package/dist/css/themes/Tag.css +1 -1
  128. package/dist/css/themes/TagGroup.css +1 -1
  129. package/dist/css/themes/TextArea.css +1 -1
  130. package/dist/css/themes/TextField.css +1 -1
  131. package/dist/css/themes/Toast.css +1 -1
  132. package/dist/custom-elements-internal.json +511 -35
  133. package/dist/custom-elements.json +455 -49
  134. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  136. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  139. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  140. package/dist/generated/i18n/i18n-defaults.js +3 -1
  141. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  142. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +24 -21
  143. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
  144. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  145. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  146. package/dist/generated/themes/Accordion.css.d.ts +1 -1
  147. package/dist/generated/themes/Accordion.css.js +1 -1
  148. package/dist/generated/themes/Accordion.css.js.map +1 -1
  149. package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
  150. package/dist/generated/themes/AccordionItem.css.js +1 -1
  151. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  152. package/dist/generated/themes/AccordionSpotlight.css.d.ts +2 -0
  153. package/dist/generated/themes/AccordionSpotlight.css.js +8 -0
  154. package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -0
  155. package/dist/generated/themes/AccordionSpotlightItem.css.d.ts +2 -0
  156. package/dist/generated/themes/AccordionSpotlightItem.css.js +8 -0
  157. package/dist/generated/themes/AccordionSpotlightItem.css.js.map +1 -0
  158. package/dist/generated/themes/Badge.css.d.ts +1 -1
  159. package/dist/generated/themes/Badge.css.js +1 -1
  160. package/dist/generated/themes/Badge.css.js.map +1 -1
  161. package/dist/generated/themes/BusyIndicator.css.d.ts +2 -0
  162. package/dist/generated/themes/BusyIndicator.css.js +8 -0
  163. package/dist/generated/themes/BusyIndicator.css.js.map +1 -0
  164. package/dist/generated/themes/Button.css.d.ts +1 -1
  165. package/dist/generated/themes/Button.css.js +1 -1
  166. package/dist/generated/themes/Button.css.js.map +1 -1
  167. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  168. package/dist/generated/themes/Carousel.css.js +1 -1
  169. package/dist/generated/themes/Carousel.css.js.map +1 -1
  170. package/dist/generated/themes/Divider.css.d.ts +1 -1
  171. package/dist/generated/themes/Divider.css.js +1 -1
  172. package/dist/generated/themes/Divider.css.js.map +1 -1
  173. package/dist/generated/themes/Dropdown.css.d.ts +1 -1
  174. package/dist/generated/themes/Dropdown.css.js +1 -1
  175. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  176. package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
  177. package/dist/generated/themes/FilterMenu.css.js +1 -1
  178. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  179. package/dist/generated/themes/Footer.css.d.ts +1 -1
  180. package/dist/generated/themes/Footer.css.js +1 -1
  181. package/dist/generated/themes/Footer.css.js.map +1 -1
  182. package/dist/generated/themes/ImageGridTableItem.css.d.ts +1 -1
  183. package/dist/generated/themes/ImageGridTableItem.css.js +1 -1
  184. package/dist/generated/themes/ImageGridTableItem.css.js.map +1 -1
  185. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  186. package/dist/generated/themes/MastheadItem.css.js +1 -1
  187. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  188. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  189. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  190. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  191. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  192. package/dist/generated/themes/MastheadShell.css.js +1 -1
  193. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  194. package/dist/generated/themes/MediaPlayer.css.d.ts +1 -1
  195. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  196. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  197. package/dist/generated/themes/PhoneNumberField.css.d.ts +1 -1
  198. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  199. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  200. package/dist/generated/themes/ProgressBar.css.d.ts +1 -1
  201. package/dist/generated/themes/ProgressBar.css.js +1 -1
  202. package/dist/generated/themes/ProgressBar.css.js.map +1 -1
  203. package/dist/generated/themes/PromoTile.css.d.ts +1 -1
  204. package/dist/generated/themes/PromoTile.css.js +1 -1
  205. package/dist/generated/themes/PromoTile.css.js.map +1 -1
  206. package/dist/generated/themes/Review.css.d.ts +1 -1
  207. package/dist/generated/themes/Review.css.js +1 -1
  208. package/dist/generated/themes/Review.css.js.map +1 -1
  209. package/dist/generated/themes/ReviewItem.css.d.ts +1 -1
  210. package/dist/generated/themes/ReviewItem.css.js +1 -1
  211. package/dist/generated/themes/ReviewItem.css.js.map +1 -1
  212. package/dist/generated/themes/Search.css.d.ts +1 -1
  213. package/dist/generated/themes/Search.css.js +1 -1
  214. package/dist/generated/themes/Search.css.js.map +1 -1
  215. package/dist/generated/themes/SelectBase.css.d.ts +1 -1
  216. package/dist/generated/themes/SelectBase.css.js +1 -1
  217. package/dist/generated/themes/SelectBase.css.js.map +1 -1
  218. package/dist/generated/themes/SelectBox.css.d.ts +1 -1
  219. package/dist/generated/themes/SelectBox.css.js +1 -1
  220. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  221. package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
  222. package/dist/generated/themes/SideNavigation.css.js +1 -1
  223. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  224. package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
  225. package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
  226. package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
  227. package/dist/generated/themes/SocialMediaButton.css.d.ts +1 -1
  228. package/dist/generated/themes/SocialMediaButton.css.js +1 -1
  229. package/dist/generated/themes/SocialMediaButton.css.js.map +1 -1
  230. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  231. package/dist/generated/themes/StepInput.css.js +1 -1
  232. package/dist/generated/themes/StepInput.css.js.map +1 -1
  233. package/dist/generated/themes/Switch.css.d.ts +1 -1
  234. package/dist/generated/themes/Switch.css.js +1 -1
  235. package/dist/generated/themes/Switch.css.js.map +1 -1
  236. package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
  237. package/dist/generated/themes/TabNavigation.css.js +1 -1
  238. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  239. package/dist/generated/themes/Table.css.d.ts +1 -1
  240. package/dist/generated/themes/Table.css.js +1 -1
  241. package/dist/generated/themes/Table.css.js.map +1 -1
  242. package/dist/generated/themes/TableCell.css.d.ts +1 -1
  243. package/dist/generated/themes/TableCell.css.js +1 -1
  244. package/dist/generated/themes/TableCell.css.js.map +1 -1
  245. package/dist/generated/themes/TableGroupRow.css.d.ts +1 -1
  246. package/dist/generated/themes/TableGroupRow.css.js +1 -1
  247. package/dist/generated/themes/TableGroupRow.css.js.map +1 -1
  248. package/dist/generated/themes/TableHeaderCell.css.d.ts +1 -1
  249. package/dist/generated/themes/TableHeaderCell.css.js +1 -1
  250. package/dist/generated/themes/TableHeaderCell.css.js.map +1 -1
  251. package/dist/generated/themes/Tag.css.d.ts +1 -1
  252. package/dist/generated/themes/Tag.css.js +1 -1
  253. package/dist/generated/themes/Tag.css.js.map +1 -1
  254. package/dist/generated/themes/TagGroup.css.d.ts +1 -1
  255. package/dist/generated/themes/TagGroup.css.js +1 -1
  256. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  257. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  258. package/dist/generated/themes/TextArea.css.js +1 -1
  259. package/dist/generated/themes/TextArea.css.js.map +1 -1
  260. package/dist/generated/themes/TextField.css.d.ts +1 -1
  261. package/dist/generated/themes/TextField.css.js +1 -1
  262. package/dist/generated/themes/TextField.css.js.map +1 -1
  263. package/dist/generated/themes/Toast.css.d.ts +1 -1
  264. package/dist/generated/themes/Toast.css.js +1 -1
  265. package/dist/generated/themes/Toast.css.js.map +1 -1
  266. package/dist/messagebundle.properties +3 -0
  267. package/dist/messagebundle_ar.properties +99 -0
  268. package/dist/messagebundle_en.properties +2 -0
  269. package/dist/messagebundle_no.properties +126 -1
  270. package/dist/messagebundle_pl.properties +134 -1
  271. package/dist/messagebundle_pt_PT.properties +126 -1
  272. package/dist/vscode.html-custom-data.json +92 -12
  273. package/dist/web-types.json +233 -27
  274. package/package.json +1 -1
  275. package/src/AccordionSpotlight.ts +321 -0
  276. package/src/AccordionSpotlightItem.ts +117 -0
  277. package/src/AccordionSpotlightItemTemplate.tsx +7 -0
  278. package/src/AccordionSpotlightTemplate.tsx +107 -0
  279. package/src/BusyIndicator.ts +17 -2
  280. package/src/Carousel.ts +243 -34
  281. package/src/CarouselTemplate.tsx +66 -27
  282. package/src/DatePicker.ts +9 -0
  283. package/src/DatePickerTemplate.tsx +2 -1
  284. package/src/FilterMenu.ts +25 -4
  285. package/src/FilterMenuTemplate.tsx +1 -1
  286. package/src/List.ts +23 -11
  287. package/src/ListGroupHeader.hbs +11 -10
  288. package/src/ListGroupHeader.ts +5 -1
  289. package/src/ListGroupHeaderBase.ts +48 -0
  290. package/src/ListItem.hbs +5 -1
  291. package/src/ListItem.ts +36 -0
  292. package/src/MediaPlayer.ts +11 -0
  293. package/src/PromoTile.ts +1 -1
  294. package/src/SearchableListBase.ts +24 -7
  295. package/src/SearchableListBaseTemplate.tsx +5 -2
  296. package/src/SelectBase.ts +58 -3
  297. package/src/SelectBoxTemplate.tsx +1 -0
  298. package/src/TabNavigation.ts +6 -0
  299. package/src/Tag.ts +3 -2
  300. package/src/TagTemplate.tsx +2 -0
  301. package/src/TextField.ts +26 -1
  302. package/src/TextFieldTemplate.tsx +1 -0
  303. package/src/generated/i18n/i18n-defaults.ts +2 -2
  304. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +24 -21
  305. package/src/generated/templates/ListItemTemplate.lit.ts +2 -2
  306. package/src/generated/themes/Accordion.css.ts +1 -1
  307. package/src/generated/themes/AccordionItem.css.ts +1 -1
  308. package/src/generated/themes/AccordionSpotlight.css.ts +9 -0
  309. package/src/generated/themes/AccordionSpotlightItem.css.ts +9 -0
  310. package/src/generated/themes/Badge.css.ts +1 -1
  311. package/src/generated/themes/BusyIndicator.css.ts +9 -0
  312. package/src/generated/themes/Button.css.ts +1 -1
  313. package/src/generated/themes/Carousel.css.ts +1 -1
  314. package/src/generated/themes/Divider.css.ts +1 -1
  315. package/src/generated/themes/Dropdown.css.ts +1 -1
  316. package/src/generated/themes/FilterMenu.css.ts +1 -1
  317. package/src/generated/themes/Footer.css.ts +1 -1
  318. package/src/generated/themes/ImageGridTableItem.css.ts +1 -1
  319. package/src/generated/themes/MastheadItem.css.ts +1 -1
  320. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  321. package/src/generated/themes/MastheadShell.css.ts +1 -1
  322. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  323. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  324. package/src/generated/themes/ProgressBar.css.ts +1 -1
  325. package/src/generated/themes/PromoTile.css.ts +1 -1
  326. package/src/generated/themes/Review.css.ts +1 -1
  327. package/src/generated/themes/ReviewItem.css.ts +1 -1
  328. package/src/generated/themes/Search.css.ts +1 -1
  329. package/src/generated/themes/SelectBase.css.ts +1 -1
  330. package/src/generated/themes/SelectBox.css.ts +1 -1
  331. package/src/generated/themes/SideNavigation.css.ts +1 -1
  332. package/src/generated/themes/SideNavigationGroup.css.ts +1 -1
  333. package/src/generated/themes/SocialMediaButton.css.ts +1 -1
  334. package/src/generated/themes/StepInput.css.ts +1 -1
  335. package/src/generated/themes/Switch.css.ts +1 -1
  336. package/src/generated/themes/TabNavigation.css.ts +1 -1
  337. package/src/generated/themes/Table.css.ts +1 -1
  338. package/src/generated/themes/TableCell.css.ts +1 -1
  339. package/src/generated/themes/TableGroupRow.css.ts +1 -1
  340. package/src/generated/themes/TableHeaderCell.css.ts +1 -1
  341. package/src/generated/themes/Tag.css.ts +1 -1
  342. package/src/generated/themes/TagGroup.css.ts +1 -1
  343. package/src/generated/themes/TextArea.css.ts +1 -1
  344. package/src/generated/themes/TextField.css.ts +1 -1
  345. package/src/generated/themes/Toast.css.ts +1 -1
  346. package/src/i18n/messagebundle.properties +3 -0
  347. package/src/i18n/messagebundle_ar.properties +99 -0
  348. package/src/i18n/messagebundle_en.properties +2 -0
  349. package/src/i18n/messagebundle_no.properties +126 -1
  350. package/src/i18n/messagebundle_pl.properties +134 -1
  351. package/src/i18n/messagebundle_pt_PT.properties +126 -1
  352. package/src/themes/Accordion.css +1 -1
  353. package/src/themes/AccordionItem.css +4 -4
  354. package/src/themes/AccordionSpotlight.css +264 -0
  355. package/src/themes/AccordionSpotlightItem.css +3 -0
  356. package/src/themes/Badge.css +7 -7
  357. package/src/themes/BusyIndicator.css +24 -0
  358. package/src/themes/Button.css +57 -57
  359. package/src/themes/Carousel.css +20 -8
  360. package/src/themes/Divider.css +1 -1
  361. package/src/themes/Dropdown.css +1 -1
  362. package/src/themes/FilterMenu.css +2 -2
  363. package/src/themes/Footer.css +1 -1
  364. package/src/themes/ImageGridTableItem.css +1 -1
  365. package/src/themes/MastheadItem.css +7 -4
  366. package/src/themes/MastheadProfileMenu.css +0 -13
  367. package/src/themes/MastheadShell.css +2 -2
  368. package/src/themes/MediaPlayer.css +5 -34
  369. package/src/themes/PhoneNumberField.css +6 -6
  370. package/src/themes/ProgressBar.css +4 -0
  371. package/src/themes/PromoTile.css +4 -4
  372. package/src/themes/Review.css +2 -2
  373. package/src/themes/ReviewItem.css +2 -2
  374. package/src/themes/Search.css +5 -5
  375. package/src/themes/SelectBase.css +14 -14
  376. package/src/themes/SelectBox.css +1 -1
  377. package/src/themes/SideNavigation.css +1 -1
  378. package/src/themes/SideNavigationGroup.css +1 -1
  379. package/src/themes/SocialMediaButton.css +2 -2
  380. package/src/themes/StepInput.css +8 -8
  381. package/src/themes/Switch.css +9 -9
  382. package/src/themes/TabNavigation.css +1 -1
  383. package/src/themes/Table.css +1 -1
  384. package/src/themes/TableCell.css +3 -3
  385. package/src/themes/TableGroupRow.css +1 -1
  386. package/src/themes/TableHeaderCell.css +3 -4
  387. package/src/themes/Tag.css +28 -4
  388. package/src/themes/TagGroup.css +1 -0
  389. package/src/themes/TextArea.css +4 -4
  390. package/src/themes/TextField.css +13 -13
  391. package/src/themes/Toast.css +1 -1
  392. package/dist/assets/messagebundle_ar-BNhVFt1-.js +0 -1
  393. package/dist/assets/messagebundle_en-BZqDcZHN.js +0 -1
  394. package/dist/assets/messagebundle_no-BIUfmTWJ.js +0 -1
  395. package/dist/assets/messagebundle_pl-BmaELnDD.js +0 -1
  396. package/dist/assets/messagebundle_pt_PT-DcVh6BH6.js +0 -1
@@ -1,11 +1,11 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import type { DefaultSlot } from "@ui5/webcomponents-base/dist/UI5Element.js";
3
3
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
4
5
  import type UI5Carousel from "@ui5/webcomponents/dist/Carousel.js";
5
6
  import type { CarouselNavigateEventDetail } from "@ui5/webcomponents/dist/Carousel.js";
6
7
  import type { UI5CustomEvent } from "@ui5/webcomponents-base";
7
8
  import type CarouselPageIndicatorType from "@ui5/webcomponents/dist/types/CarouselPageIndicatorType.js";
8
- import type UDExButton from "./Button.js";
9
9
  export declare enum UDExCarouselNavigationPosition {
10
10
  top = "top",
11
11
  bottom = "bottom"
@@ -14,6 +14,9 @@ export declare enum UDExCarouselButtonDesign {
14
14
  Secondary = "Secondary",
15
15
  Tertiary = "Tertiary"
16
16
  }
17
+ type UDExCarouselAutoplayToggleEventDetails = {
18
+ isPaused: boolean;
19
+ };
17
20
  /**
18
21
  * @class
19
22
  *
@@ -35,6 +38,7 @@ export declare enum UDExCarouselButtonDesign {
35
38
  declare class UDExCarousel extends UI5Element {
36
39
  eventDetails: {
37
40
  "navigate": CarouselNavigateEventDetail;
41
+ "autoplay-toggle-click": UDExCarouselAutoplayToggleEventDetails;
38
42
  };
39
43
  /**
40
44
  * Defines the position of the navigation.
@@ -48,6 +52,30 @@ declare class UDExCarousel extends UI5Element {
48
52
  * @public
49
53
  */
50
54
  navigationPlacement: `${UDExCarouselNavigationPosition}`;
55
+ /**
56
+ * Controls carousel autoplay functionality
57
+ * @public
58
+ * @default undefined
59
+ */
60
+ autoplay?: boolean;
61
+ /**
62
+ * Defines carousel autoplay speed in milliseconds till next slide
63
+ * @public
64
+ */
65
+ autoplaySpeed: number;
66
+ /**
67
+ * Indicates current state of autoplay.
68
+ *
69
+ * @default true
70
+ * @private
71
+ */
72
+ _autoplayIsPaused: boolean;
73
+ /**
74
+ * Defines whether the carousel should loop, i.e show the first page after the last page is reached and vice versa.
75
+ * @public
76
+ * @default false
77
+ */
78
+ cyclic?: boolean;
51
79
  /**
52
80
  * Defines the content of the component.
53
81
  *
@@ -100,10 +128,42 @@ declare class UDExCarousel extends UI5Element {
100
128
  * @public
101
129
  */
102
130
  accessibleName: string;
131
+ /**
132
+ * Tracks whether the inner carousel has multiple pages (updated after render).
133
+ *
134
+ * @default false
135
+ * @private
136
+ */
137
+ _hasManyPages: boolean;
103
138
  static i18nBundle: I18nBundle;
139
+ _autoplayInterval: ReturnType<typeof setInterval> | null;
140
+ _autoplayLastToggle: number;
141
+ _autoplayMinTimeBetweenToggle: number;
142
+ _autoplayManualStop: boolean;
143
+ _resizeHandler: ResizeObserverCallback;
144
+ constructor();
145
+ onAfterRendering(): void;
146
+ onExitDOM(): void;
147
+ onEnterDOM(): void;
148
+ _onResize(): void;
149
+ _autoplayLoop: () => void;
150
+ _startAutoplay(): void;
151
+ _stopAutoplay(): void;
152
+ _onAutoplayToggleClick(): void;
153
+ _onFocusIn(): void;
154
+ _onFocusOut(): void;
155
+ _onMouseEnter(): void;
156
+ _onMouseLeave(): void;
157
+ _calculateDisabledButtonsState(): void;
158
+ _prevButtonClick(): void;
159
+ _nextButtonClick(): void;
160
+ _onkeydown(e: KeyboardEvent): void;
161
+ _handleNavigate(e: UI5CustomEvent<UI5Carousel, "navigate">): void;
104
162
  get nextPageText(): string;
105
163
  get previousPageText(): string;
106
164
  get carouselClass(): string;
165
+ get navigationWrapperClass(): string;
166
+ get navigationButtonWrapperClass(): string;
107
167
  get buttonDesign(): UDExCarouselButtonDesign;
108
168
  get showNavigationButtons(): {
109
169
  top: boolean;
@@ -111,12 +171,8 @@ declare class UDExCarousel extends UI5Element {
111
171
  };
112
172
  get _hidePageIndicator(): boolean;
113
173
  get _carousel(): UI5Carousel | null;
114
- get _ui5CarouselRoot(): HTMLElement | null | undefined;
115
- _calculateDisabledButtonsState(): void;
116
- _prevButtonClick(e: UI5CustomEvent<UDExButton, "click">): void;
117
- _nextButtonClick(e: UI5CustomEvent<UDExButton, "click">): void;
118
- _onkeydown(e: KeyboardEvent): void;
119
- _handleNavigate(e: UI5CustomEvent<UI5Carousel, "navigate">): void;
120
- onAfterRendering(): void;
174
+ get _isBottomNavigation(): boolean;
175
+ get autoplayToggleButtonTooltipText(): string;
121
176
  }
122
177
  export default UDExCarousel;
178
+ export type { CarouselNavigateEventDetail, UDExCarouselAutoplayToggleEventDetails };
package/dist/Carousel.js CHANGED
@@ -12,8 +12,9 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
12
12
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
13
13
  import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
14
14
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
15
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
15
16
  import { isUp, isDown, isRight, isLeft, } from "@ui5/webcomponents-base/dist/Keys.js";
16
- import { CAROUSEL_NEXT_ARROW_TEXT, CAROUSEL_PREVIOUS_ARROW_TEXT } from "./generated/i18n/i18n-defaults.js";
17
+ import { CAROUSEL_NEXT_ARROW_TEXT, CAROUSEL_PREVIOUS_ARROW_TEXT, CAROUSEL_AUTOPLAY_TOGGLE_START, CAROUSEL_AUTOPLAY_TOGGLE_STOP, } from "./generated/i18n/i18n-defaults.js";
17
18
  import redirectAttributes from "./utils/redirectAttributes.js";
18
19
  import translate from "./utils/translate.js";
19
20
  import CarouselTemplate from "./CarouselTemplate.js";
@@ -49,7 +50,7 @@ export var UDExCarouselButtonDesign;
49
50
  */
50
51
  let UDExCarousel = UDExCarousel_1 = class UDExCarousel extends UI5Element {
51
52
  constructor() {
52
- super(...arguments);
53
+ super();
53
54
  /**
54
55
  * Defines the position of the navigation.
55
56
  * <br><br>
@@ -62,6 +63,18 @@ let UDExCarousel = UDExCarousel_1 = class UDExCarousel extends UI5Element {
62
63
  * @public
63
64
  */
64
65
  this.navigationPlacement = UDExCarouselNavigationPosition.top;
66
+ /**
67
+ * Defines carousel autoplay speed in milliseconds till next slide
68
+ * @public
69
+ */
70
+ this.autoplaySpeed = 2000;
71
+ /**
72
+ * Indicates current state of autoplay.
73
+ *
74
+ * @default true
75
+ * @private
76
+ */
77
+ this._autoplayIsPaused = true;
65
78
  /**
66
79
  * Defines the number of items per page depending on the carousel width.
67
80
  *
@@ -93,52 +106,129 @@ let UDExCarousel = UDExCarousel_1 = class UDExCarousel extends UI5Element {
93
106
  * @public
94
107
  */
95
108
  this.accessibleName = "";
109
+ /**
110
+ * Tracks whether the inner carousel has multiple pages (updated after render).
111
+ *
112
+ * @default false
113
+ * @private
114
+ */
115
+ this._hasManyPages = false;
116
+ this._autoplayInterval = null;
117
+ this._autoplayLastToggle = Date.now();
118
+ this._autoplayMinTimeBetweenToggle = 250;
119
+ this._autoplayManualStop = false;
120
+ this._autoplayLoop = () => {
121
+ const items = this._carousel?.items;
122
+ if (!items) {
123
+ return;
124
+ }
125
+ const currentSlide = this._carousel._currentPageIndex;
126
+ const itemsPerPage = this._carousel.effectiveItemsPerPage;
127
+ const isLastSlide = currentSlide === (items.length - itemsPerPage);
128
+ if (isLastSlide && !this.cyclic) {
129
+ this._stopAutoplay();
130
+ this._autoplayManualStop = true;
131
+ return;
132
+ }
133
+ const nextSlide = isLastSlide ? 0 : (currentSlide + itemsPerPage);
134
+ this._carousel?.navigateTo(nextSlide);
135
+ this._calculateDisabledButtonsState();
136
+ };
137
+ this._resizeHandler = this._onResize.bind(this);
96
138
  }
97
- get nextPageText() {
98
- return translate(UDExCarousel_1, CAROUSEL_NEXT_ARROW_TEXT);
139
+ onAfterRendering() {
140
+ redirectAttributes(this, "carousel");
141
+ this._calculateDisabledButtonsState();
142
+ if (this._autoplayInterval === null) {
143
+ this._startAutoplay();
144
+ }
99
145
  }
100
- get previousPageText() {
101
- return translate(UDExCarousel_1, CAROUSEL_PREVIOUS_ARROW_TEXT);
146
+ onExitDOM() {
147
+ ResizeHandler.deregister(this, this._resizeHandler);
148
+ if (this._autoplayInterval) {
149
+ clearInterval(this._autoplayInterval);
150
+ }
102
151
  }
103
- get carouselClass() {
104
- const classes = "udex-carousel";
105
- return `${classes} udex-carousel__navigation--${this.navigationPlacement}`;
152
+ onEnterDOM() {
153
+ ResizeHandler.register(this, this._resizeHandler);
106
154
  }
107
- get buttonDesign() {
108
- return this.navigationPlacement === UDExCarouselNavigationPosition.top
109
- ? UDExCarouselButtonDesign.Secondary
110
- : UDExCarouselButtonDesign.Tertiary;
155
+ _onResize() {
156
+ this._hasManyPages = this._carousel?.hasManyPages ?? false;
111
157
  }
112
- get showNavigationButtons() {
113
- return {
114
- top: this.navigationPlacement === UDExCarouselNavigationPosition.top,
115
- bottom: this.navigationPlacement === UDExCarouselNavigationPosition.bottom,
116
- };
158
+ _startAutoplay() {
159
+ if (!this.autoplay) {
160
+ return;
161
+ }
162
+ if (!this._carousel?.items) {
163
+ console.warn("[UDExCarousel] Cannot start autoplay on an empty carousel");
164
+ return;
165
+ }
166
+ const toggleBuffer = Date.now() - this._autoplayLastToggle;
167
+ if (this._autoplayInterval !== null && toggleBuffer <= this._autoplayMinTimeBetweenToggle) {
168
+ this._autoplayLastToggle = Date.now();
169
+ return;
170
+ }
171
+ if (this._autoplayInterval !== null) {
172
+ clearInterval(this._autoplayInterval);
173
+ }
174
+ this._autoplayInterval = setInterval(this._autoplayLoop, this.autoplaySpeed);
175
+ this._autoplayIsPaused = false;
176
+ this._autoplayLastToggle = Date.now();
117
177
  }
118
- get _hidePageIndicator() {
119
- return this.navigationPlacement === UDExCarouselNavigationPosition.top;
178
+ _stopAutoplay() {
179
+ if (!this._autoplayInterval) {
180
+ return;
181
+ }
182
+ clearInterval(this._autoplayInterval);
183
+ this._autoplayIsPaused = true;
184
+ this._autoplayLastToggle = Date.now();
120
185
  }
121
- get _carousel() {
122
- return this.shadowRoot.querySelector("[ui5-carousel]");
186
+ _onAutoplayToggleClick() {
187
+ if (this._autoplayIsPaused) {
188
+ this._startAutoplay();
189
+ this._autoplayManualStop = false;
190
+ }
191
+ else {
192
+ this._stopAutoplay();
193
+ this._autoplayManualStop = true;
194
+ }
195
+ this.fireDecoratorEvent("autoplay-toggle-click", {
196
+ isPaused: this._autoplayIsPaused,
197
+ });
198
+ }
199
+ _onFocusIn() {
200
+ this._stopAutoplay();
201
+ }
202
+ _onFocusOut() {
203
+ if (!this._autoplayManualStop) {
204
+ this._startAutoplay();
205
+ }
123
206
  }
124
- get _ui5CarouselRoot() {
125
- return this._carousel?.shadowRoot?.querySelector(".ui5-carousel-root");
207
+ _onMouseEnter() {
208
+ this._stopAutoplay();
209
+ }
210
+ _onMouseLeave() {
211
+ if (!this._autoplayManualStop) {
212
+ this._startAutoplay();
213
+ }
126
214
  }
127
215
  _calculateDisabledButtonsState() {
128
216
  this.isPrevButtonDisabled = !this._carousel?.hasPrev;
129
217
  this.isNextButtonDisabled = !this._carousel?.hasNext;
130
218
  }
131
- _prevButtonClick(e) {
132
- if (this.isPrevButtonDisabled) {
219
+ _prevButtonClick() {
220
+ if (this.isPrevButtonDisabled || !this._carousel) {
133
221
  return;
134
222
  }
135
- this._carousel?._navButtonClick(e);
223
+ this._carousel.navigateLeft();
224
+ this._calculateDisabledButtonsState();
136
225
  }
137
- _nextButtonClick(e) {
138
- if (this.isNextButtonDisabled) {
226
+ _nextButtonClick() {
227
+ if (this.isNextButtonDisabled || !this._carousel) {
139
228
  return;
140
229
  }
141
- this._carousel?._navButtonClick(e);
230
+ this._carousel.navigateRight();
231
+ this._calculateDisabledButtonsState();
142
232
  }
143
233
  _onkeydown(e) {
144
234
  if (isLeft(e) || isDown(e) || isRight(e) || isUp(e)) {
@@ -149,14 +239,71 @@ let UDExCarousel = UDExCarousel_1 = class UDExCarousel extends UI5Element {
149
239
  this._calculateDisabledButtonsState();
150
240
  this.fireDecoratorEvent("navigate", e.detail);
151
241
  }
152
- onAfterRendering() {
153
- redirectAttributes(this, "carousel");
154
- this._calculateDisabledButtonsState();
242
+ get nextPageText() {
243
+ return translate(UDExCarousel_1, CAROUSEL_NEXT_ARROW_TEXT);
244
+ }
245
+ get previousPageText() {
246
+ return translate(UDExCarousel_1, CAROUSEL_PREVIOUS_ARROW_TEXT);
247
+ }
248
+ get carouselClass() {
249
+ const classes = "udex-carousel";
250
+ return `${classes} udex-carousel__navigation--${this.navigationPlacement}`;
251
+ }
252
+ get navigationWrapperClass() {
253
+ let _class = "udex-carousel__navigation-wrapper";
254
+ if (this.autoplay) {
255
+ _class += " udex-carousel__navigation-wrapper--autoplay";
256
+ }
257
+ return _class;
258
+ }
259
+ get navigationButtonWrapperClass() {
260
+ let _class = "udex-carousel__navigation-button-wrapper";
261
+ if (this._carousel?.isPageTypeDots) {
262
+ _class += " udex-carousel__navigation-button-wrapper--dot-indicators";
263
+ }
264
+ return _class;
265
+ }
266
+ get buttonDesign() {
267
+ return this.navigationPlacement === UDExCarouselNavigationPosition.top
268
+ ? UDExCarouselButtonDesign.Secondary
269
+ : UDExCarouselButtonDesign.Tertiary;
270
+ }
271
+ get showNavigationButtons() {
272
+ return {
273
+ top: this.navigationPlacement === UDExCarouselNavigationPosition.top && this._hasManyPages,
274
+ bottom: this.navigationPlacement === UDExCarouselNavigationPosition.bottom && this._hasManyPages,
275
+ };
276
+ }
277
+ get _hidePageIndicator() {
278
+ return this.navigationPlacement === UDExCarouselNavigationPosition.top;
279
+ }
280
+ get _carousel() {
281
+ return this.shadowRoot.querySelector("[ui5-carousel]");
282
+ }
283
+ get _isBottomNavigation() {
284
+ return this.navigationPlacement === UDExCarouselNavigationPosition.bottom;
285
+ }
286
+ get autoplayToggleButtonTooltipText() {
287
+ return this._autoplayIsPaused
288
+ ? translate(UDExCarousel_1, CAROUSEL_AUTOPLAY_TOGGLE_START)
289
+ : translate(UDExCarousel_1, CAROUSEL_AUTOPLAY_TOGGLE_STOP);
155
290
  }
156
291
  };
157
292
  __decorate([
158
293
  property()
159
294
  ], UDExCarousel.prototype, "navigationPlacement", void 0);
295
+ __decorate([
296
+ property({ type: Boolean })
297
+ ], UDExCarousel.prototype, "autoplay", void 0);
298
+ __decorate([
299
+ property({ type: Number })
300
+ ], UDExCarousel.prototype, "autoplaySpeed", void 0);
301
+ __decorate([
302
+ property({ type: Boolean })
303
+ ], UDExCarousel.prototype, "_autoplayIsPaused", void 0);
304
+ __decorate([
305
+ property({ type: Boolean })
306
+ ], UDExCarousel.prototype, "cyclic", void 0);
160
307
  __decorate([
161
308
  slot({ "default": true, type: HTMLElement, individualSlots: true })
162
309
  ], UDExCarousel.prototype, "items", void 0);
@@ -175,6 +322,9 @@ __decorate([
175
322
  __decorate([
176
323
  property({ type: String })
177
324
  ], UDExCarousel.prototype, "accessibleName", void 0);
325
+ __decorate([
326
+ property({ type: Boolean, noAttribute: true })
327
+ ], UDExCarousel.prototype, "_hasManyPages", void 0);
178
328
  __decorate([
179
329
  i18n("@sapudex/web-components")
180
330
  ], UDExCarousel, "i18nBundle", void 0);
@@ -192,6 +342,14 @@ UDExCarousel = UDExCarousel_1 = __decorate([
192
342
  */
193
343
  ,
194
344
  event("navigate")
345
+ /**
346
+ * Fired event when the user click on a play/paused button.
347
+ *
348
+ * @public
349
+ * @param {boolean} isPaused - Indicates current state of autoplay
350
+ */
351
+ ,
352
+ event("autoplay-toggle-click", { bubbles: true })
195
353
  ], UDExCarousel);
196
354
  UDExCarousel.define();
197
355
  export default UDExCarousel;
@@ -1 +1 @@
1
- {"version":3,"file":"Carousel.js","sourceRoot":"","sources":["../src/Carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } 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 jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n isUp, isDown, isRight, isLeft,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { CAROUSEL_NEXT_ARROW_TEXT, CAROUSEL_PREVIOUS_ARROW_TEXT } from \"./generated/i18n/i18n-defaults.js\";\nimport redirectAttributes from \"./utils/redirectAttributes.js\";\nimport type UI5Carousel from \"@ui5/webcomponents/dist/Carousel.js\";\nimport type { CarouselNavigateEventDetail } from \"@ui5/webcomponents/dist/Carousel.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport type Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport translate from \"./utils/translate.js\";\n\nimport CarouselTemplate from \"./CarouselTemplate.js\";\n\n// Styles\nimport CarouselCss from \"./generated/themes/Carousel.css.js\";\nimport type CarouselPageIndicatorType from \"@ui5/webcomponents/dist/types/CarouselPageIndicatorType.js\";\nimport type UDExButton from \"./Button.js\";\n\nexport enum UDExCarouselNavigationPosition {\n top = \"top\",\n bottom = \"bottom\",\n}\n\nexport enum UDExCarouselButtonDesign {\n Secondary = \"Secondary\",\n Tertiary = \"Tertiary\",\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-carousel</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Carousel.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-carousel\n * @public\n */\n@customElement({\n tag: \"udex-carousel\",\n renderer: jsxRenderer,\n styles: CarouselCss,\n template: CarouselTemplate,\n})\n/**\n * Triggered when carousel navigates to a new slide\n * @public\n * @param { CustomEvent }\n */\n@event(\"navigate\")\n\nclass UDExCarousel extends UI5Element {\n eventDetails!: {\n \"navigate\": CarouselNavigateEventDetail,\n };\n /**\n * Defines the position of the navigation.\n * <br><br>\n * Available options are:\n * <ul>\n * <li><code>top</code> - the navigation button are placed above the component.</li>\n * <li><code>bottom</code> - the navigation button arrows are placed below the component.</li>\n * </ul>\n *\n * @public\n */\n @property()\n navigationPlacement: `${UDExCarouselNavigationPosition}` = UDExCarouselNavigationPosition.top;\n\n /**\n * Defines the content of the component.\n *\n * @slot\n * @public\n */\n @slot({ \"default\": true, type: HTMLElement, individualSlots: true })\n items!: DefaultSlot<HTMLElement>;\n\n /**\n * Defines the number of items per page depending on the carousel width.\n *\n * - 'S' for screens smaller than 600 pixels.\n * - 'M' for screens greater than or equal to 600 pixels and smaller than 1024 pixels.\n * - 'L' for screens greater than or equal to 1024 pixels and smaller than 1440 pixels.\n * - 'XL' for screens greater than or equal to 1440 pixels.\n *\n * One item per page is shown by default.\n * @default \"S1 M1 L1 XL1\"\n * @public\n */\n @property()\n itemsPerPage = \"S1 M1 L1 XL1\";\n\n /**\n * Defines the style of the page indicator.\n * Available options are:\n *\n * - `Default` - The page indicator will be visualized as dots if there are fewer than 9 pages. If there are more pages, the page indicator will switch to displaying the current page and the total number of pages. (e.g. X of Y)\n * - `Numeric` - The page indicator will display the current page and the total number of pages. (e.g. X of Y)\n * @since 1.10\n * @default \"Default\"\n * @public\n */\n @property()\n pageIndicatorType: `${CarouselPageIndicatorType}` = \"Default\";\n\n /**\n * Defines the prev button is disabled\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n isPrevButtonDisabled!: boolean;\n\n /**\n * Defines the next button is disabled\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n isNextButtonDisabled!: boolean;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default ''\n * @public\n */\n @property({ type: String })\n accessibleName: string = \"\";\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n get nextPageText(): string {\n return translate(UDExCarousel, CAROUSEL_NEXT_ARROW_TEXT);\n }\n\n get previousPageText(): string {\n return translate(UDExCarousel, CAROUSEL_PREVIOUS_ARROW_TEXT);\n }\n\n get carouselClass(): string {\n const classes = \"udex-carousel\";\n\n return `${classes} udex-carousel__navigation--${this.navigationPlacement}`;\n }\n\n get buttonDesign(): UDExCarouselButtonDesign {\n return this.navigationPlacement === UDExCarouselNavigationPosition.top\n ? UDExCarouselButtonDesign.Secondary\n : UDExCarouselButtonDesign.Tertiary;\n }\n\n get showNavigationButtons(): { top: boolean; bottom: boolean } {\n return {\n top: this.navigationPlacement === UDExCarouselNavigationPosition.top,\n bottom: this.navigationPlacement === UDExCarouselNavigationPosition.bottom,\n };\n }\n\n get _hidePageIndicator(): boolean {\n return this.navigationPlacement === UDExCarouselNavigationPosition.top;\n }\n\n get _carousel(): UI5Carousel | null {\n return this.shadowRoot!.querySelector<UI5Carousel>(\"[ui5-carousel]\");\n }\n\n get _ui5CarouselRoot(): HTMLElement | null | undefined {\n return this._carousel?.shadowRoot?.querySelector(\".ui5-carousel-root\");\n }\n\n _calculateDisabledButtonsState() {\n this.isPrevButtonDisabled = !this._carousel?.hasPrev;\n this.isNextButtonDisabled = !this._carousel?.hasNext;\n }\n\n _prevButtonClick(e: UI5CustomEvent<UDExButton, \"click\">) {\n if (this.isPrevButtonDisabled) {\n return;\n }\n\n this._carousel?._navButtonClick(e as unknown as UI5CustomEvent<Icon, \"click\">);\n }\n\n _nextButtonClick(e: UI5CustomEvent<UDExButton, \"click\">) {\n if (this.isNextButtonDisabled) {\n return;\n }\n\n this._carousel?._navButtonClick(e as unknown as UI5CustomEvent<Icon, \"click\">);\n }\n\n _onkeydown(e: KeyboardEvent) {\n if (isLeft(e) || isDown(e) || isRight(e) || isUp(e)) {\n this._calculateDisabledButtonsState();\n }\n }\n\n _handleNavigate(e: UI5CustomEvent<UI5Carousel, \"navigate\">): void {\n this._calculateDisabledButtonsState();\n\n this.fireDecoratorEvent(\"navigate\", e.detail);\n }\n\n onAfterRendering() {\n redirectAttributes(this, \"carousel\");\n\n this._calculateDisabledButtonsState();\n }\n}\n\nUDExCarousel.define();\n\nexport default UDExCarousel;\n"]}
1
+ {"version":3,"file":"Carousel.js","sourceRoot":"","sources":["../src/Carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport type { DefaultSlot } 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 jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport {\n isUp, isDown, isRight, isLeft,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport {\n CAROUSEL_NEXT_ARROW_TEXT,\n CAROUSEL_PREVIOUS_ARROW_TEXT,\n CAROUSEL_AUTOPLAY_TOGGLE_START,\n CAROUSEL_AUTOPLAY_TOGGLE_STOP,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport redirectAttributes from \"./utils/redirectAttributes.js\";\nimport type UI5Carousel from \"@ui5/webcomponents/dist/Carousel.js\";\nimport type { CarouselNavigateEventDetail } from \"@ui5/webcomponents/dist/Carousel.js\";\nimport type { UI5CustomEvent } from \"@ui5/webcomponents-base\";\nimport translate from \"./utils/translate.js\";\n\nimport CarouselTemplate from \"./CarouselTemplate.js\";\n\n// Styles\nimport CarouselCss from \"./generated/themes/Carousel.css.js\";\nimport type CarouselPageIndicatorType from \"@ui5/webcomponents/dist/types/CarouselPageIndicatorType.js\";\n\nexport enum UDExCarouselNavigationPosition {\n top = \"top\",\n bottom = \"bottom\",\n}\n\nexport enum UDExCarouselButtonDesign {\n Secondary = \"Secondary\",\n Tertiary = \"Tertiary\",\n}\n\ntype UDExCarouselAutoplayToggleEventDetails = {\n isPaused: boolean;\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-carousel</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Carousel.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-carousel\n * @public\n */\n@customElement({\n tag: \"udex-carousel\",\n renderer: jsxRenderer,\n styles: CarouselCss,\n template: CarouselTemplate,\n})\n/**\n * Triggered when carousel navigates to a new slide\n * @public\n * @param { CustomEvent }\n */\n@event(\"navigate\")\n/**\n * Fired event when the user click on a play/paused button.\n *\n * @public\n * @param {boolean} isPaused - Indicates current state of autoplay\n */\n@event(\"autoplay-toggle-click\", { bubbles: true })\n\nclass UDExCarousel extends UI5Element {\n eventDetails!: {\n \"navigate\": CarouselNavigateEventDetail,\n \"autoplay-toggle-click\": UDExCarouselAutoplayToggleEventDetails,\n };\n /**\n * Defines the position of the navigation.\n * <br><br>\n * Available options are:\n * <ul>\n * <li><code>top</code> - the navigation button are placed above the component.</li>\n * <li><code>bottom</code> - the navigation button arrows are placed below the component.</li>\n * </ul>\n *\n * @public\n */\n @property()\n navigationPlacement: `${UDExCarouselNavigationPosition}` = UDExCarouselNavigationPosition.top;\n /**\n * Controls carousel autoplay functionality\n * @public\n * @default undefined\n */\n @property({ type: Boolean })\n autoplay?: boolean;\n\n /**\n * Defines carousel autoplay speed in milliseconds till next slide\n * @public\n */\n @property({ type: Number })\n autoplaySpeed: number = 2000;\n\n /**\n * Indicates current state of autoplay.\n *\n * @default true\n * @private\n */\n @property({ type: Boolean })\n _autoplayIsPaused = true;\n\n /**\n * Defines whether the carousel should loop, i.e show the first page after the last page is reached and vice versa.\n * @public\n * @default false\n */\n @property({ type: Boolean })\n cyclic?: boolean;\n\n /**\n * Defines the content of the component.\n *\n * @slot\n * @public\n */\n @slot({ \"default\": true, type: HTMLElement, individualSlots: true })\n items!: DefaultSlot<HTMLElement>;\n\n /**\n * Defines the number of items per page depending on the carousel width.\n *\n * - 'S' for screens smaller than 600 pixels.\n * - 'M' for screens greater than or equal to 600 pixels and smaller than 1024 pixels.\n * - 'L' for screens greater than or equal to 1024 pixels and smaller than 1440 pixels.\n * - 'XL' for screens greater than or equal to 1440 pixels.\n *\n * One item per page is shown by default.\n * @default \"S1 M1 L1 XL1\"\n * @public\n */\n @property()\n itemsPerPage = \"S1 M1 L1 XL1\";\n\n /**\n * Defines the style of the page indicator.\n * Available options are:\n *\n * - `Default` - The page indicator will be visualized as dots if there are fewer than 9 pages. If there are more pages, the page indicator will switch to displaying the current page and the total number of pages. (e.g. X of Y)\n * - `Numeric` - The page indicator will display the current page and the total number of pages. (e.g. X of Y)\n * @since 1.10\n * @default \"Default\"\n * @public\n */\n @property()\n pageIndicatorType: `${CarouselPageIndicatorType}` = \"Default\";\n\n /**\n * Defines the prev button is disabled\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n isPrevButtonDisabled!: boolean;\n\n /**\n * Defines the next button is disabled\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n isNextButtonDisabled!: boolean;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default ''\n * @public\n */\n @property({ type: String })\n accessibleName: string = \"\";\n\n /**\n * Tracks whether the inner carousel has multiple pages (updated after render).\n *\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _hasManyPages = false;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _autoplayInterval: ReturnType<typeof setInterval> | null = null;\n _autoplayLastToggle = Date.now();\n _autoplayMinTimeBetweenToggle = 250;\n _autoplayManualStop = false;\n _resizeHandler: ResizeObserverCallback;\n\n constructor() {\n super();\n this._resizeHandler = this._onResize.bind(this);\n }\n\n onAfterRendering() {\n redirectAttributes(this, \"carousel\");\n\n this._calculateDisabledButtonsState();\n\n if (this._autoplayInterval === null) {\n this._startAutoplay();\n }\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._resizeHandler);\n\n if (this._autoplayInterval) {\n clearInterval(this._autoplayInterval);\n }\n }\n\n onEnterDOM(): void {\n ResizeHandler.register(this, this._resizeHandler);\n }\n\n _onResize(): void {\n this._hasManyPages = this._carousel?.hasManyPages ?? false;\n }\n\n _autoplayLoop = () => {\n const items = this._carousel?.items;\n if (!items) {\n return;\n }\n\n const currentSlide = this._carousel._currentPageIndex;\n const itemsPerPage = this._carousel.effectiveItemsPerPage;\n const isLastSlide = currentSlide === (items.length - itemsPerPage);\n\n if (isLastSlide && !this.cyclic) {\n this._stopAutoplay();\n this._autoplayManualStop = true;\n\n return;\n }\n\n const nextSlide = isLastSlide ? 0 : (currentSlide + itemsPerPage);\n\n this._carousel?.navigateTo(nextSlide);\n this._calculateDisabledButtonsState();\n };\n\n _startAutoplay(): void {\n if (!this.autoplay) {\n return;\n }\n\n if (!this._carousel?.items) {\n console.warn(\"[UDExCarousel] Cannot start autoplay on an empty carousel\");\n return;\n }\n\n const toggleBuffer = Date.now() - this._autoplayLastToggle;\n if (this._autoplayInterval !== null && toggleBuffer <= this._autoplayMinTimeBetweenToggle) {\n this._autoplayLastToggle = Date.now();\n return;\n }\n\n if (this._autoplayInterval !== null) {\n clearInterval(this._autoplayInterval);\n }\n\n this._autoplayInterval = setInterval(this._autoplayLoop, this.autoplaySpeed);\n this._autoplayIsPaused = false;\n this._autoplayLastToggle = Date.now();\n }\n\n _stopAutoplay(): void {\n if (!this._autoplayInterval) {\n return;\n }\n\n clearInterval(this._autoplayInterval);\n this._autoplayIsPaused = true;\n this._autoplayLastToggle = Date.now();\n }\n\n _onAutoplayToggleClick(): void {\n if (this._autoplayIsPaused) {\n this._startAutoplay();\n this._autoplayManualStop = false;\n } else {\n this._stopAutoplay();\n this._autoplayManualStop = true;\n }\n\n this.fireDecoratorEvent(\"autoplay-toggle-click\", {\n isPaused: this._autoplayIsPaused,\n });\n }\n\n _onFocusIn(): void {\n this._stopAutoplay();\n }\n\n _onFocusOut(): void {\n if (!this._autoplayManualStop) {\n this._startAutoplay();\n }\n }\n\n _onMouseEnter(): void {\n this._stopAutoplay();\n }\n\n _onMouseLeave(): void {\n if (!this._autoplayManualStop) {\n this._startAutoplay();\n }\n }\n\n _calculateDisabledButtonsState() {\n this.isPrevButtonDisabled = !this._carousel?.hasPrev;\n this.isNextButtonDisabled = !this._carousel?.hasNext;\n }\n\n _prevButtonClick() {\n if (this.isPrevButtonDisabled || !this._carousel) {\n return;\n }\n\n this._carousel.navigateLeft();\n this._calculateDisabledButtonsState();\n }\n\n _nextButtonClick() {\n if (this.isNextButtonDisabled || !this._carousel) {\n return;\n }\n\n this._carousel.navigateRight();\n this._calculateDisabledButtonsState();\n }\n\n _onkeydown(e: KeyboardEvent) {\n if (isLeft(e) || isDown(e) || isRight(e) || isUp(e)) {\n this._calculateDisabledButtonsState();\n }\n }\n\n _handleNavigate(e: UI5CustomEvent<UI5Carousel, \"navigate\">): void {\n this._calculateDisabledButtonsState();\n\n this.fireDecoratorEvent(\"navigate\", e.detail);\n }\n\n get nextPageText(): string {\n return translate(UDExCarousel, CAROUSEL_NEXT_ARROW_TEXT);\n }\n\n get previousPageText(): string {\n return translate(UDExCarousel, CAROUSEL_PREVIOUS_ARROW_TEXT);\n }\n\n get carouselClass(): string {\n const classes = \"udex-carousel\";\n\n return `${classes} udex-carousel__navigation--${this.navigationPlacement}`;\n }\n\n get navigationWrapperClass(): string {\n let _class = \"udex-carousel__navigation-wrapper\";\n\n if (this.autoplay) {\n _class += \" udex-carousel__navigation-wrapper--autoplay\";\n }\n\n return _class;\n }\n\n get navigationButtonWrapperClass(): string {\n let _class = \"udex-carousel__navigation-button-wrapper\";\n\n if (this._carousel?.isPageTypeDots) {\n _class += \" udex-carousel__navigation-button-wrapper--dot-indicators\";\n }\n\n return _class;\n }\n\n get buttonDesign(): UDExCarouselButtonDesign {\n return this.navigationPlacement === UDExCarouselNavigationPosition.top\n ? UDExCarouselButtonDesign.Secondary\n : UDExCarouselButtonDesign.Tertiary;\n }\n\n get showNavigationButtons(): { top: boolean; bottom: boolean } {\n return {\n top: this.navigationPlacement === UDExCarouselNavigationPosition.top && this._hasManyPages,\n bottom: this.navigationPlacement === UDExCarouselNavigationPosition.bottom && this._hasManyPages,\n };\n }\n\n get _hidePageIndicator(): boolean {\n return this.navigationPlacement === UDExCarouselNavigationPosition.top;\n }\n\n get _carousel(): UI5Carousel | null {\n return this.shadowRoot!.querySelector<UI5Carousel>(\"[ui5-carousel]\");\n }\n\n get _isBottomNavigation(): boolean {\n return this.navigationPlacement === UDExCarouselNavigationPosition.bottom;\n }\n\n get autoplayToggleButtonTooltipText(): string {\n return this._autoplayIsPaused\n ? translate(UDExCarousel, CAROUSEL_AUTOPLAY_TOGGLE_START)\n : translate(UDExCarousel, CAROUSEL_AUTOPLAY_TOGGLE_STOP);\n }\n}\n\nUDExCarousel.define();\n\nexport default UDExCarousel;\nexport type { CarouselNavigateEventDetail, UDExCarouselAutoplayToggleEventDetails };\n"]}
@@ -2,14 +2,21 @@ import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime"
2
2
  import UI5Carousel from "@ui5/webcomponents/dist/Carousel.js";
3
3
  import UDExButton from "./Button.js";
4
4
  import UDExButtonSize from "./types/ButtonSize.js";
5
+ import UDExButtonDesign from "./types/ButtonDesign.js";
5
6
  import CarouselArrowsPlacement from "@ui5/webcomponents/dist/types/CarouselArrowsPlacement.js";
6
7
  import slimArrowLeft from "@ui5/webcomponents-icons/dist/slim-arrow-left.js";
7
8
  import slimArrowRight from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
9
+ import play from "@ui5/webcomponents-icons/dist/play.js";
10
+ import pause from "@ui5/webcomponents-icons/dist/pause.js";
8
11
  export default function CarouselTemplate() {
9
- return (_jsxs("div", { className: this.carouselClass, onKeyDown: this._onkeydown, children: [this.showNavigationButtons.top && navigation.call(this), _jsx(UI5Carousel, { itemsPerPage: this.itemsPerPage, pageIndicatorType: this.pageIndicatorType, id: "carousel", hideNavigationArrows: true, arrowsPlacement: CarouselArrowsPlacement.Navigation, accessibleName: this.accessibleName, hidePageIndicator: this._hidePageIndicator, onNavigate: this._handleNavigate, children: this.items.map(item => _jsx("slot", { name: item._individualSlot })) }), this.showNavigationButtons.bottom && navigation.call(this)] }));
12
+ return (_jsxs("div", { className: this.carouselClass, onKeyDown: this._onkeydown, children: [this.showNavigationButtons.top && navigation.call(this), _jsx(UI5Carousel, { itemsPerPage: this.itemsPerPage, pageIndicatorType: this.pageIndicatorType, id: "carousel", hideNavigationArrows: true, arrowsPlacement: CarouselArrowsPlacement.Navigation, accessibleName: this.accessibleName, hidePageIndicator: this._hidePageIndicator, onNavigate: this._handleNavigate, onMouseEnter: this._onMouseEnter, onMouseLeave: this._onMouseLeave, onFocusIn: this._onFocusIn, onFocusOut: this._onFocusOut, cyclic: this.cyclic, children: this.items.map(item => _jsx("slot", { name: item._individualSlot })) }), this.showNavigationButtons.bottom && navigation.call(this)] }));
10
13
  }
11
14
  function navigation() {
12
15
  const btnClassName = "udex-carousel__navigation-button";
13
- return (_jsxs("div", { class: "udex-carousel__navigation-wrapper", part: "navigation", children: [_jsx(UDExButton, { "data-ui5-arrow-back": true, size: UDExButtonSize.Large, disabled: this.isPrevButtonDisabled, class: btnClassName, icon: slimArrowLeft, design: this.buttonDesign, tooltip: this.previousPageText, onClick: this._prevButtonClick, part: "prev-button" }), _jsx(UDExButton, { "data-ui5-arrow-forward": true, size: UDExButtonSize.Large, disabled: this.isNextButtonDisabled, class: btnClassName, icon: slimArrowRight, design: this.buttonDesign, tooltip: this.nextPageText, onClick: this._nextButtonClick, part: "next-button" })] }));
16
+ const icon = this._autoplayIsPaused ? play : pause;
17
+ return (_jsxs("div", { className: this.navigationWrapperClass, part: "navigation", children: [this.autoplay &&
18
+ _jsx(UDExButton, { class: `udex-carousel__autoplay-toggle-button`, size: UDExButtonSize.Large, design: UDExButtonDesign.Tertiary, icon: icon, onClick: this._onAutoplayToggleClick, tooltip: this.autoplayToggleButtonTooltipText }), _jsxs("div", { className: this.navigationButtonWrapperClass, children: [_jsx(UDExButton, { "data-ui5-arrow-back": true, size: UDExButtonSize.Large, disabled: this.isPrevButtonDisabled, class: btnClassName, icon: slimArrowLeft, design: this.buttonDesign, tooltip: this.previousPageText, onClick: this._prevButtonClick, part: "prev-button" }), this._isBottomNavigation &&
19
+ _jsx("div", { className: "udex-carousel__navigation-page-indicator-spacer" }), _jsx(UDExButton, { "data-ui5-arrow-forward": true, size: UDExButtonSize.Large, disabled: this.isNextButtonDisabled, class: btnClassName, icon: slimArrowRight, design: this.buttonDesign, tooltip: this.nextPageText, onClick: this._nextButtonClick, part: "next-button" })] }), this.autoplay && this._isBottomNavigation &&
20
+ _jsx("div", { className: "udex-carousel__navigation-spacer" })] }));
14
21
  }
15
22
  //# sourceMappingURL=CarouselTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselTemplate.js","sourceRoot":"","sources":["../src/CarouselTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAEnD,OAAO,uBAAuB,MAAM,0DAA0D,CAAC;AAC/F,OAAO,aAAa,MAAM,kDAAkD,CAAC;AAC7E,OAAO,cAAc,MAAM,mDAAmD,CAAC;AAE/E,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACtC,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,aAC3D,IAAI,CAAC,qBAAqB,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EACxD,KAAC,WAAW,IACV,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,EAAE,EAAC,UAAU,EACb,oBAAoB,QACpB,eAAe,EAAE,uBAAuB,CAAC,UAAU,EACnD,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAC1C,UAAU,EAAE,IAAI,CAAC,eAAe,YAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACrB,eAAM,IAAI,EAAG,IAAqB,CAAC,eAAe,GAAS,CAC5D,GACW,EACb,IAAI,CAAC,qBAAqB,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IACvD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,YAAY,GAAG,kCAAkC,CAAC;IAExD,OAAO,CACL,eAAK,KAAK,EAAC,mCAAmC,EAAC,IAAI,EAAC,YAAY,aAC9D,KAAC,UAAU,iCAET,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EACnC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,aAAa,GACP,EACb,KAAC,UAAU,oCAET,IAAI,EAAE,cAAc,CAAC,KAAK,EAC1B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EACnC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAC9B,IAAI,EAAC,aAAa,GACP,IACT,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type Carousel from \"./Carousel.js\";\nimport UI5Carousel from \"@ui5/webcomponents/dist/Carousel.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport type SlottedChild from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport CarouselArrowsPlacement from \"@ui5/webcomponents/dist/types/CarouselArrowsPlacement.js\";\nimport slimArrowLeft from \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\n\nexport default function CarouselTemplate(this: Carousel) {\n return (\n <div className={this.carouselClass} onKeyDown={this._onkeydown}>\n {this.showNavigationButtons.top && navigation.call(this)}\n <UI5Carousel\n itemsPerPage={this.itemsPerPage}\n pageIndicatorType={this.pageIndicatorType}\n id=\"carousel\"\n hideNavigationArrows\n arrowsPlacement={CarouselArrowsPlacement.Navigation}\n accessibleName={this.accessibleName}\n hidePageIndicator={this._hidePageIndicator}\n onNavigate={this._handleNavigate}>\n {this.items.map(item =>\n <slot name={(item as SlottedChild)._individualSlot}></slot>\n )}\n </UI5Carousel>\n {this.showNavigationButtons.bottom && navigation.call(this)}\n </div>\n );\n}\n\nfunction navigation(this: Carousel) {\n const btnClassName = \"udex-carousel__navigation-button\";\n\n return (\n <div class=\"udex-carousel__navigation-wrapper\" part=\"navigation\">\n <UDExButton\n data-ui5-arrow-back\n size={UDExButtonSize.Large}\n disabled={this.isPrevButtonDisabled}\n class={btnClassName}\n icon={slimArrowLeft}\n design={this.buttonDesign}\n tooltip={this.previousPageText}\n onClick={this._prevButtonClick}\n part=\"prev-button\">\n </UDExButton>\n <UDExButton\n data-ui5-arrow-forward\n size={UDExButtonSize.Large}\n disabled={this.isNextButtonDisabled}\n class={btnClassName}\n icon={slimArrowRight}\n design={this.buttonDesign}\n tooltip={this.nextPageText}\n onClick={this._nextButtonClick}\n part=\"next-button\">\n </UDExButton>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"CarouselTemplate.js","sourceRoot":"","sources":["../src/CarouselTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type Carousel from \"./Carousel.js\";\nimport UI5Carousel from \"@ui5/webcomponents/dist/Carousel.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\nimport type SlottedChild from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport CarouselArrowsPlacement from \"@ui5/webcomponents/dist/types/CarouselArrowsPlacement.js\";\nimport slimArrowLeft from \"@ui5/webcomponents-icons/dist/slim-arrow-left.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\nimport play from \"@ui5/webcomponents-icons/dist/play.js\";\nimport pause from \"@ui5/webcomponents-icons/dist/pause.js\";\n\nexport default function CarouselTemplate(this: Carousel) {\n return (\n <div className={this.carouselClass} onKeyDown={this._onkeydown}>\n {this.showNavigationButtons.top && navigation.call(this)}\n\n <UI5Carousel\n itemsPerPage={this.itemsPerPage}\n pageIndicatorType={this.pageIndicatorType}\n id=\"carousel\"\n hideNavigationArrows\n arrowsPlacement={CarouselArrowsPlacement.Navigation}\n accessibleName={this.accessibleName}\n hidePageIndicator={this._hidePageIndicator}\n onNavigate={this._handleNavigate}\n onMouseEnter={this._onMouseEnter}\n onMouseLeave={this._onMouseLeave}\n onFocusIn={this._onFocusIn}\n onFocusOut={this._onFocusOut}\n cyclic={this.cyclic}\n >\n {\n this.items.map(item =>\n <slot name={(item as SlottedChild)._individualSlot}></slot>\n )\n }\n </UI5Carousel>\n\n {this.showNavigationButtons.bottom && navigation.call(this)}\n </div>\n );\n}\n\nfunction navigation(this: Carousel) {\n const btnClassName = \"udex-carousel__navigation-button\";\n const icon = this._autoplayIsPaused ? play : pause;\n\n return (\n <div className={this.navigationWrapperClass} part=\"navigation\">\n {\n this.autoplay &&\n <UDExButton\n class={`udex-carousel__autoplay-toggle-button`}\n size={UDExButtonSize.Large}\n design={UDExButtonDesign.Tertiary}\n icon={icon}\n onClick={this._onAutoplayToggleClick}\n tooltip={this.autoplayToggleButtonTooltipText}\n ></UDExButton>\n }\n\n <div className={this.navigationButtonWrapperClass}>\n <UDExButton\n data-ui5-arrow-back\n size={UDExButtonSize.Large}\n disabled={this.isPrevButtonDisabled}\n class={btnClassName}\n icon={slimArrowLeft}\n design={this.buttonDesign}\n tooltip={this.previousPageText}\n onClick={this._prevButtonClick}\n part=\"prev-button\">\n </UDExButton>\n\n {\n this._isBottomNavigation &&\n <div className=\"udex-carousel__navigation-page-indicator-spacer\" />\n }\n\n <UDExButton\n data-ui5-arrow-forward\n size={UDExButtonSize.Large}\n disabled={this.isNextButtonDisabled}\n class={btnClassName}\n icon={slimArrowRight}\n design={this.buttonDesign}\n tooltip={this.nextPageText}\n onClick={this._nextButtonClick}\n part=\"next-button\">\n </UDExButton>\n </div>\n\n {\n this.autoplay && this._isBottomNavigation &&\n <div className=\"udex-carousel__navigation-spacer\"></div>\n }\n </div>\n );\n}\n"]}
@@ -136,6 +136,11 @@ declare class UDExDatePicker extends DateComponentBase {
136
136
  * @private
137
137
  */
138
138
  _tempValue: string;
139
+ /**
140
+ * Tracks whether the calendar popover is currently open, used to reflect aria-expanded on the control button.
141
+ * @private
142
+ */
143
+ _isPopoverOpen: boolean;
139
144
  static i18nBundle: I18nBundle;
140
145
  responsivePopover?: UDExDropdown;
141
146
  private _getCurrentFormat;
@@ -88,6 +88,11 @@ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends DateCompone
88
88
  */
89
89
  this.valueState = UDExValueState.Standard;
90
90
  this.formatPattern = UDExDatePicker_1.DEFAULT_FORMAT_PATTERN;
91
+ /**
92
+ * Tracks whether the calendar popover is currently open, used to reflect aria-expanded on the control button.
93
+ * @private
94
+ */
95
+ this._isPopoverOpen = false;
91
96
  }
92
97
  _getCurrentFormat() { return this.getFormat(); }
93
98
  _getResponsePopover() {
@@ -101,12 +106,14 @@ let UDExDatePicker = UDExDatePicker_1 = class UDExDatePicker extends DateCompone
101
106
  return this.shadowRoot.querySelector("[udex-text-field]");
102
107
  }
103
108
  _afterDropdownClose() {
109
+ this._isPopoverOpen = false;
104
110
  this._dropdownTrigger.active = false;
105
111
  this._dropdownTrigger.iconActive = false;
106
112
  this._dropdownTrigger.shadowRoot?.querySelector("input")?.blur();
107
113
  this._tempValue = "";
108
114
  }
109
115
  _afterDropdownOpen() {
116
+ this._isPopoverOpen = true;
110
117
  this._dropdownTrigger.iconActive = true;
111
118
  }
112
119
  _closeRespPopover() {
@@ -417,6 +424,9 @@ __decorate([
417
424
  __decorate([
418
425
  property()
419
426
  ], UDExDatePicker.prototype, "_tempValue", void 0);
427
+ __decorate([
428
+ property({ type: Boolean, noAttribute: true })
429
+ ], UDExDatePicker.prototype, "_isPopoverOpen", void 0);
420
430
  __decorate([
421
431
  i18n("@sapudex/web-components")
422
432
  ], UDExDatePicker, "i18nBundle", void 0);