@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
@@ -704,18 +704,21 @@ describe("SelectBox", () => {
704
704
 
705
705
  cy.get("#select-box").shadow()
706
706
  .find("udex-list-item").eq(0)
707
+ .shadow().find("[part=item]")
707
708
  .should("be.focused");
708
709
 
709
710
  cy.realPress("ArrowDown");
710
711
 
711
712
  cy.get("#select-box").shadow()
712
713
  .find("udex-list-item").eq(1)
714
+ .shadow().find("[part=item]")
713
715
  .should("be.focused");
714
716
 
715
717
  cy.realPress("ArrowUp");
716
718
 
717
719
  cy.get("#select-box").shadow()
718
720
  .find("udex-list-item").eq(0)
721
+ .shadow().find("[part=item]")
719
722
  .should("be.focused");
720
723
  });
721
724
 
@@ -727,34 +730,88 @@ describe("SelectBox", () => {
727
730
 
728
731
  cy.get("#select-box").shadow()
729
732
  .find("udex-list-group-header").shadow()
730
- .find(".udex-list__group-header-wrap")
733
+ .find(".udex-list__group-header-wrap").shadow()
734
+ .find("[part=item]")
731
735
  .should("be.focused");
732
736
 
733
737
  cy.realPress("ArrowDown");
734
738
 
735
739
  cy.get("#select-box").shadow()
736
740
  .find("udex-list-item").eq(0)
741
+ .shadow().find("[part=item]")
737
742
  .should("be.focused");
738
743
 
739
744
  cy.realPress("ArrowDown");
740
745
 
741
746
  cy.get("#select-box").shadow()
742
747
  .find("udex-list-item").eq(1)
748
+ .shadow().find("[part=item]")
743
749
  .should("be.focused");
744
750
 
745
751
  cy.realPress("ArrowUp");
746
752
 
747
753
  cy.get("#select-box").shadow()
748
754
  .find("udex-list-item").eq(0)
755
+ .shadow().find("[part=item]")
749
756
  .should("be.focused");
750
757
 
751
758
  cy.realPress("ArrowUp");
752
759
 
753
760
  cy.get("#select-box").shadow()
754
761
  .find("udex-list-group-header").shadow()
755
- .find(".udex-list__group-header-wrap")
762
+ .find(".udex-list__group-header-wrap").shadow()
763
+ .find("[part=item]")
756
764
  .should("be.focused");
757
765
  });
766
+
767
+ it("MultiSelect mode - Left arrow collapses a collapsible group header, Right arrow expands it", () => {
768
+ cy.mount(groupHeaderCollapsible);
769
+
770
+ cy.get("#select-box").shadow().find(".udex-text-field__search").click();
771
+ cy.realPress("ArrowDown");
772
+
773
+ // Focus the collapsible group header wrapper.
774
+ cy.get("#select-box").shadow()
775
+ .find("udex-list-group-header").shadow()
776
+ .find(".udex-list__group-header-wrap").shadow()
777
+ .find("[part=item]")
778
+ .should("be.focused");
779
+
780
+ // Fixture starts expanded: neither the header host nor its children are collapsed.
781
+ cy.get("#select-box").shadow()
782
+ .find("udex-list-group-header")
783
+ .should("not.have.attr", "collapsed");
784
+ cy.get("#select-box").shadow()
785
+ .find("udex-list-item")
786
+ .should("have.length", 2)
787
+ .each($item => {
788
+ cy.wrap($item).should("not.have.attr", "collapsed");
789
+ });
790
+
791
+ // Left arrow collapses the group.
792
+ cy.realPress("ArrowLeft");
793
+
794
+ cy.get("#select-box").shadow()
795
+ .find("udex-list-group-header")
796
+ .should("have.attr", "collapsed");
797
+ cy.get("#select-box").shadow()
798
+ .find("udex-list-item")
799
+ .each($item => {
800
+ cy.wrap($item).should("have.attr", "collapsed");
801
+ });
802
+
803
+ // Right arrow expands the group again.
804
+ cy.realPress("ArrowRight");
805
+
806
+ cy.get("#select-box").shadow()
807
+ .find("udex-list-group-header")
808
+ .should("not.have.attr", "collapsed");
809
+ cy.get("#select-box").shadow()
810
+ .find("udex-list-item")
811
+ .each($item => {
812
+ cy.wrap($item).should("not.have.attr", "collapsed");
813
+ });
814
+ });
758
815
  });
759
816
 
760
817
  describe("Select Box focus tests", () => {
@@ -1488,6 +1545,7 @@ describe("SelectBox", () => {
1488
1545
  cy.get("#select-box").shadow()
1489
1546
  .find("udex-list-item")
1490
1547
  .last()
1548
+ .shadow().find("[part=item]")
1491
1549
  .should("be.focused");
1492
1550
  });
1493
1551
 
@@ -1508,7 +1566,8 @@ describe("SelectBox", () => {
1508
1566
 
1509
1567
  // A list item should now be focused (not the search input).
1510
1568
  cy.get("#select-box").shadow()
1511
- .find("udex-list-item").eq(0)
1569
+ .find("udex-list-item").eq(0).shadow()
1570
+ .find("[part=item]")
1512
1571
  .should("be.focused");
1513
1572
 
1514
1573
  // Tab should be intercepted and focus redirected into the footer.
@@ -1883,6 +1942,7 @@ describe("SelectBox", () => {
1883
1942
 
1884
1943
  cy.get("#select-box").shadow()
1885
1944
  .find("udex-list-item").eq(0)
1945
+ .shadow().find("[part=item]")
1886
1946
  .should("be.focused");
1887
1947
  });
1888
1948
 
@@ -1895,6 +1955,7 @@ describe("SelectBox", () => {
1895
1955
 
1896
1956
  cy.get("#select-box").shadow()
1897
1957
  .find("udex-list-item").eq(1)
1958
+ .shadow().find("[part=item]")
1898
1959
  .should("be.focused");
1899
1960
  });
1900
1961
 
@@ -1907,6 +1968,7 @@ describe("SelectBox", () => {
1907
1968
 
1908
1969
  cy.get("#select-box").shadow()
1909
1970
  .find("udex-list-item").last()
1971
+ .shadow().find("[part=item]")
1910
1972
  .should("be.focused");
1911
1973
  });
1912
1974
 
@@ -1920,6 +1982,7 @@ describe("SelectBox", () => {
1920
1982
 
1921
1983
  cy.get("#select-box").shadow()
1922
1984
  .find("udex-list-item").eq(1)
1985
+ .shadow().find("[part=item]")
1923
1986
  .should("be.focused");
1924
1987
  });
1925
1988
 
@@ -2304,4 +2367,72 @@ describe("SelectBox", () => {
2304
2367
  .should("be.greaterThan", 0);
2305
2368
  });
2306
2369
  });
2370
+
2371
+ // Added: regression coverage for the WCAG 4.1.2 Treeview Checkbox pattern
2372
+ // in SearchableListBase. SelectBox sets defaultAccessibleRole = "listbox",
2373
+ // so it must NOT switch to the tree pattern even in MultiSelect + groups.
2374
+ describe("Tree accessibility pattern regression", () => {
2375
+ const selectBoxMultiSelectGroup = <div style="width: 350px; position:relative;">
2376
+ <UDExSelectBox
2377
+ id="select-box-tree-regression"
2378
+ mode={UDExListMode.MultiSelect}
2379
+ label="Programming languages">
2380
+ <UDExSelectBoxGroupHeader label="Programming Languages">
2381
+ <UDExSelectBoxItem label="JavaScript"></UDExSelectBoxItem>
2382
+ <UDExSelectBoxItem label="Python"></UDExSelectBoxItem>
2383
+ </UDExSelectBoxGroupHeader>
2384
+ </UDExSelectBox>
2385
+ </div>;
2386
+
2387
+ beforeEach(() => {
2388
+ cy.mount(selectBoxMultiSelectGroup);
2389
+ cy.get("#select-box-tree-regression").shadow()
2390
+ .find(".udex-text-field__trigger").click();
2391
+ });
2392
+
2393
+ it("host [udex-list] has NO aria-multiselectable attribute", () => {
2394
+ cy.get("#select-box-tree-regression").shadow()
2395
+ .find("[udex-list]").should("not.have.attr", "aria-multiselectable");
2396
+ });
2397
+
2398
+ // Updated: `accessibleRoleForList` no longer collapses to `"group"` for grouped
2399
+ // non-tree mode — it now returns `defaultAccessibleRole` (`"listbox"` for SelectBox)
2400
+ // in every non-tree case. This aligns with the test's original intent (title says
2401
+ // "keeps role=\"listbox\""); the prior `role="group"` assertion was already stale.
2402
+ it("inner list div keeps role=\"listbox\" (not \"tree\")", () => {
2403
+ cy.get("#select-box-tree-regression").shadow()
2404
+ .find("[udex-list]").shadow()
2405
+ .find("#udex-list").should("have.attr", "role", "listbox");
2406
+ });
2407
+
2408
+ // Updated: `accessibleRole` string property on udex-list-group-header was replaced
2409
+ // by a `_treeMode` boolean (reflected as the `_tree-mode` attribute). SelectBox is
2410
+ // not tree-capable so the boolean must stay false and the attribute must be absent.
2411
+ it("group header host has NO _tree-mode attribute", () => {
2412
+ cy.get("#select-box-tree-regression").shadow()
2413
+ .find("udex-list-group-header")
2414
+ .should("not.have.attr", "_tree-mode");
2415
+ });
2416
+
2417
+ it("child items have role=\"option\", not \"treeitem\"", () => {
2418
+ cy.get("#select-box-tree-regression").shadow()
2419
+ .find("udex-list-group-header")
2420
+ .find("udex-list-item").eq(0).shadow()
2421
+ .find("[part=item]").should("have.attr", "role", "option");
2422
+ });
2423
+
2424
+ it("child items have NO aria-checked (roleItem !== treeitem)", () => {
2425
+ cy.get("#select-box-tree-regression").shadow()
2426
+ .find("udex-list-group-header")
2427
+ .find("udex-list-item").eq(0).shadow()
2428
+ .find("[part=item]").should("not.have.attr", "aria-checked");
2429
+ });
2430
+
2431
+ it("child items' checkbox is NOT aria-hidden (JAWS double-announce guard only applies to tree)", () => {
2432
+ cy.get("#select-box-tree-regression").shadow()
2433
+ .find("udex-list-group-header")
2434
+ .find("udex-list-item").eq(0).shadow()
2435
+ .find("udex-checkbox").should("not.have.attr", "aria-hidden");
2436
+ });
2437
+ });
2307
2438
  });
@@ -10,10 +10,11 @@ const outlineTag =<UDExTag id="tag-outlined" text="Outlined" design="Outlined"><
10
10
  const iconTag = <UDExTag id="tag-icon" text="Tag text" icon="decline"></UDExTag>
11
11
  const startIconTag = <UDExTag id="tag-icon-start" text="Tag text" icon="decline" iconPlacement="Start"></UDExTag>
12
12
  const readonlyTag = <UDExTag id="tag-readonly" text="Tag text" icon="accept" readOnly></UDExTag>
13
+ const readonlyNoIconTag = <UDExTag id="tag-readonly-no-icon" text="Tag text" readOnly></UDExTag>
13
14
  const nonselectableTag = <UDExTag id="tag-nonselectable" text="Non selectable" non-selectable></UDExTag>
14
15
  const nonselectableIconTag = <UDExTag id="tag-nonselectable-icon" text="Non selectable" icon="decline" non-selectable></UDExTag>
15
16
  const linkTag = <UDExTag id="tag-link" text="SAP home page" href="https://sap.com"></UDExTag>
16
- const nonInteractiveTag = <UDExTag id="tag-nonselectable" text="Non selectable" icon="decline" non-interactive></UDExTag>
17
+ const nonInteractiveTag = <UDExTag id="tag-noninteractive" text="Non selectable" icon="decline" non-interactive></UDExTag>
17
18
 
18
19
  describe("Tag", () => {
19
20
  it("is rendered", () => {
@@ -118,8 +119,38 @@ describe("Tag", () => {
118
119
 
119
120
  it("icon is not focusable when non-interactive attribute is set", () => {
120
121
  cy.mount(nonInteractiveTag)
121
- cy.get("#tag-nonselectable").shadow().find(".udex-tag__icon").should("have.attr", "mode", "Decorative")
122
- });
122
+ cy.get("#tag-noninteractive").shadow().find(".udex-tag__icon").should("have.attr", "mode", "Decorative")
123
+ });
124
+
125
+ it("non-interactive tag renders with udex-tag--noninteractive class", () => {
126
+ cy.mount(nonInteractiveTag)
127
+ cy.get("#tag-noninteractive").shadow().find(".udex-tag--noninteractive").should("be.visible")
128
+ });
129
+
130
+ it("non-interactive tag icon has no wrapping button", () => {
131
+ cy.mount(nonInteractiveTag)
132
+ cy.get("#tag-noninteractive").shadow().find(".udex-tag__btn-icon").should("not.exist")
133
+ });
134
+
135
+ it("readonly tag renders the icon inside shadow DOM", () => {
136
+ cy.mount(readonlyTag)
137
+ cy.get("#tag-readonly").shadow().find(".udex-tag__icon").should("be.visible")
138
+ });
139
+
140
+ it("readonly tag icon has no wrapping button", () => {
141
+ cy.mount(readonlyTag)
142
+ cy.get("#tag-readonly").shadow().find(".udex-tag__btn-icon").should("not.exist")
143
+ });
144
+
145
+ it("readonly tag icon is non-interactive (decorative)", () => {
146
+ cy.mount(readonlyTag)
147
+ cy.get("#tag-readonly").shadow().find(".udex-tag__icon").should("have.attr", "mode", "Decorative")
148
+ });
149
+
150
+ it("readonly tag without icon renders no icon", () => {
151
+ cy.mount(readonlyNoIconTag)
152
+ cy.get("#tag-readonly-no-icon").shadow().find(".udex-tag__icon").should("not.exist")
153
+ });
123
154
 
124
155
  it("tests if tag with link is correctly rendered", () => {
125
156
  cy.mount(linkTag)
@@ -262,6 +262,74 @@ describe("Text Field", () => {
262
262
  });
263
263
  });
264
264
 
265
+ describe("icon accessibility attributes (a11y)", () => {
266
+ // Updated: the accessibility fix now uses two private string properties on TextField —
267
+ // `_iconAriaHasPopup` and `_iconAriaExpanded` (both @property type String, reflected as the
268
+ // kebab attributes `_icon-aria-has-popup` / `_icon-aria-expanded`). The `iconAccessibilityAttributes`
269
+ // getter assembles a ButtonAccessibilityAttributes object from them (returning undefined when both
270
+ // are unset) and forwards it to the internal UDExControlButton via `accessibilityAttributes`, so
271
+ // aria-haspopup / aria-expanded land on the icon *button* (its shadow `.ui5-button-root`), not the input.
272
+ // The previous object-based `_iconAccessibilityAttributes` approach no longer exists.
273
+ // Traversal to the button root:
274
+ // [udex-text-field] -> shadow -> [udex-control-button] -> shadow -> .ui5-button-root
275
+
276
+ const controlButtonRoot = (id: string) =>
277
+ cy
278
+ .get(`#${id}`)
279
+ .shadow()
280
+ .find("[udex-control-button]")
281
+ .shadow()
282
+ .find(".ui5-button-root");
283
+
284
+ it("does NOT render aria-haspopup on the native input", () => {
285
+ // The input's aria-haspopup is driven only by `_ariaHasPopup`, which is unset here.
286
+ cy.mount(<UDExTextField id="noHasPopupTextField" icon="appointment-2"></UDExTextField>);
287
+ cy.get("#noHasPopupTextField").shadow().find("input").should("not.have.attr", "aria-haspopup");
288
+ });
289
+
290
+ it("does not forward accessibilityAttributes when neither string prop is set", () => {
291
+ // getter returns undefined => the control button renders no aria-haspopup / aria-expanded.
292
+ cy.mount(<UDExTextField id="noIconA11yTextField" icon="appointment-2"></UDExTextField>);
293
+ controlButtonRoot("noIconA11yTextField").should("not.have.attr", "aria-haspopup");
294
+ controlButtonRoot("noIconA11yTextField").should("not.have.attr", "aria-expanded");
295
+ });
296
+
297
+ it("forwards _iconAriaHasPopup / _iconAriaExpanded to the control button (aria-haspopup / aria-expanded)", () => {
298
+ // Both string props supplied as the reflected kebab attributes on the host.
299
+ cy.mount(
300
+ <UDExTextField
301
+ id="iconA11yTextField"
302
+ icon="appointment-2"
303
+ _icon-aria-has-popup="grid"
304
+ _icon-aria-expanded="false"
305
+ ></UDExTextField>,
306
+ );
307
+
308
+ controlButtonRoot("iconA11yTextField").should("have.attr", "aria-haspopup", "grid");
309
+ controlButtonRoot("iconA11yTextField").should("have.attr", "aria-expanded", "false");
310
+ });
311
+
312
+ it("reflects an updated expanded value onto the control button", () => {
313
+ cy.mount(
314
+ <UDExTextField
315
+ id="iconExpandedTextField"
316
+ icon="appointment-2"
317
+ _icon-aria-has-popup="grid"
318
+ _icon-aria-expanded="false"
319
+ ></UDExTextField>,
320
+ );
321
+
322
+ controlButtonRoot("iconExpandedTextField").should("have.attr", "aria-expanded", "false");
323
+
324
+ // Flip the reactive string property; the getter re-derives and the button re-renders.
325
+ cy.get("#iconExpandedTextField").then($el => {
326
+ ($el[0] as unknown as { _iconAriaExpanded: string })._iconAriaExpanded = "true";
327
+ });
328
+
329
+ controlButtonRoot("iconExpandedTextField").should("have.attr", "aria-expanded", "true");
330
+ });
331
+ });
332
+
265
333
  describe("with the type Number", () => {
266
334
  beforeEach( () => {
267
335
  cy.mount(numberTextField)
@@ -1,5 +1,7 @@
1
1
  import UDExAccordion from "../../instrumented/Accordion.js";
2
2
  import UDExAccordionItem from "../../instrumented/AccordionItem.js";
3
+ import UDExAccordionSpotlight from "../../instrumented/AccordionSpotlight.js";
4
+ import UDExAccordionSpotlightItem from "../../instrumented/AccordionSpotlightItem.js";
3
5
  import UDExAvatar from "../../instrumented/Avatar.js";
4
6
  import UDExAvatarGroup from "../../instrumented/AvatarGroup.js";
5
7
  import UDExBadge from "../../instrumented/Badge.js";
@@ -7,6 +9,7 @@ import UDExBreadcrumbs from "../../instrumented/Breadcrumbs.js";
7
9
  import UDExBreadcrumbsItem from "../../instrumented/BreadcrumbsItem.js";
8
10
  import UDExBusyIndicator from "../../instrumented/BusyIndicator.js";
9
11
  import UDExButton from "../../instrumented/Button.js";
12
+ import UDExCarousel from "../../instrumented/Carousel.js";
10
13
  import UDExCheckbox from "../../instrumented/Checkbox.js";
11
14
  import UDExContact from "../../instrumented/Contact.js";
12
15
  import UDExContactItem from "../../instrumented/ContactItem.js";
@@ -89,6 +92,8 @@ import UDExWizardStep from "../../instrumented/WizardStep.js";
89
92
  export {
90
93
  UDExAccordion,
91
94
  UDExAccordionItem,
95
+ UDExAccordionSpotlight,
96
+ UDExAccordionSpotlightItem,
92
97
  UDExAvatar,
93
98
  UDExAvatarGroup,
94
99
  UDExBadge,
@@ -96,6 +101,7 @@ export {
96
101
  UDExBreadcrumbsItem,
97
102
  UDExBusyIndicator,
98
103
  UDExButton,
104
+ UDExCarousel,
99
105
  UDExCheckbox,
100
106
  UDExContact,
101
107
  UDExContactItem,
@@ -1,5 +1,7 @@
1
1
  import UDExAccordion from "../../src/Accordion.js";
2
2
  import UDExAccordionItem from "../../src/AccordionItem.js";
3
+ import UDExAccordionSpotlight from "../../src/AccordionSpotlight.js";
4
+ import UDExAccordionSpotlightItem from "../../src/AccordionSpotlightItem.js";
3
5
  import UDExAvatar from "../../src/Avatar.js";
4
6
  import UDExAvatarGroup from "../../src/AvatarGroup.js";
5
7
  import UDExBadge from "../../src/Badge.js";
@@ -7,6 +9,7 @@ import UDExBreadcrumbs from "../../src/Breadcrumbs.js";
7
9
  import UDExBreadcrumbsItem from "../../src/BreadcrumbsItem.js";
8
10
  import UDExBusyIndicator from "../../src/BusyIndicator.js";
9
11
  import UDExButton from "../../src/Button.js";
12
+ import UDExCarousel from "../../src/Carousel.js";
10
13
  import UDExCheckbox from "../../src/Checkbox.js";
11
14
  import UDExContact from "../../src/Contact.js";
12
15
  import UDExContactItem from "../../src/ContactItem.js";
@@ -89,6 +92,8 @@ import UDExWizardStep from "../../src/WizardStep.js";
89
92
  export {
90
93
  UDExAccordion,
91
94
  UDExAccordionItem,
95
+ UDExAccordionSpotlight,
96
+ UDExAccordionSpotlightItem,
92
97
  UDExAvatar,
93
98
  UDExAvatarGroup,
94
99
  UDExBadge,
@@ -96,6 +101,7 @@ export {
96
101
  UDExBreadcrumbsItem,
97
102
  UDExBusyIndicator,
98
103
  UDExButton,
104
+ UDExCarousel,
99
105
  UDExCheckbox,
100
106
  UDExContact,
101
107
  UDExContactItem,
@@ -0,0 +1,149 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import type { DefaultSlot, Slot } from "@ui5/webcomponents-base/dist/UI5Element.js";
3
+ import AccordionSpotlightItem from "./AccordionSpotlightItem.js";
4
+ import "@ui5/webcomponents-icons/dist/play.js";
5
+ import "@ui5/webcomponents-icons/dist/pause.js";
6
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
7
+ export declare enum UDExAccordionSpotlightVerticalAlignment {
8
+ Top = "Top",
9
+ Center = "Center"
10
+ }
11
+ export declare enum UDExAccordionSpotlightPlacement {
12
+ Start = "Start",
13
+ End = "End"
14
+ }
15
+ export declare enum UDExAccordionSpotlightMediaMode {
16
+ Dynamic = "Dynamic",
17
+ Static = "Static"
18
+ }
19
+ /**
20
+ * @class
21
+ *
22
+ * <h3 class="comment-api-title">Overview</h3>
23
+ *
24
+ * Vertical accordion navigation with spotlight layout. Items are listed on the
25
+ * left; the expanded panel is displayed on the right (desktop) or inline below
26
+ * the heading (mobile). Follows the WAI-ARIA APG Accordion pattern.
27
+ *
28
+ * <h3>Usage</h3>
29
+ *
30
+ * For the <code>udex-accordion-spotlight</code>
31
+ * <h3>ES6 Module Import</h3>
32
+ *
33
+ * <code>import "@sapudex/web-components/dist/AccordionSpotlight.js";</code>
34
+ *
35
+ * @constructor
36
+ * @extends UI5Element
37
+ * @public
38
+ */
39
+ declare class UDExAccordionSpotlight extends UI5Element {
40
+ eventDetails: {
41
+ "item-click": {
42
+ item: AccordionSpotlightItem;
43
+ };
44
+ };
45
+ /**
46
+ * The index of the currently expanded item (0-based).
47
+ * Derived from items' <code>selected</code> attribute; kept in sync by the parent.
48
+ *
49
+ * @private
50
+ */
51
+ _selectedIndex: number;
52
+ /**
53
+ * Vertical alignment of the navigation sidebar relative to the content panel.
54
+ *
55
+ * @default "Top"
56
+ * @public
57
+ */
58
+ verticalAlignment: `${UDExAccordionSpotlightVerticalAlignment}`;
59
+ /**
60
+ * Placement of the navigation sidebar — "Start" (left) or "End" (right).
61
+ *
62
+ * @default "Start"
63
+ * @public
64
+ */
65
+ placement: `${UDExAccordionSpotlightPlacement}`;
66
+ /**
67
+ * Enables automatic cycling through items on an interval.
68
+ *
69
+ * @default false
70
+ * @public
71
+ */
72
+ autoPlay: boolean;
73
+ /**
74
+ * Interval in milliseconds between automatic item advances. Applies only when autoPlay is enabled.
75
+ *
76
+ * @default 5000
77
+ * @public
78
+ */
79
+ autoPlayInterval: number;
80
+ /**
81
+ * Defines the width of the navigation panel.
82
+ *
83
+ * @default "auto"
84
+ * @public
85
+ */
86
+ tabWidth: string;
87
+ /**
88
+ * Controls how the media area behaves. In <code>Static</code> mode a single
89
+ * persistent media element (image or video) is displayed alongside the nav
90
+ * list and never changes when items are expanded. In <code>Dynamic</code>
91
+ * mode (default) each item provides its own content panel.
92
+ *
93
+ * @default "Dynamic"
94
+ * @public
95
+ */
96
+ mediaMode: `${UDExAccordionSpotlightMediaMode}`;
97
+ /**
98
+ * @private
99
+ */
100
+ _isMobile: boolean;
101
+ /**
102
+ * @private
103
+ */
104
+ _isPaused: boolean;
105
+ /**
106
+ * The slotted AccordionSpotlightItem elements.
107
+ *
108
+ * @public
109
+ */
110
+ items: DefaultSlot<AccordionSpotlightItem>;
111
+ /**
112
+ * Defines optional content rendered below the navigation items.
113
+ * Use to place a button or any action element beneath the items.
114
+ *
115
+ * @slot footer
116
+ * @public
117
+ */
118
+ footer: Slot<HTMLElement>;
119
+ /**
120
+ * Persistent media area shown in <code>Static</code> media mode.
121
+ * Place an <code>&lt;img&gt;</code> or <code>&lt;video&gt;</code> element here;
122
+ * it remains visible regardless of which item is currently expanded.
123
+ *
124
+ * @slot media
125
+ * @public
126
+ */
127
+ media: Slot<HTMLElement>;
128
+ _handleResizeBound: ResizeObserverCallback;
129
+ _autoPlayTimer?: number;
130
+ constructor();
131
+ onBeforeRendering(): void;
132
+ onAfterRendering(): void;
133
+ onEnterDOM(): void;
134
+ onExitDOM(): void;
135
+ _handleResize(): void;
136
+ _checkMobile(): void;
137
+ _syncItemStates(): void;
138
+ _startAutoPlay(): void;
139
+ _stopAutoPlay(): void;
140
+ _advanceItem(): void;
141
+ onPlayButtonClick(): void;
142
+ handleNavItemClick(e: MouseEvent): void;
143
+ private _selectItem;
144
+ get playBtnIcon(): string;
145
+ get showFooterSlot(): boolean;
146
+ get isStaticMedia(): boolean;
147
+ get showMediaSlot(): boolean;
148
+ }
149
+ export default UDExAccordionSpotlight;