@sapudex/web-components 2.57.0 → 2.59.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 (645) hide show
  1. package/cypress/specs/FilterMenu.cy.tsx +209 -19
  2. package/cypress/specs/List.cy.tsx +67 -4
  3. package/cypress/specs/ListItem.cy.tsx +35 -9
  4. package/cypress/specs/SelectBox.cy.tsx +101 -1
  5. package/cypress/specs/TabNavigation.cy.tsx +351 -21
  6. package/cypress/specs/TagGroup.cy.tsx +1 -1
  7. package/dist/List.d.ts +15 -1
  8. package/dist/List.js +23 -2
  9. package/dist/List.js.map +1 -1
  10. package/dist/ListGroupHeaderBase.d.ts +13 -0
  11. package/dist/ListGroupHeaderBase.js +43 -2
  12. package/dist/ListGroupHeaderBase.js.map +1 -1
  13. package/dist/ListGroupHeaderTemplate.js +26 -7
  14. package/dist/ListGroupHeaderTemplate.js.map +1 -1
  15. package/dist/ListItem.d.ts +0 -3
  16. package/dist/ListItem.js +18 -12
  17. package/dist/ListItem.js.map +1 -1
  18. package/dist/ListItemBase.d.ts +17 -0
  19. package/dist/ListItemBase.js +15 -0
  20. package/dist/ListItemBase.js.map +1 -1
  21. package/dist/ListItemTemplate.js +2 -2
  22. package/dist/ListItemTemplate.js.map +1 -1
  23. package/dist/MastheadCountrySelector.js +5 -5
  24. package/dist/MastheadCountrySelector.js.map +1 -1
  25. package/dist/MastheadCountrySelectorTemplate.d.ts +2 -0
  26. package/dist/MastheadCountrySelectorTemplate.js +15 -0
  27. package/dist/MastheadCountrySelectorTemplate.js.map +1 -0
  28. package/dist/MastheadItem.d.ts +0 -3
  29. package/dist/MastheadItem.js +3 -6
  30. package/dist/MastheadItem.js.map +1 -1
  31. package/dist/MastheadItemTemplate.d.ts +2 -0
  32. package/dist/MastheadItemTemplate.js +41 -0
  33. package/dist/MastheadItemTemplate.js.map +1 -0
  34. package/dist/MastheadMenu.d.ts +1 -0
  35. package/dist/MastheadMenu.js +4 -6
  36. package/dist/MastheadMenu.js.map +1 -1
  37. package/dist/MastheadMenuItem.d.ts +0 -3
  38. package/dist/MastheadMenuItem.js +3 -6
  39. package/dist/MastheadMenuItem.js.map +1 -1
  40. package/dist/MastheadMenuItemTemplate.d.ts +2 -0
  41. package/dist/MastheadMenuItemTemplate.js +36 -0
  42. package/dist/MastheadMenuItemTemplate.js.map +1 -0
  43. package/dist/MastheadMenuTemplate.d.ts +2 -0
  44. package/dist/MastheadMenuTemplate.js +13 -0
  45. package/dist/MastheadMenuTemplate.js.map +1 -0
  46. package/dist/MastheadMobileMenu.js +3 -3
  47. package/dist/MastheadMobileMenu.js.map +1 -1
  48. package/dist/MastheadMobileMenuTemplate.d.ts +2 -0
  49. package/dist/MastheadMobileMenuTemplate.js +33 -0
  50. package/dist/MastheadMobileMenuTemplate.js.map +1 -0
  51. package/dist/MastheadProfileMenu.d.ts +2 -4
  52. package/dist/MastheadProfileMenu.js +5 -20
  53. package/dist/MastheadProfileMenu.js.map +1 -1
  54. package/dist/MastheadProfileMenuTemplate.d.ts +2 -0
  55. package/dist/MastheadProfileMenuTemplate.js +24 -0
  56. package/dist/MastheadProfileMenuTemplate.js.map +1 -0
  57. package/dist/MastheadShell.js +3 -5
  58. package/dist/MastheadShell.js.map +1 -1
  59. package/dist/MastheadShellTemplate.d.ts +2 -0
  60. package/dist/MastheadShellTemplate.js +20 -0
  61. package/dist/MastheadShellTemplate.js.map +1 -0
  62. package/dist/RatingIndicatorTemplate.js +1 -1
  63. package/dist/RatingIndicatorTemplate.js.map +1 -1
  64. package/dist/SearchableListBase.d.ts +10 -0
  65. package/dist/SearchableListBase.js +34 -1
  66. package/dist/SearchableListBase.js.map +1 -1
  67. package/dist/SearchableListBaseTemplate.js +35 -4
  68. package/dist/SearchableListBaseTemplate.js.map +1 -1
  69. package/dist/SecondaryNavigation.d.ts +1 -0
  70. package/dist/SecondaryNavigation.js +23 -9
  71. package/dist/SecondaryNavigation.js.map +1 -1
  72. package/dist/SecondaryNavigationItem.d.ts +0 -1
  73. package/dist/SecondaryNavigationItem.js +4 -6
  74. package/dist/SecondaryNavigationItem.js.map +1 -1
  75. package/dist/SecondaryNavigationItemBase.js +2 -2
  76. package/dist/SecondaryNavigationItemBase.js.map +1 -1
  77. package/dist/SecondaryNavigationItemTemplate.d.ts +2 -0
  78. package/dist/SecondaryNavigationItemTemplate.js +12 -0
  79. package/dist/SecondaryNavigationItemTemplate.js.map +1 -0
  80. package/dist/SecondaryNavigationSubItem.d.ts +0 -2
  81. package/dist/SecondaryNavigationSubItem.js +3 -7
  82. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  83. package/dist/SecondaryNavigationSubItemTemplate.d.ts +2 -0
  84. package/dist/SecondaryNavigationSubItemTemplate.js +16 -0
  85. package/dist/SecondaryNavigationSubItemTemplate.js.map +1 -0
  86. package/dist/SecondaryNavigationTemplate.d.ts +2 -0
  87. package/dist/SecondaryNavigationTemplate.js +7 -0
  88. package/dist/SecondaryNavigationTemplate.js.map +1 -0
  89. package/dist/SelectBase.js +8 -3
  90. package/dist/SelectBase.js.map +1 -1
  91. package/dist/SideNavigationMobile.d.ts +2 -3
  92. package/dist/SideNavigationMobile.js +22 -16
  93. package/dist/SideNavigationMobile.js.map +1 -1
  94. package/dist/SideNavigationMobileTemplate.d.ts +2 -0
  95. package/dist/SideNavigationMobileTemplate.js +11 -0
  96. package/dist/SideNavigationMobileTemplate.js.map +1 -0
  97. package/dist/Tab.d.ts +0 -7
  98. package/dist/Tab.js +4 -19
  99. package/dist/Tab.js.map +1 -1
  100. package/dist/TabHeaderTemplate.d.ts +2 -0
  101. package/dist/TabHeaderTemplate.js +15 -0
  102. package/dist/TabHeaderTemplate.js.map +1 -0
  103. package/dist/TabInOverflowTemplate.d.ts +2 -0
  104. package/dist/TabInOverflowTemplate.js +7 -0
  105. package/dist/TabInOverflowTemplate.js.map +1 -0
  106. package/dist/TabNavigation.d.ts +15 -4
  107. package/dist/TabNavigation.js +70 -40
  108. package/dist/TabNavigation.js.map +1 -1
  109. package/dist/TabNavigationPopoverTemplate.d.ts +2 -0
  110. package/dist/TabNavigationPopoverTemplate.js +9 -0
  111. package/dist/TabNavigationPopoverTemplate.js.map +1 -0
  112. package/dist/TabNavigationTemplate.d.ts +2 -0
  113. package/dist/TabNavigationTemplate.js +10 -0
  114. package/dist/TabNavigationTemplate.js.map +1 -0
  115. package/dist/TabTemplate.d.ts +2 -0
  116. package/dist/TabTemplate.js +5 -0
  117. package/dist/TabTemplate.js.map +1 -0
  118. package/dist/TagGroup.d.ts +2 -2
  119. package/dist/TagGroup.js +14 -3
  120. package/dist/TagGroup.js.map +1 -1
  121. package/dist/assets/InputSuggestions-CloTVyrf.js +2 -0
  122. package/dist/assets/{ListItemStandardExpandableTextTemplate-BQtSr7yg.js → ListItemStandardExpandableTextTemplate-DpquSMb2.js} +1 -1
  123. package/dist/assets/{ar-6UKwJun6.js → ar-CMU2PGtw.js} +1 -1
  124. package/dist/assets/{ar_EG-BTSal4jr.js → ar_EG-Bi2CIb24.js} +1 -1
  125. package/dist/assets/{ar_SA-Ck13AOrQ.js → ar_SA-BXTzBfWR.js} +1 -1
  126. package/dist/assets/{bg-fF9FXKHH.js → bg-B6_PMtzW.js} +1 -1
  127. package/dist/assets/{bundle.esm-GvPkDyXP.js → bundle.esm-Cyz8a5IX.js} +244 -262
  128. package/dist/assets/{ca-ZuvXTynI.js → ca-DFP6ILMq.js} +1 -1
  129. package/dist/assets/{cnr-CiidS6E_.js → cnr-Grlu3JuX.js} +1 -1
  130. package/dist/assets/{cs-CKH0PBiM.js → cs-lgNqqL4u.js} +1 -1
  131. package/dist/assets/{da-DLJy-V4w.js → da-ZKggtzGq.js} +1 -1
  132. package/dist/assets/{de-0N92OkSB.js → de-DL1zgfsi.js} +1 -1
  133. package/dist/assets/{de_AT-D8g7Tth2.js → de_AT-CmarUHhe.js} +1 -1
  134. package/dist/assets/{de_CH-DYTcKEqU.js → de_CH-CFp86jVo.js} +1 -1
  135. package/dist/assets/{el-OYZuNIHv.js → el-FdvefiDT.js} +1 -1
  136. package/dist/assets/{el_CY-D79vuMAa.js → el_CY-BJPkkKi8.js} +1 -1
  137. package/dist/assets/{en-CllNN7YY.js → en-B1Q_JFFb.js} +1 -1
  138. package/dist/assets/{en_AU-Ddrviu44.js → en_AU-Bm6lcfFm.js} +1 -1
  139. package/dist/assets/{en_GB-B9eSErHy.js → en_GB-CCipb5dG.js} +1 -1
  140. package/dist/assets/{en_HK-FdAjB4tQ.js → en_HK-Bu8Js72H.js} +1 -1
  141. package/dist/assets/{en_IE-zdmtzUDu.js → en_IE-BZXJHeYM.js} +1 -1
  142. package/dist/assets/{en_IN-DJJRjMIF.js → en_IN-Dh3537uv.js} +1 -1
  143. package/dist/assets/{en_NZ-BY--qj4s.js → en_NZ-Bx3mG4fb.js} +1 -1
  144. package/dist/assets/{en_PG-RcJi2hvJ.js → en_PG-CyRO9VGd.js} +1 -1
  145. package/dist/assets/{en_SG-BUtJMBS2.js → en_SG-BEsuw651.js} +1 -1
  146. package/dist/assets/{en_ZA-D-uqJ4Za.js → en_ZA-i0tdkruX.js} +1 -1
  147. package/dist/assets/{es-DgitLRHt.js → es-BKtAFDBk.js} +1 -1
  148. package/dist/assets/{es_AR-7a81KXAl.js → es_AR-Cgh6Q2W_.js} +1 -1
  149. package/dist/assets/{es_BO-CdNGyTgv.js → es_BO-CaK9OOQC.js} +1 -1
  150. package/dist/assets/{es_CL-DuHBIVFo.js → es_CL-u6fJ6PPk.js} +1 -1
  151. package/dist/assets/{es_CO-C0CJWwB-.js → es_CO-DAO-13dw.js} +1 -1
  152. package/dist/assets/{es_MX-DtPgyxGD.js → es_MX-D1KhXUy4.js} +1 -1
  153. package/dist/assets/{es_PE-DGF7Yjrt.js → es_PE-DEUen4VG.js} +1 -1
  154. package/dist/assets/{es_UY-fD9lVhfR.js → es_UY-CPBMwHSz.js} +1 -1
  155. package/dist/assets/{es_VE-BX3pigg8.js → es_VE-CNZouG2K.js} +1 -1
  156. package/dist/assets/{et-BMj4rjsT.js → et-DNQPssPo.js} +1 -1
  157. package/dist/assets/{fa-CQhbGi8S.js → fa-4zj1zCg1.js} +1 -1
  158. package/dist/assets/{fi-DBKA9_K5.js → fi-C6HFNTL6.js} +1 -1
  159. package/dist/assets/{fr-CMQtkd4R.js → fr-BydrHZkq.js} +1 -1
  160. package/dist/assets/{fr_BE-Bl0FruWm.js → fr_BE-C8hcZNOL.js} +1 -1
  161. package/dist/assets/{fr_CA-DFlIL_d4.js → fr_CA-Cw2zy44G.js} +1 -1
  162. package/dist/assets/{fr_CH-C8lyCDBe.js → fr_CH-BbCQFx3s.js} +1 -1
  163. package/dist/assets/{fr_LU-CG5r3b1-.js → fr_LU-BpH6nMiI.js} +1 -1
  164. package/dist/assets/{he-D3P1Q9GQ.js → he-CfKmVVrF.js} +1 -1
  165. package/dist/assets/{hi-B3yky8gy.js → hi-D1WBUmI6.js} +1 -1
  166. package/dist/assets/{hr-cQ9G2h7E.js → hr-pnk2hlkB.js} +1 -1
  167. package/dist/assets/{hu-D0ywysYs.js → hu-CCzBj3iT.js} +1 -1
  168. package/dist/assets/{id-B-yAWgiT.js → id-BeGrqJpK.js} +1 -1
  169. package/dist/assets/{it-DLzjbv-9.js → it-B6Mz1czr.js} +1 -1
  170. package/dist/assets/{it_CH-DKz1oDNC.js → it_CH-CwPXoj3N.js} +1 -1
  171. package/dist/assets/{ja-C8zg_Zor.js → ja-BILluLT2.js} +1 -1
  172. package/dist/assets/{kk-DZZOQ4wh.js → kk-YSUtf5Jy.js} +1 -1
  173. package/dist/assets/{ko-BEJWYeL9.js → ko-DUlXl0QQ.js} +1 -1
  174. package/dist/assets/{lt-Cji-Zk_r.js → lt-Dn5sAAtt.js} +1 -1
  175. package/dist/assets/{lv-rjxWTRTn.js → lv-D_k8IElJ.js} +1 -1
  176. package/dist/assets/messagebundle_ar-C3EXytoC.js +1 -0
  177. package/dist/assets/messagebundle_ar-DmZrrjEF.js +1 -0
  178. package/dist/assets/messagebundle_bg-BaZ97Q_b.js +1 -0
  179. package/dist/assets/messagebundle_bg-CgU7GPvK.js +1 -0
  180. package/dist/assets/messagebundle_ca-BwjVUbUA.js +1 -0
  181. package/dist/assets/messagebundle_ca-YiUGbO_8.js +1 -0
  182. package/dist/assets/messagebundle_cnr-CN2hPZIN.js +1 -0
  183. package/dist/assets/messagebundle_cnr-zdEdPJvc.js +1 -0
  184. package/dist/assets/messagebundle_cs-CGbnEjza.js +1 -0
  185. package/dist/assets/messagebundle_cs-DmRWH--o.js +1 -0
  186. package/dist/assets/messagebundle_cy-BF0YH9Iz.js +1 -0
  187. package/dist/assets/messagebundle_cy-CUiGsjO6.js +1 -0
  188. package/dist/assets/messagebundle_da-CWKLQJiq.js +1 -0
  189. package/dist/assets/messagebundle_da-bTkr4pUc.js +1 -0
  190. package/dist/assets/messagebundle_de-BmnClk4G.js +1 -0
  191. package/dist/assets/messagebundle_de-vB6qhgvG.js +1 -0
  192. package/dist/assets/messagebundle_el-DKdItEgW.js +1 -0
  193. package/dist/assets/messagebundle_el-Gv1Ly8aj.js +1 -0
  194. package/dist/assets/messagebundle_en-B7YJOdQz.js +1 -0
  195. package/dist/assets/messagebundle_en-DbKo-Dkl.js +1 -0
  196. package/dist/assets/messagebundle_en-DcV886MF.js +1 -0
  197. package/dist/assets/messagebundle_en_GB-Be93_Z4H.js +1 -0
  198. package/dist/assets/messagebundle_en_GB-CFh7e8hQ.js +1 -0
  199. package/dist/assets/messagebundle_en_US_sappsd-HCarC-Yr.js +1 -0
  200. package/dist/assets/messagebundle_en_US_sappsd-Se8GgI58.js +1 -0
  201. package/dist/assets/messagebundle_en_US_saprigi-CCHFk7YZ.js +1 -0
  202. package/dist/assets/messagebundle_en_US_saprigi-CbfvaHUL.js +1 -0
  203. package/dist/assets/messagebundle_en_US_saptrc-B8AIRzlo.js +1 -0
  204. package/dist/assets/messagebundle_en_US_saptrc-yJ3PcdEm.js +1 -0
  205. package/dist/assets/messagebundle_es-BH-a8BxO.js +1 -0
  206. package/dist/assets/messagebundle_es-Dt93wbGV.js +1 -0
  207. package/dist/assets/messagebundle_es_MX-BedlYlF3.js +1 -0
  208. package/dist/assets/messagebundle_es_MX-COPqooo9.js +1 -0
  209. package/dist/assets/messagebundle_et-BsYgDw46.js +1 -0
  210. package/dist/assets/messagebundle_et-UwpqUE-p.js +1 -0
  211. package/dist/assets/messagebundle_fi-BN3UWEz0.js +1 -0
  212. package/dist/assets/messagebundle_fi-Cwf7Puui.js +1 -0
  213. package/dist/assets/messagebundle_fr-43w09LAE.js +1 -0
  214. package/dist/assets/messagebundle_fr-CVRaf9_H.js +1 -0
  215. package/dist/assets/messagebundle_fr_CA-BM04X6xU.js +1 -0
  216. package/dist/assets/messagebundle_fr_CA-CdnVYumi.js +1 -0
  217. package/dist/assets/messagebundle_hi-DfeonbAH.js +1 -0
  218. package/dist/assets/messagebundle_hi-JRJlP9Uh.js +1 -0
  219. package/dist/assets/messagebundle_hr-CKOnn34q.js +1 -0
  220. package/dist/assets/messagebundle_hr-CbyIBlH3.js +1 -0
  221. package/dist/assets/messagebundle_hu-DF1gQudE.js +1 -0
  222. package/dist/assets/messagebundle_hu-D_IQ9kTy.js +1 -0
  223. package/dist/assets/messagebundle_id-B0K1usj4.js +1 -0
  224. package/dist/assets/messagebundle_id-gDJYoaGq.js +1 -0
  225. package/dist/assets/messagebundle_it-B80_R2Ih.js +1 -0
  226. package/dist/assets/messagebundle_it-CVqU4g6t.js +1 -0
  227. package/dist/assets/messagebundle_iw-BoelOIS4.js +1 -0
  228. package/dist/assets/messagebundle_iw-iMDtLxaa.js +1 -0
  229. package/dist/assets/messagebundle_ja-BlRbv4vb.js +1 -0
  230. package/dist/assets/messagebundle_ja-BrDH-19-.js +1 -0
  231. package/dist/assets/messagebundle_kk-C7VPek1-.js +1 -0
  232. package/dist/assets/messagebundle_kk-DhAT_bim.js +1 -0
  233. package/dist/assets/messagebundle_ko-CIqP8x6n.js +1 -0
  234. package/dist/assets/messagebundle_ko-DgD6uyZ5.js +1 -0
  235. package/dist/assets/messagebundle_lt-BGK5mpcm.js +1 -0
  236. package/dist/assets/messagebundle_lt-BV0kKrY0.js +1 -0
  237. package/dist/assets/messagebundle_lv-5IcjoxWD.js +1 -0
  238. package/dist/assets/messagebundle_lv-DDBi7iKe.js +1 -0
  239. package/dist/assets/messagebundle_mk-BUrn04sZ.js +1 -0
  240. package/dist/assets/messagebundle_mk-P5veRdg2.js +1 -0
  241. package/dist/assets/messagebundle_ms-9VDLR5en.js +1 -0
  242. package/dist/assets/messagebundle_ms-CB8sQUg2.js +1 -0
  243. package/dist/assets/messagebundle_nl-BaAgPO7h.js +1 -0
  244. package/dist/assets/messagebundle_nl-f1Up3dB9.js +1 -0
  245. package/dist/assets/messagebundle_no-C-_ldp7o.js +1 -0
  246. package/dist/assets/messagebundle_no-DRSqWQ-C.js +1 -0
  247. package/dist/assets/messagebundle_pl-BQoPaokq.js +1 -0
  248. package/dist/assets/messagebundle_pl-DBO1atMe.js +1 -0
  249. package/dist/assets/messagebundle_pt-BNEglYxa.js +1 -0
  250. package/dist/assets/messagebundle_pt-DgAMHmW-.js +1 -0
  251. package/dist/assets/messagebundle_pt_PT-BtYzp9KB.js +1 -0
  252. package/dist/assets/messagebundle_pt_PT-D1Ef8kUU.js +1 -0
  253. package/dist/assets/messagebundle_ro-CuDPp2fe.js +1 -0
  254. package/dist/assets/messagebundle_ro-D591wJ6f.js +1 -0
  255. package/dist/assets/messagebundle_ru-D0NridWi.js +1 -0
  256. package/dist/assets/messagebundle_ru-I8YLCfrn.js +1 -0
  257. package/dist/assets/messagebundle_sh-BswdbSRi.js +1 -0
  258. package/dist/assets/messagebundle_sh-Dw2y_oct.js +1 -0
  259. package/dist/assets/messagebundle_sk-BG4S4ZVk.js +1 -0
  260. package/dist/assets/messagebundle_sk-CXOF1RuF.js +1 -0
  261. package/dist/assets/messagebundle_sl-CAnJO_8X.js +1 -0
  262. package/dist/assets/messagebundle_sl-kpVWxIp_.js +1 -0
  263. package/dist/assets/messagebundle_sr-BTWvO8VQ.js +1 -0
  264. package/dist/assets/messagebundle_sr-VJmRSdj4.js +1 -0
  265. package/dist/assets/messagebundle_sv-B-RCgnW_.js +1 -0
  266. package/dist/assets/messagebundle_sv-Bd4wCcDb.js +1 -0
  267. package/dist/assets/messagebundle_th-CMHmLdI3.js +1 -0
  268. package/dist/assets/messagebundle_th-CZ1imsCy.js +1 -0
  269. package/dist/assets/messagebundle_tr-BfWAYIdW.js +1 -0
  270. package/dist/assets/messagebundle_tr-D-BnBirv.js +1 -0
  271. package/dist/assets/messagebundle_uk-DhxIThVl.js +1 -0
  272. package/dist/assets/messagebundle_uk-HU8hI0yj.js +1 -0
  273. package/dist/assets/messagebundle_vi-BUTqUKd4.js +1 -0
  274. package/dist/assets/messagebundle_vi-D1El4_Wj.js +1 -0
  275. package/dist/assets/messagebundle_zh_CN-Dt0azUea.js +1 -0
  276. package/dist/assets/messagebundle_zh_CN-Ofgx2uXY.js +1 -0
  277. package/dist/assets/messagebundle_zh_TW-5lv7yYS1.js +1 -0
  278. package/dist/assets/messagebundle_zh_TW-LSErOAsd.js +1 -0
  279. package/dist/assets/{mk-9_dtu4u_.js → mk-DTLhuyCG.js} +1 -1
  280. package/dist/assets/{ms-9b0nct8m.js → ms-BrLiVOVI.js} +1 -1
  281. package/dist/assets/{nb-CbGeVRux.js → nb-BeQEL0TR.js} +1 -1
  282. package/dist/assets/{nl-C0vlsmuT.js → nl-CGAh49hZ.js} +1 -1
  283. package/dist/assets/{nl_BE-Cteh34au.js → nl_BE-CxJbQu5q.js} +1 -1
  284. package/dist/assets/{parameters-bundle.css-D7WciSOr.js → parameters-bundle.css-B68EyCuR.js} +2 -0
  285. package/dist/assets/{parameters-bundle.css-CT-eTeTy.js → parameters-bundle.css-BkJSEiFx.js} +2 -0
  286. package/dist/assets/{parameters-bundle.css-BXQ-0CBp.js → parameters-bundle.css-C5V2Zp_F.js} +2 -0
  287. package/dist/assets/{parameters-bundle.css-XYDTPt-n.js → parameters-bundle.css-COeynv6D.js} +3 -1
  288. package/dist/assets/parameters-bundle.css-CnIzAMdG.js +3 -0
  289. package/dist/assets/parameters-bundle.css-CsV5qbZp.js +3 -0
  290. package/dist/assets/{parameters-bundle.css-C7KCPeJ8.js → parameters-bundle.css-DCvHNL3s.js} +1 -1
  291. package/dist/assets/{parameters-bundle.css-CQFZmxYm.js → parameters-bundle.css-DK40uKOQ.js} +1 -1
  292. package/dist/assets/parameters-bundle.css-DMfTAqMv.js +2 -0
  293. package/dist/assets/parameters-bundle.css-DO35k9r0.js +2 -0
  294. package/dist/assets/parameters-bundle.css-Df7wtRW4.js +2 -0
  295. package/dist/assets/{parameters-bundle.css-CxjtOlRD.js → parameters-bundle.css-DmEWEk0u.js} +36 -28
  296. package/dist/assets/{parameters-bundle.css-CSUOmZKr.js → parameters-bundle.css-DvAfqdlT.js} +1 -1
  297. package/dist/assets/{parameters-bundle.css-DPz62M1p.js → parameters-bundle.css-K-MvKimD.js} +3 -1
  298. package/dist/assets/parameters-bundle.css-KoXGNyLG.js +3 -0
  299. package/dist/assets/{parameters-bundle.css-CLLnzh9T.js → parameters-bundle.css-P_M_rm9z.js} +1 -1
  300. package/dist/assets/parameters-bundle.css-UJIxXHL5.js +2 -0
  301. package/dist/assets/{parameters-bundle.css-V2I5eOdH.js → parameters-bundle.css-co26r5Nz.js} +1 -1
  302. package/dist/assets/parameters-bundle.css-uT62L0va.js +3 -0
  303. package/dist/assets/{parameters-bundle.css-Cmk27zY9.js → parameters-bundle.css-vNsSPPU5.js} +38 -31
  304. package/dist/assets/{pl-CDjXMBDR.js → pl-DaZJCEN3.js} +1 -1
  305. package/dist/assets/{pt-BXklB5_T.js → pt-RxoGfR56.js} +1 -1
  306. package/dist/assets/{pt_PT-DEzSdlMb.js → pt_PT-CuC22O4H.js} +1 -1
  307. package/dist/assets/{ro-bFLE5ZuX.js → ro-kcCACdbI.js} +1 -1
  308. package/dist/assets/{ru-DuGdFJZn.js → ru-BQzoU2Gq.js} +1 -1
  309. package/dist/assets/{ru_UA-DujiLlPN.js → ru_UA-BtdbuqWW.js} +1 -1
  310. package/dist/assets/{sk-GkzEgQor.js → sk-D4C2H17S.js} +1 -1
  311. package/dist/assets/{sl-BhuoMxwQ.js → sl-7ESgddjQ.js} +1 -1
  312. package/dist/assets/{sr-Bb668mIq.js → sr-m2FCxV00.js} +1 -1
  313. package/dist/assets/{sr_Latn-C61cXg9o.js → sr_Latn-Dh8ru1_a.js} +1 -1
  314. package/dist/assets/{sv-yft9g0aL.js → sv-DkcDHqsr.js} +1 -1
  315. package/dist/assets/{th-BiAki51N.js → th-sJeg9F0h.js} +1 -1
  316. package/dist/assets/{tr-DDt0vBOs.js → tr-C2e7ABy0.js} +1 -1
  317. package/dist/assets/{uk-A-zqF2vZ.js → uk-Cdp63d6T.js} +1 -1
  318. package/dist/assets/{vi-Bleu1lwm.js → vi-DuFuMCO2.js} +1 -1
  319. package/dist/assets/{zh_CN-kJCGkFOs.js → zh_CN-BOAGYFIg.js} +1 -1
  320. package/dist/assets/{zh_HK-BJMkT2Ze.js → zh_HK-Bmft66uR.js} +1 -1
  321. package/dist/assets/{zh_SG-Lz9Li7LQ.js → zh_SG-ChcB0A9F.js} +1 -1
  322. package/dist/assets/{zh_TW-P8-QBSyv.js → zh_TW-C8FI5AC8.js} +1 -1
  323. package/dist/css/themes/AccordionSpotlight.css +1 -1
  324. package/dist/css/themes/Button.css +1 -1
  325. package/dist/css/themes/Checkbox.css +1 -1
  326. package/dist/css/themes/Footer.css +1 -1
  327. package/dist/css/themes/ListGroupHeader.css +1 -1
  328. package/dist/css/themes/PromoTile.css +1 -1
  329. package/dist/css/themes/RatingIndicator.css +1 -1
  330. package/dist/css/themes/SecondaryNavigation.css +1 -1
  331. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  332. package/dist/css/themes/SecondaryNavigationSubItem.css +1 -1
  333. package/dist/css/themes/TabInOverflow.css +1 -1
  334. package/dist/css/themes/WizardTab.css +1 -1
  335. package/dist/custom-elements-internal.json +19 -0
  336. package/dist/custom-elements.json +52 -0
  337. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  338. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  339. package/dist/generated/i18n/i18n-defaults.js +3 -1
  340. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  341. package/dist/generated/themes/AccordionSpotlight.css.d.ts +1 -1
  342. package/dist/generated/themes/AccordionSpotlight.css.js +1 -1
  343. package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -1
  344. package/dist/generated/themes/Button.css.d.ts +1 -1
  345. package/dist/generated/themes/Button.css.js +1 -1
  346. package/dist/generated/themes/Button.css.js.map +1 -1
  347. package/dist/generated/themes/Checkbox.css.d.ts +1 -1
  348. package/dist/generated/themes/Checkbox.css.js +1 -1
  349. package/dist/generated/themes/Checkbox.css.js.map +1 -1
  350. package/dist/generated/themes/Footer.css.d.ts +1 -1
  351. package/dist/generated/themes/Footer.css.js +1 -1
  352. package/dist/generated/themes/Footer.css.js.map +1 -1
  353. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  354. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  355. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  356. package/dist/generated/themes/PromoTile.css.d.ts +1 -1
  357. package/dist/generated/themes/PromoTile.css.js +1 -1
  358. package/dist/generated/themes/PromoTile.css.js.map +1 -1
  359. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  360. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  361. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  362. package/dist/generated/themes/SecondaryNavigation.css.d.ts +1 -1
  363. package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
  364. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  365. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
  366. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  367. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  368. package/dist/generated/themes/SecondaryNavigationSubItem.css.d.ts +1 -1
  369. package/dist/generated/themes/SecondaryNavigationSubItem.css.js +1 -1
  370. package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -1
  371. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  372. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  373. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  374. package/dist/generated/themes/WizardTab.css.d.ts +1 -1
  375. package/dist/generated/themes/WizardTab.css.js +1 -1
  376. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  377. package/dist/messagebundle.properties +4 -0
  378. package/dist/messagebundle_en.properties +2 -0
  379. package/dist/utils/Breakpoints.d.ts +20 -1
  380. package/dist/utils/Breakpoints.js +38 -8
  381. package/dist/utils/Breakpoints.js.map +1 -1
  382. package/dist/vscode.html-custom-data.json +115 -456
  383. package/dist/web-types.json +11 -1
  384. package/package.json +8 -8
  385. package/src/List.ts +24 -2
  386. package/src/ListGroupHeaderBase.ts +44 -2
  387. package/src/ListGroupHeaderTemplate.tsx +74 -23
  388. package/src/ListItem.ts +18 -15
  389. package/src/ListItemBase.ts +30 -0
  390. package/src/ListItemTemplate.tsx +4 -4
  391. package/src/MastheadCountrySelector.ts +5 -5
  392. package/src/MastheadCountrySelectorTemplate.tsx +98 -0
  393. package/src/MastheadItem.ts +3 -6
  394. package/src/MastheadItemTemplate.tsx +178 -0
  395. package/src/MastheadMenu.ts +5 -6
  396. package/src/MastheadMenuItem.ts +3 -7
  397. package/src/MastheadMenuItemTemplate.tsx +123 -0
  398. package/src/MastheadMenuTemplate.tsx +142 -0
  399. package/src/MastheadMobileMenu.ts +3 -3
  400. package/src/MastheadMobileMenuTemplate.tsx +274 -0
  401. package/src/MastheadProfileMenu.ts +10 -23
  402. package/src/MastheadProfileMenuTemplate.tsx +143 -0
  403. package/src/MastheadShell.ts +3 -5
  404. package/src/MastheadShellTemplate.tsx +228 -0
  405. package/src/RatingIndicatorTemplate.tsx +0 -1
  406. package/src/SearchableListBase.ts +37 -1
  407. package/src/SearchableListBaseTemplate.tsx +38 -2
  408. package/src/SecondaryNavigation.ts +24 -9
  409. package/src/SecondaryNavigationItem.ts +4 -6
  410. package/src/SecondaryNavigationItemBase.ts +2 -2
  411. package/src/SecondaryNavigationItemTemplate.tsx +80 -0
  412. package/src/SecondaryNavigationSubItem.ts +3 -7
  413. package/src/SecondaryNavigationSubItemTemplate.tsx +63 -0
  414. package/src/SecondaryNavigationTemplate.tsx +90 -0
  415. package/src/SelectBase.ts +8 -3
  416. package/src/SideNavigationMobile.ts +24 -17
  417. package/src/SideNavigationMobileTemplate.tsx +59 -0
  418. package/src/Tab.ts +4 -24
  419. package/src/TabHeaderTemplate.tsx +153 -0
  420. package/src/TabInOverflowTemplate.tsx +68 -0
  421. package/src/TabNavigation.ts +78 -44
  422. package/src/TabNavigationPopoverTemplate.tsx +27 -0
  423. package/src/TabNavigationTemplate.tsx +98 -0
  424. package/src/TabTemplate.tsx +7 -0
  425. package/src/TagGroup.ts +16 -5
  426. package/src/generated/i18n/i18n-defaults.ts +2 -2
  427. package/src/generated/themes/AccordionSpotlight.css.ts +1 -1
  428. package/src/generated/themes/Button.css.ts +1 -1
  429. package/src/generated/themes/Checkbox.css.ts +1 -1
  430. package/src/generated/themes/Footer.css.ts +1 -1
  431. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  432. package/src/generated/themes/PromoTile.css.ts +1 -1
  433. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  434. package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
  435. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  436. package/src/generated/themes/SecondaryNavigationSubItem.css.ts +1 -1
  437. package/src/generated/themes/TabInOverflow.css.ts +1 -1
  438. package/src/generated/themes/WizardTab.css.ts +1 -1
  439. package/src/i18n/messagebundle.properties +4 -0
  440. package/src/i18n/messagebundle_en.properties +2 -0
  441. package/src/themes/AccordionSpotlight.css +1 -1
  442. package/src/themes/Button.css +2 -1
  443. package/src/themes/Checkbox.css +5 -1
  444. package/src/themes/Footer.css +4 -4
  445. package/src/themes/ListGroupHeader.css +50 -7
  446. package/src/themes/PromoTile.css +1 -0
  447. package/src/themes/RatingIndicator.css +6 -1
  448. package/src/themes/SecondaryNavigation.css +3 -3
  449. package/src/themes/SecondaryNavigationItem.css +2 -2
  450. package/src/themes/SecondaryNavigationSubItem.css +2 -2
  451. package/src/themes/TabInOverflow.css +9 -4
  452. package/src/themes/WizardTab.css +6 -1
  453. package/src/utils/Breakpoints.ts +39 -8
  454. package/dist/assets/InputSuggestions-C8grDr_8.js +0 -2
  455. package/dist/assets/messagebundle_ar-BRkfjlVF.js +0 -1
  456. package/dist/assets/messagebundle_ar-D5A573iZ.js +0 -1
  457. package/dist/assets/messagebundle_bg-ByA8yRlQ.js +0 -1
  458. package/dist/assets/messagebundle_bg-CIVFOczQ.js +0 -1
  459. package/dist/assets/messagebundle_ca-BR3XuU9o.js +0 -1
  460. package/dist/assets/messagebundle_ca-CnMQ87v0.js +0 -1
  461. package/dist/assets/messagebundle_cnr-C6YhRiS7.js +0 -1
  462. package/dist/assets/messagebundle_cnr-CKZii51E.js +0 -1
  463. package/dist/assets/messagebundle_cs-DcOu8IOK.js +0 -1
  464. package/dist/assets/messagebundle_cs-I7yYpbsI.js +0 -1
  465. package/dist/assets/messagebundle_cy-BxrFUGJ9.js +0 -1
  466. package/dist/assets/messagebundle_cy-iXD_sJ-H.js +0 -1
  467. package/dist/assets/messagebundle_da-BVQHPgwf.js +0 -1
  468. package/dist/assets/messagebundle_da-CMGObFa5.js +0 -1
  469. package/dist/assets/messagebundle_de-CSl05u5u.js +0 -1
  470. package/dist/assets/messagebundle_de-Ca8NttFO.js +0 -1
  471. package/dist/assets/messagebundle_el-Cqfj_U5v.js +0 -1
  472. package/dist/assets/messagebundle_el-D9Zgq5tn.js +0 -1
  473. package/dist/assets/messagebundle_en-D0JTZvAf.js +0 -1
  474. package/dist/assets/messagebundle_en-DBpf5Il2.js +0 -1
  475. package/dist/assets/messagebundle_en-DWqF0cay.js +0 -1
  476. package/dist/assets/messagebundle_en_GB-CGB_FKp4.js +0 -1
  477. package/dist/assets/messagebundle_en_GB-Cl7ekzz2.js +0 -1
  478. package/dist/assets/messagebundle_en_US_sappsd-7UdOh8vN.js +0 -1
  479. package/dist/assets/messagebundle_en_US_sappsd-B8rqsyFQ.js +0 -1
  480. package/dist/assets/messagebundle_en_US_saprigi-9VCo5QY0.js +0 -1
  481. package/dist/assets/messagebundle_en_US_saprigi-DfLzOCPY.js +0 -1
  482. package/dist/assets/messagebundle_en_US_saptrc-DZqYka05.js +0 -1
  483. package/dist/assets/messagebundle_en_US_saptrc-Wh_IysAB.js +0 -1
  484. package/dist/assets/messagebundle_es-DKn8EzzP.js +0 -1
  485. package/dist/assets/messagebundle_es-lf5AJZNW.js +0 -1
  486. package/dist/assets/messagebundle_es_MX-DyYZGjON.js +0 -1
  487. package/dist/assets/messagebundle_es_MX-yBTcvu7u.js +0 -1
  488. package/dist/assets/messagebundle_et-Dz8Ohhcp.js +0 -1
  489. package/dist/assets/messagebundle_et-rMWbS-Nu.js +0 -1
  490. package/dist/assets/messagebundle_fi-Bfbyhuuz.js +0 -1
  491. package/dist/assets/messagebundle_fi-DnXm7LPH.js +0 -1
  492. package/dist/assets/messagebundle_fr-BvbeCfZ-.js +0 -1
  493. package/dist/assets/messagebundle_fr-KQhoZEew.js +0 -1
  494. package/dist/assets/messagebundle_fr_CA-CE2lzYx5.js +0 -1
  495. package/dist/assets/messagebundle_fr_CA-CIhDzHAJ.js +0 -1
  496. package/dist/assets/messagebundle_hi-BRQ9tZ6F.js +0 -1
  497. package/dist/assets/messagebundle_hi-DPwH9vag.js +0 -1
  498. package/dist/assets/messagebundle_hr-BSKQ6zHT.js +0 -1
  499. package/dist/assets/messagebundle_hr-D3gQg5JN.js +0 -1
  500. package/dist/assets/messagebundle_hu-CAA4oM1C.js +0 -1
  501. package/dist/assets/messagebundle_hu-CZNs1K9T.js +0 -1
  502. package/dist/assets/messagebundle_id-9H0uJyXB.js +0 -1
  503. package/dist/assets/messagebundle_id-m6iosVVP.js +0 -1
  504. package/dist/assets/messagebundle_it-BWzxa-Mi.js +0 -1
  505. package/dist/assets/messagebundle_it-Cm_0HF21.js +0 -1
  506. package/dist/assets/messagebundle_iw-DpB2YXTa.js +0 -1
  507. package/dist/assets/messagebundle_iw-NfqePNtD.js +0 -1
  508. package/dist/assets/messagebundle_ja-BCSZcI8t.js +0 -1
  509. package/dist/assets/messagebundle_ja-C-qqwzFf.js +0 -1
  510. package/dist/assets/messagebundle_kk--PGqyTVS.js +0 -1
  511. package/dist/assets/messagebundle_kk-DAlCQkFU.js +0 -1
  512. package/dist/assets/messagebundle_ko-D8mIkPe1.js +0 -1
  513. package/dist/assets/messagebundle_ko-qoWc4ZGG.js +0 -1
  514. package/dist/assets/messagebundle_lt-BIEH02V4.js +0 -1
  515. package/dist/assets/messagebundle_lt-ruMxSuY-.js +0 -1
  516. package/dist/assets/messagebundle_lv-C2om7wu0.js +0 -1
  517. package/dist/assets/messagebundle_lv-Dfrbh1ci.js +0 -1
  518. package/dist/assets/messagebundle_mk-DHvZle6t.js +0 -1
  519. package/dist/assets/messagebundle_mk-l_Kubx1p.js +0 -1
  520. package/dist/assets/messagebundle_ms-CKCmj1p_.js +0 -1
  521. package/dist/assets/messagebundle_ms-IhSEK5ij.js +0 -1
  522. package/dist/assets/messagebundle_nl-BiIb6e5c.js +0 -1
  523. package/dist/assets/messagebundle_nl-DquG38Cj.js +0 -1
  524. package/dist/assets/messagebundle_no-CX23v_jg.js +0 -1
  525. package/dist/assets/messagebundle_no-DFdvykvP.js +0 -1
  526. package/dist/assets/messagebundle_pl-BAeue3mo.js +0 -1
  527. package/dist/assets/messagebundle_pl-iHE_prgN.js +0 -1
  528. package/dist/assets/messagebundle_pt-BpQnTLvl.js +0 -1
  529. package/dist/assets/messagebundle_pt-C_bG3Erm.js +0 -1
  530. package/dist/assets/messagebundle_pt_PT-CR7qXFK-.js +0 -1
  531. package/dist/assets/messagebundle_pt_PT-DyseXKQQ.js +0 -1
  532. package/dist/assets/messagebundle_ro-CHU1E6hv.js +0 -1
  533. package/dist/assets/messagebundle_ro-C_amsd63.js +0 -1
  534. package/dist/assets/messagebundle_ru-Cab4H6Ud.js +0 -1
  535. package/dist/assets/messagebundle_ru-D6JMraBp.js +0 -1
  536. package/dist/assets/messagebundle_sh-DusYn00L.js +0 -1
  537. package/dist/assets/messagebundle_sh-hThvw_lF.js +0 -1
  538. package/dist/assets/messagebundle_sk-BqiUMEcX.js +0 -1
  539. package/dist/assets/messagebundle_sk-CZHfFNQ_.js +0 -1
  540. package/dist/assets/messagebundle_sl-B79d3kfY.js +0 -1
  541. package/dist/assets/messagebundle_sl-SfAn6n6j.js +0 -1
  542. package/dist/assets/messagebundle_sr-4iz7n4Te.js +0 -1
  543. package/dist/assets/messagebundle_sr-DxELdG62.js +0 -1
  544. package/dist/assets/messagebundle_sv-CPOHCrxs.js +0 -1
  545. package/dist/assets/messagebundle_sv-i6GuWK0l.js +0 -1
  546. package/dist/assets/messagebundle_th-D-kPI3tt.js +0 -1
  547. package/dist/assets/messagebundle_th-D64J-JvN.js +0 -1
  548. package/dist/assets/messagebundle_tr-CuE9DqZT.js +0 -1
  549. package/dist/assets/messagebundle_tr-gTuGftNt.js +0 -1
  550. package/dist/assets/messagebundle_uk-C6JSX-jF.js +0 -1
  551. package/dist/assets/messagebundle_uk-IKxyo-LT.js +0 -1
  552. package/dist/assets/messagebundle_vi-BRdRT5L6.js +0 -1
  553. package/dist/assets/messagebundle_vi-rZGL12-x.js +0 -1
  554. package/dist/assets/messagebundle_zh_CN-L55Y4Dfs.js +0 -1
  555. package/dist/assets/messagebundle_zh_CN-ZalS15WG.js +0 -1
  556. package/dist/assets/messagebundle_zh_TW-BcMzZCW2.js +0 -1
  557. package/dist/assets/messagebundle_zh_TW-sRVDBYOx.js +0 -1
  558. package/dist/assets/parameters-bundle.css-8pAQYERs.js +0 -3
  559. package/dist/assets/parameters-bundle.css-B_KvbSAR.js +0 -2
  560. package/dist/assets/parameters-bundle.css-Ciey0vhA.js +0 -2
  561. package/dist/assets/parameters-bundle.css-D7Hj83QD.js +0 -2
  562. package/dist/assets/parameters-bundle.css-DJgsxqD8.js +0 -2
  563. package/dist/assets/parameters-bundle.css-DMVuljH3.js +0 -3
  564. package/dist/assets/parameters-bundle.css-DkHyiuRq.js +0 -3
  565. package/dist/assets/parameters-bundle.css-Dvgwa73x.js +0 -3
  566. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.d.ts +0 -3
  567. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +0 -13
  568. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +0 -1
  569. package/dist/generated/templates/MastheadItemTemplate.lit.d.ts +0 -3
  570. package/dist/generated/templates/MastheadItemTemplate.lit.js +0 -43
  571. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +0 -1
  572. package/dist/generated/templates/MastheadMenuItemTemplate.lit.d.ts +0 -3
  573. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +0 -21
  574. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +0 -1
  575. package/dist/generated/templates/MastheadMenuTemplate.lit.d.ts +0 -3
  576. package/dist/generated/templates/MastheadMenuTemplate.lit.js +0 -25
  577. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +0 -1
  578. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.d.ts +0 -3
  579. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +0 -37
  580. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +0 -1
  581. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.d.ts +0 -3
  582. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +0 -18
  583. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +0 -1
  584. package/dist/generated/templates/MastheadShellTemplate.lit.d.ts +0 -3
  585. package/dist/generated/templates/MastheadShellTemplate.lit.js +0 -28
  586. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +0 -1
  587. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.d.ts +0 -3
  588. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +0 -13
  589. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +0 -1
  590. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.d.ts +0 -3
  591. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +0 -12
  592. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +0 -1
  593. package/dist/generated/templates/SecondaryNavigationTemplate.lit.d.ts +0 -3
  594. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +0 -15
  595. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +0 -1
  596. package/dist/generated/templates/SideNavigationMobileTemplate.lit.d.ts +0 -3
  597. package/dist/generated/templates/SideNavigationMobileTemplate.lit.js +0 -10
  598. package/dist/generated/templates/SideNavigationMobileTemplate.lit.js.map +0 -1
  599. package/dist/generated/templates/TabHeaderTemplate.lit.d.ts +0 -3
  600. package/dist/generated/templates/TabHeaderTemplate.lit.js +0 -52
  601. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +0 -1
  602. package/dist/generated/templates/TabInOverflowTemplate.lit.d.ts +0 -3
  603. package/dist/generated/templates/TabInOverflowTemplate.lit.js +0 -15
  604. package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +0 -1
  605. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.d.ts +0 -3
  606. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js +0 -8
  607. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js.map +0 -1
  608. package/dist/generated/templates/TabNavigationTemplate.lit.d.ts +0 -3
  609. package/dist/generated/templates/TabNavigationTemplate.lit.js +0 -16
  610. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +0 -1
  611. package/dist/generated/templates/TabTemplate.lit.d.ts +0 -3
  612. package/dist/generated/templates/TabTemplate.lit.js +0 -7
  613. package/dist/generated/templates/TabTemplate.lit.js.map +0 -1
  614. package/src/MastheadCountrySelector.hbs +0 -76
  615. package/src/MastheadItem.hbs +0 -136
  616. package/src/MastheadMenu.hbs +0 -131
  617. package/src/MastheadMenuItem.hbs +0 -102
  618. package/src/MastheadMobileMenu.hbs +0 -253
  619. package/src/MastheadProfileMenu.hbs +0 -121
  620. package/src/MastheadShell.hbs +0 -223
  621. package/src/SecondaryNavigation.hbs +0 -87
  622. package/src/SecondaryNavigationItem.hbs +0 -68
  623. package/src/SecondaryNavigationSubItem.hbs +0 -47
  624. package/src/SideNavigationMobile.hbs +0 -41
  625. package/src/Tab.hbs +0 -1
  626. package/src/TabHeader.hbs +0 -141
  627. package/src/TabInOverflow.hbs +0 -59
  628. package/src/TabNavigation.hbs +0 -88
  629. package/src/TabNavigationPopover.hbs +0 -18
  630. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +0 -17
  631. package/src/generated/templates/MastheadItemTemplate.lit.ts +0 -47
  632. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +0 -25
  633. package/src/generated/templates/MastheadMenuTemplate.lit.ts +0 -29
  634. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +0 -41
  635. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +0 -22
  636. package/src/generated/templates/MastheadShellTemplate.lit.ts +0 -32
  637. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +0 -17
  638. package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +0 -16
  639. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +0 -19
  640. package/src/generated/templates/SideNavigationMobileTemplate.lit.ts +0 -14
  641. package/src/generated/templates/TabHeaderTemplate.lit.ts +0 -56
  642. package/src/generated/templates/TabInOverflowTemplate.lit.ts +0 -19
  643. package/src/generated/templates/TabNavigationPopoverTemplate.lit.ts +0 -12
  644. package/src/generated/templates/TabNavigationTemplate.lit.ts +0 -20
  645. package/src/generated/templates/TabTemplate.lit.ts +0 -11
package/dist/List.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sourceRoot":"","sources":["../src/List.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport {\n isUp, isDown, isHome, isEnd, isRight, isLeft,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type UDExListItem from \"./ListItem.js\";\nimport type { UDExScrollIntoViewOptions } from \"./types/List.js\";\nimport { UDExListStyleType, UDExListMode } from \"./types/List.js\";\nimport type UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport type UDExUploadItem from \"./UploadItem.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { ARIA_LABEL_LIST_MULTISELECTABLE, ARIA_LABEL_LIST_SELECTABLE } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\nimport isLetterKey from \"./utils/isLetterKeyPressed.js\";\nimport type { UDExListWithFirstLetterFocus } from \"./utils/ListWithFirstLetterFocus.js\";\nimport UDExFirstLetterFocusHandler from \"./utils/ListWithFirstLetterFocus.js\";\nimport getEffectiveScrollbarStyle from \"./utils/getEffectiveScrollbarStyle.js\";\nimport ListTemplate from \"./ListTemplate.js\";\n\n// Styles\nimport ListCss from \"./generated/themes/List.css.js\";\n\nexport type UDExListItemBase = UDExListItem & UDExListGroupHeader & UDExUploadItem;\n\ntype UDExListSelectionChangeEventDetail = {\n listItems: Array<UDExListItemBase>,\n selectedItems: Array<UDExListItemBase>,\n item: HTMLElement,\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-list</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/List.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-list\n * @public\n */\n@customElement({\n languageAware: true,\n tag: \"udex-list\",\n renderer: jsxRenderer,\n styles: [ListCss, getEffectiveScrollbarStyle()],\n template: ListTemplate,\n})\n\n/**\n * Fired when selection is changed by user interaction\n *\n * @public\n * @param {Array<UDExListItemBase>} listItems All items inside the list\n * @param {Array<UDExListItemBase>} selectedItems Currently selected items\n * @param {HTMLElement} item The item that triggered the event\n */\n@event(\"selection-change\", { bubbles: true })\n\nclass UDExList extends UI5Element {\n eventDetails!: {\n \"selection-change\": UDExListSelectionChangeEventDetail\n };\n /**\n * Defines the accessible role of the component.\n *\n * @default \"listbox\"\n * @public\n */\n @property()\n accessibleRole: string = \"listbox\";\n\n /**\n * Defines the accessible name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n accessibleName: string = \"\";\n\n /**\n * Defines the mode of the component.\n *\n * @default \"SingleSelect\"\n * @public\n */\n @property()\n mode: `${UDExListMode}` = UDExListMode.SingleSelect;\n\n /**\n * Defines the type of the item.\n *\n * @default \"None\"\n * @public\n */\n @property()\n type: `${UDExListStyleType}` = UDExListStyleType.None;\n\n /**\n * Allows control over the height.\n *\n * @public\n */\n @property({ type: String })\n height?: string;\n\n /**\n * Defines the controlled of the component.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n controlled?: boolean;\n\n /**\n * Defines the headerText, displayed in the top of the list.\n *\n * @public\n */\n @property({ type: String })\n headerText?: string;\n\n /**\n * Defines the name of the UI5 Icon, that will be displayed for each item of the list.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n itemIcon: string = \"\";\n\n /** @deprecated Tab keyboard navigation is no longer allowed. */\n @property({ type: Boolean })\n tabNavigationEnabled?: boolean;\n\n /**\n * Slot for list items.\n *\n * @slot items\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true })\n items!: DefaultSlot<UDExListItemBase>;\n\n /**\n * Defines the scroll behavior for the items of the component.\n *\n * @default undefined\n * @private\n */\n @property()\n _scrollIntoView?: `${UDExScrollIntoViewOptions}`;\n\n _focusHandler: UDExListWithFirstLetterFocus = new UDExFirstLetterFocusHandler();\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n onBeforeRendering(): void {\n this.prepareListItemsMode();\n this._focusHandler.resetMatchingItems();\n this._focusHandler._focusableListItems = this.getKeyboardNavigationItems();\n }\n\n handleItemPress(e: CustomEvent): void {\n const clickedItem: UDExListItemBase = e.detail.item;\n this.onItemPress(clickedItem);\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n if (isRight(e)) {\n this.handleArrowRight(e);\n }\n\n if (isLeft(e)) {\n this.handleArrowLeft(e);\n }\n\n if (isUp(e)) {\n this.handleUpArrow(e);\n }\n if (isDown(e)) {\n this.handleDownArrow(e);\n }\n if (isHome(e)) {\n this.handleHomeKey(e);\n }\n if (isEnd(e)) {\n this.handleEndKey(e);\n }\n if (isLetterKey(e.key)) {\n this.handleLetterKey(e);\n }\n }\n\n handleArrowRight(e: KeyboardEvent): void {\n const target = e.target as UDExListItemBase;\n if (target.isGroup && target.hasAttribute(\"collapsible\") && target.collapsed) {\n target.collapsed = false;\n this.setCollapsedItems(false, target);\n }\n }\n\n handleArrowLeft(e: KeyboardEvent): void {\n const target = e.target as UDExListItemBase;\n if (target.isGroup && target.hasAttribute(\"collapsible\") && !target.collapsed) {\n target.collapsed = true;\n this.setCollapsedItems(true, target);\n }\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const lastItemIndex = items.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n const isHeaderItem = items[previousSelectIndex].isGroup;\n const nonInteractiveHeader = items[previousSelectIndex].nonInteractive && !items[previousSelectIndex].collapsible;\n\n if (nonInteractiveHeader && previousSelectIndex === 0) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, lastItemIndex);\n if (this._scrollIntoView) {\n this.scrollToItem(items[lastItemIndex]);\n }\n this.focusItem(items[lastItemIndex]);\n return;\n }\n\n if (nonInteractiveHeader) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex - 1);\n if (this._scrollIntoView) {\n this.scrollToItem(items[previousSelectIndex - 1]);\n }\n this.focusItem(items[previousSelectIndex - 1]);\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex);\n if (this._scrollIntoView) {\n this.scrollToItem(items[previousSelectIndex]);\n }\n this.focusHeader(items[previousSelectIndex]);\n return;\n }\n\n if (this.modeRadioGroup) {\n items[currentSelectedIndex].selected = false;\n items[previousSelectIndex].selected = true;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex);\n setTimeout(() => {\n if (this._scrollIntoView) {\n this.scrollToItem(items[previousSelectIndex]);\n }\n this.focusItem(items[previousSelectIndex]);\n }, 0);\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const nextSelectIndex = currentSelectedIndex + 1 > items.length - 1 ? 0 : currentSelectedIndex + 1;\n const isHeaderItem = items[nextSelectIndex].isGroup;\n const nonInteractiveHeader = items[nextSelectIndex].nonInteractive && !items[nextSelectIndex].collapsible;\n\n if (nonInteractiveHeader) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex + 1);\n if (this._scrollIntoView) {\n this.scrollToItem(items[nextSelectIndex + 1]);\n }\n this.focusItem(items[nextSelectIndex + 1]);\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex);\n if (this._scrollIntoView) {\n this.scrollToItem(items[nextSelectIndex]);\n }\n this.focusHeader(items[nextSelectIndex]);\n return;\n }\n\n if (this.modeRadioGroup) {\n items[currentSelectedIndex].selected = false;\n items[nextSelectIndex].selected = true;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex);\n setTimeout(() => {\n if (this._scrollIntoView) {\n this.scrollToItem(items[nextSelectIndex]);\n }\n this.focusItem(items[nextSelectIndex]);\n }, 0);\n }\n\n handleHomeKey(e: KeyboardEvent): void {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const firstItem = items[0];\n const isHeaderItem = firstItem.isGroup;\n const nonInteractiveItem = firstItem.nonInteractive && !firstItem.collapsible;\n\n if (nonInteractiveItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 1);\n this.focusItem(items[1]);\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 0);\n this.focusHeader(items[0]);\n return;\n }\n\n if (this.modeRadioGroup) {\n items[currentSelectedIndex].selected = false;\n items[0].selected = true;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 0);\n this.focusItem(items[0]);\n }\n\n handleEndKey(e: KeyboardEvent): void {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n\n if (this.modeRadioGroup) {\n items[currentSelectedIndex].selected = false;\n items[items.length - 1].selected = true;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, items.length - 1);\n this.focusItem(items[items.length - 1]);\n }\n\n handleLetterKey(e: KeyboardEvent): void {\n const letterKey = e.key;\n e.preventDefault();\n this._focusHandler.focusMatchingListItem(letterKey);\n }\n\n onItemPress(clickedItem: UDExListItemBase): void {\n if (this.modeSingleSelect && !this.controlled) {\n this.revertSelectedItems(this.getSelectedItems());\n clickedItem.selected = true;\n }\n\n if (this.modeRadioGroup && !this.controlled) {\n const groupHeader = clickedItem.parentElement as UDExListGroupHeaderBase;\n const groupItems = groupHeader.getItems() as Array<UDExListItemBase>;\n this.revertSelectedItems(groupItems);\n clickedItem.selected = true;\n }\n\n this.resetTabIndexes();\n clickedItem._tabIndex = \"0\";\n\n this.fireDecoratorEvent(\"selection-change\", {\n listItems: this.getItemsFromList(),\n selectedItems: this.getSelectedItems(),\n item: clickedItem,\n });\n }\n\n revertSelectedItems(items: Array<UDExListItemBase>): void {\n items.forEach((item: UDExListItemBase) => {\n if (!item.disabled) {\n item.selected = false;\n }\n });\n }\n\n focusSelectedItem(): void {\n const selectedItemIndex = this.items.findIndex(item => item.selected);\n this.resetTabIndexes();\n if (selectedItemIndex !== -1 && this.modeSingleSelect) {\n this.setTabIndexByIndex(this.items, selectedItemIndex);\n }\n }\n\n focusHeader(item: UDExListItemBase): void {\n const header = item.shadowRoot?.querySelector(\".udex-list__group-header-wrap\") as HTMLElement;\n if (!header) { return; }\n // If the wrap element is a custom element (e.g. udex-list-item used for MultiSelect\n // collapsible headers), its host has no tabindex so .focus() is a no-op. Delegate\n // to the inner [part=item] div which carries the actual tabindex.\n const focusTarget = header.shadowRoot?.querySelector<HTMLElement>(\"[part=item]\") ?? header;\n focusTarget.focus();\n }\n\n focusItem(item: UDExListItemBase): void {\n // UI5Element.focus() is async. Synchronously drill to the focusable shadow element\n // so focus is set immediately (required for JAWS and reliable Cypress assertions).\n const focusTarget = item.shadowRoot?.querySelector<HTMLElement>(\"[part=item]\") ?? item;\n focusTarget.focus();\n }\n\n scrollToItem(item: UDExListItemBase): void {\n item.scrollIntoView({ block: this._scrollIntoView?.toLowerCase() as ScrollLogicalPosition });\n }\n\n unsetTabIndexByIndex(items: UDExListItemBase[], index: number): void {\n items[index]._tabIndex = \"-1\";\n }\n\n setTabIndexByIndex(items: UDExListItemBase[], index: number): void {\n items[index]._tabIndex = \"0\";\n }\n\n getItems(): Array<UDExListItemBase> {\n return this.getSlottedNodes<UDExListItemBase>(\"items\");\n }\n\n getSelectedItems(): Array<UDExListItemBase> {\n return this.getItemsFromList().filter(item => item.selected);\n }\n\n getCurrentIndex(items: Array<UDExListItemBase | HTMLElement>, item: UDExListItemBase | HTMLElement): number {\n return items.indexOf(item);\n }\n\n getKeyboardNavigationItems(): Array<UDExListItemBase> {\n return this.getItemsFromList().filter(item => {\n const parent = item.parentElement as UDExListItemBase;\n return !item.disabled\n && (!item.isGroup || item.modeMultiSelect || item.collapsible)\n && !(parent?.isGroup && parent.collapsed);\n });\n }\n\n getItemsFromList(): Array<UDExListItemBase> {\n const items: UDExListItemBase[] = [];\n const slottedItems = this.getItems();\n\n slottedItems.forEach(item => {\n const childItems = item.isGroup ? item.children : [];\n items.push(item, ...childItems as UDExListItemBase[]);\n });\n\n return items;\n }\n\n prepareListItemsMode(): void {\n const treeMode = this._hasCollapsibleGroups;\n this.getItemsFromList().forEach((item, index) => {\n item.mode = this.mode;\n item.controlled = this.controlled;\n item.type = this.type;\n item._icon = this.itemIcon;\n item._tabIndex = this.getTabIndex(index, item);\n if (item.isGroup) {\n // Only upgrade _treeMode to true; never force it to false, since\n // SearchableListBaseTemplate may have set _tree-mode=true externally.\n if (treeMode) {\n item._treeMode = true;\n }\n } else if (treeMode) {\n // Set accessibleRole for standalone List tree mode.\n // Never overwrite a value already set by an external template (e.g. FilterMenu\n // sets accessible-role=\"treeitem\" on children via SearchableListBaseTemplate).\n item.accessibleRole = \"treeitem\";\n item.setAttribute(\"_list-managed-role\", \"\");\n } else if (item.getAttribute(\"_list-managed-role\") !== null) {\n item.accessibleRole = \"\";\n item.removeAttribute(\"_list-managed-role\");\n }\n });\n }\n\n getTabIndex(index: number, item: UDExListItemBase): string {\n const isFirstItem = this.modeSelected && index === 0;\n const isFirstItemInGroupList = this.isGroupList && index === 1;\n const listGroupHeader = item.closest(\"[udex-list-group-header]\") as UDExListGroupHeader;\n const modeSingleOrRadio = this.modeSingleSelect || this.modeRadioGroup;\n const isFirstHeader = item.isGroup && isFirstItem;\n const isFirstHeaderMultiMode = isFirstHeader && this.modeMultiSelect && !item.nonInteractive;\n const isFirstItemGroupSingleOrRadioMode = isFirstItemInGroupList && modeSingleOrRadio;\n const isFirstItemGroupMultiMode = isFirstItemInGroupList && this.modeMultiSelect && listGroupHeader?.nonInteractive;\n const isCollapsibleHeader = item.isGroup && item.collapsible;\n\n if (isFirstHeaderMultiMode || isFirstItemGroupSingleOrRadioMode || isFirstItemGroupMultiMode || isFirstItem || isCollapsibleHeader) {\n return \"0\";\n }\n\n return \"-1\";\n }\n\n resetTabIndexes(): void {\n this.getItemsFromList().forEach(item => {\n item._tabIndex = \"-1\";\n });\n }\n\n setCollapsedItems(collapsed: boolean, target: UDExListItemBase): void {\n const items = target.getSlottedNodes<UDExListItemBase>(\"items\");\n items.forEach(item => {\n if (collapsed) {\n item.setAttribute(\"collapsed\", \"\");\n } else {\n item.removeAttribute(\"collapsed\");\n }\n });\n }\n\n get isGroupList(): boolean {\n return this.getItemsFromList().some(item => item.isGroup);\n }\n\n get ariaLabelModeText(): string {\n const defaultText = this.modeSingleSelect || this.modeRadioGroup\n ? ARIA_LABEL_LIST_SELECTABLE\n : ARIA_LABEL_LIST_MULTISELECTABLE;\n\n return this.accessibleName || translate(UDExList, defaultText);\n }\n\n get ariaLabelledBy(): string {\n return `${this._id}-mode-label`;\n }\n\n get singleContentAriaLabel(): string | undefined {\n const label = this.accessibleName || this.headerText;\n return label || undefined;\n }\n\n get modeRadioGroup(): boolean {\n return this.mode === UDExListMode.RadioGroup;\n }\n\n get modeMultiSelect(): boolean {\n return this.mode === UDExListMode.MultiSelect;\n }\n\n get modeSingleSelect(): boolean {\n return this.mode === UDExListMode.SingleSelect;\n }\n\n get modeSingleContent(): boolean {\n return this.mode === UDExListMode.SingleContent;\n }\n\n get modeSelected(): boolean {\n return [UDExListMode.SingleSelect, UDExListMode.MultiSelect, UDExListMode.RadioGroup].includes(this.mode as UDExListMode);\n }\n\n get holderHeight(): string {\n return this.height ? this.height : \"auto\";\n }\n\n /** True when at least one slotted group header has the collapsible attribute. */\n get _hasCollapsibleGroups(): boolean {\n return this.getItems().some(item => item.isGroup && item.hasAttribute(\"collapsible\"));\n }\n\n /**\n * The effective ARIA role for the inner list div.\n * When the list has collapsible group headers it uses the tree pattern so that\n * JAWS enters application mode and delivers arrow-key events to the component.\n */\n get effectiveAccessibleRole(): string {\n return this._hasCollapsibleGroups ? \"tree\" : this.accessibleRole;\n }\n\n /**\n * Role for SingleContent mode. listbox/option is for selection widgets only;\n * SingleContent is informational so \"list\"/\"listitem\" is the correct semantic.\n */\n get singleContentRole(): string {\n return this.accessibleRole !== \"listbox\" ? this.accessibleRole : \"list\";\n }\n\n /** aria-multiselectable exposed only for MultiSelect tree (collapsible groups). */\n get _listAriaMultiSelectable(): string | undefined {\n return (this._hasCollapsibleGroups && this.modeMultiSelect) ? \"true\" : undefined;\n }\n}\n\nUDExList.define();\n\nexport default UDExList;\nexport type { UDExListSelectionChangeEventDetail };\n"]}
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../src/List.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport {\n isUp, isDown, isHome, isEnd, isRight, isLeft,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport type UDExListItem from \"./ListItem.js\";\nimport type { UDExScrollIntoViewOptions } from \"./types/List.js\";\nimport { UDExListStyleType, UDExListMode } from \"./types/List.js\";\nimport type UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport type UDExUploadItem from \"./UploadItem.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { ARIA_LABEL_LIST_MULTISELECTABLE, ARIA_LABEL_LIST_SELECTABLE } from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\nimport isLetterKey from \"./utils/isLetterKeyPressed.js\";\nimport type { UDExListWithFirstLetterFocus } from \"./utils/ListWithFirstLetterFocus.js\";\nimport UDExFirstLetterFocusHandler from \"./utils/ListWithFirstLetterFocus.js\";\nimport getEffectiveScrollbarStyle from \"./utils/getEffectiveScrollbarStyle.js\";\nimport ListTemplate from \"./ListTemplate.js\";\n\n// Styles\nimport ListCss from \"./generated/themes/List.css.js\";\n\nexport type UDExListItemBase = UDExListItem & UDExListGroupHeader & UDExUploadItem;\n\ntype UDExListSelectionChangeEventDetail = {\n listItems: Array<UDExListItemBase>,\n selectedItems: Array<UDExListItemBase>,\n item: HTMLElement,\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-list</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/List.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-list\n * @public\n */\n@customElement({\n languageAware: true,\n tag: \"udex-list\",\n renderer: jsxRenderer,\n styles: [ListCss, getEffectiveScrollbarStyle()],\n template: ListTemplate,\n})\n\n/**\n * Fired when selection is changed by user interaction\n *\n * @public\n * @param {Array<UDExListItemBase>} listItems All items inside the list\n * @param {Array<UDExListItemBase>} selectedItems Currently selected items\n * @param {HTMLElement} item The item that triggered the event\n */\n@event(\"selection-change\", { bubbles: true })\n\nclass UDExList extends UI5Element {\n eventDetails!: {\n \"selection-change\": UDExListSelectionChangeEventDetail\n };\n /**\n * Defines the accessible role of the component.\n *\n * @default \"listbox\"\n * @public\n */\n @property()\n accessibleRole: string = \"listbox\";\n\n /**\n * Defines the accessible name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n accessibleName: string = \"\";\n\n /**\n * Defines the mode of the component.\n *\n * @default \"SingleSelect\"\n * @public\n */\n @property()\n mode: `${UDExListMode}` = UDExListMode.SingleSelect;\n\n /**\n * Defines the type of the item.\n *\n * @default \"None\"\n * @public\n */\n @property()\n type: `${UDExListStyleType}` = UDExListStyleType.None;\n\n /**\n * Allows control over the height.\n *\n * @public\n */\n @property({ type: String })\n height?: string;\n\n /**\n * Defines the controlled of the component.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n controlled?: boolean;\n\n /**\n * Defines the headerText, displayed in the top of the list.\n *\n * @public\n */\n @property({ type: String })\n headerText?: string;\n\n /**\n * Defines the name of the UI5 Icon, that will be displayed for each item of the list.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n itemIcon: string = \"\";\n\n /** @deprecated Tab keyboard navigation is no longer allowed. */\n @property({ type: Boolean })\n tabNavigationEnabled?: boolean;\n\n /**\n * Slot for list items.\n *\n * @slot items\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true })\n items!: DefaultSlot<UDExListItemBase>;\n\n /**\n * Defines the scroll behavior for the items of the component.\n *\n * @default undefined\n * @private\n */\n @property()\n _scrollIntoView?: `${UDExScrollIntoViewOptions}`;\n\n _focusHandler: UDExListWithFirstLetterFocus = new UDExFirstLetterFocusHandler();\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n onBeforeRendering(): void {\n this.prepareListItemsMode();\n this._focusHandler.resetMatchingItems();\n this._focusHandler._focusableListItems = this.getKeyboardNavigationItems();\n }\n\n handleItemPress(e: CustomEvent): void {\n const clickedItem: UDExListItemBase = e.detail.item;\n this.onItemPress(clickedItem);\n }\n\n handleKeyDown(e: KeyboardEvent): void {\n if (isRight(e)) {\n this.handleArrowRight(e);\n }\n\n if (isLeft(e)) {\n this.handleArrowLeft(e);\n }\n\n if (isUp(e)) {\n this.handleUpArrow(e);\n }\n if (isDown(e)) {\n this.handleDownArrow(e);\n }\n if (isHome(e)) {\n this.handleHomeKey(e);\n }\n if (isEnd(e)) {\n this.handleEndKey(e);\n }\n if (isLetterKey(e.key)) {\n this.handleLetterKey(e);\n }\n }\n\n handleArrowRight(e: KeyboardEvent): void {\n const target = e.target as UDExListItemBase;\n if (target.isGroup && target.hasAttribute(\"collapsible\") && target.collapsed) {\n target.collapsed = false;\n this.setCollapsedItems(false, target);\n this.fireAccordionToggle(target);\n }\n }\n\n handleArrowLeft(e: KeyboardEvent): void {\n const target = e.target as UDExListItemBase;\n if (target.isGroup && target.hasAttribute(\"collapsible\") && !target.collapsed) {\n target.collapsed = true;\n this.setCollapsedItems(true, target);\n this.fireAccordionToggle(target);\n }\n }\n\n /**\n * Arrow-key expand/collapse toggles `collapsed` directly here (multi-select\n * headers deliver Left/Right to the List, not to the header's own key handler),\n * so the `accordion-icon-click` event that drives the collapse/expand live-region\n * announcement is never fired on this path. Re-emit it from the header so\n * SearchableListBase announces the new state to screen readers, matching the\n * chevron/pointer and single-select paths.\n */\n fireAccordionToggle(target: UDExListItemBase): void {\n target.dispatchEvent(new CustomEvent(\"accordion-icon-click\", {\n bubbles: true,\n detail: { collapsed: target.collapsed },\n }));\n }\n\n handleUpArrow(e: KeyboardEvent): void {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const lastItemIndex = items.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n const isHeaderItem = items[previousSelectIndex].isGroup;\n const nonInteractiveHeader = items[previousSelectIndex].nonInteractive && !items[previousSelectIndex].collapsible;\n\n if (nonInteractiveHeader && previousSelectIndex === 0) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, lastItemIndex);\n if (this._scrollIntoView) {\n this.scrollToItem(items[lastItemIndex]);\n }\n this.focusItem(items[lastItemIndex]);\n return;\n }\n\n if (nonInteractiveHeader) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex - 1);\n if (this._scrollIntoView) {\n this.scrollToItem(items[previousSelectIndex - 1]);\n }\n this.focusItem(items[previousSelectIndex - 1]);\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex);\n if (this._scrollIntoView) {\n this.scrollToItem(items[previousSelectIndex]);\n }\n this.focusHeader(items[previousSelectIndex]);\n return;\n }\n\n if (this.modeRadioGroup) {\n items[currentSelectedIndex].selected = false;\n items[previousSelectIndex].selected = true;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex);\n setTimeout(() => {\n if (this._scrollIntoView) {\n this.scrollToItem(items[previousSelectIndex]);\n }\n this.focusItem(items[previousSelectIndex]);\n }, 0);\n }\n\n handleDownArrow(e: KeyboardEvent): void {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const nextSelectIndex = currentSelectedIndex + 1 > items.length - 1 ? 0 : currentSelectedIndex + 1;\n const isHeaderItem = items[nextSelectIndex].isGroup;\n const nonInteractiveHeader = items[nextSelectIndex].nonInteractive && !items[nextSelectIndex].collapsible;\n\n if (nonInteractiveHeader) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex + 1);\n if (this._scrollIntoView) {\n this.scrollToItem(items[nextSelectIndex + 1]);\n }\n this.focusItem(items[nextSelectIndex + 1]);\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex);\n if (this._scrollIntoView) {\n this.scrollToItem(items[nextSelectIndex]);\n }\n this.focusHeader(items[nextSelectIndex]);\n return;\n }\n\n if (this.modeRadioGroup) {\n items[currentSelectedIndex].selected = false;\n items[nextSelectIndex].selected = true;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex);\n setTimeout(() => {\n if (this._scrollIntoView) {\n this.scrollToItem(items[nextSelectIndex]);\n }\n this.focusItem(items[nextSelectIndex]);\n }, 0);\n }\n\n handleHomeKey(e: KeyboardEvent): void {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const firstItem = items[0];\n const isHeaderItem = firstItem.isGroup;\n const nonInteractiveItem = firstItem.nonInteractive && !firstItem.collapsible;\n\n if (nonInteractiveItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 1);\n this.focusItem(items[1]);\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 0);\n this.focusHeader(items[0]);\n return;\n }\n\n if (this.modeRadioGroup) {\n items[currentSelectedIndex].selected = false;\n items[0].selected = true;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 0);\n this.focusItem(items[0]);\n }\n\n handleEndKey(e: KeyboardEvent): void {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n\n if (this.modeRadioGroup) {\n items[currentSelectedIndex].selected = false;\n items[items.length - 1].selected = true;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, items.length - 1);\n this.focusItem(items[items.length - 1]);\n }\n\n handleLetterKey(e: KeyboardEvent): void {\n const letterKey = e.key;\n e.preventDefault();\n this._focusHandler.focusMatchingListItem(letterKey);\n }\n\n onItemPress(clickedItem: UDExListItemBase): void {\n if (this.modeSingleSelect && !this.controlled) {\n this.revertSelectedItems(this.getSelectedItems());\n clickedItem.selected = true;\n }\n\n if (this.modeRadioGroup && !this.controlled) {\n const groupHeader = clickedItem.parentElement as UDExListGroupHeaderBase;\n const groupItems = groupHeader.getItems() as Array<UDExListItemBase>;\n this.revertSelectedItems(groupItems);\n clickedItem.selected = true;\n }\n\n this.resetTabIndexes();\n clickedItem._tabIndex = \"0\";\n\n this.fireDecoratorEvent(\"selection-change\", {\n listItems: this.getItemsFromList(),\n selectedItems: this.getSelectedItems(),\n item: clickedItem,\n });\n }\n\n revertSelectedItems(items: Array<UDExListItemBase>): void {\n items.forEach((item: UDExListItemBase) => {\n if (!item.disabled) {\n item.selected = false;\n }\n });\n }\n\n focusSelectedItem(): void {\n const selectedItemIndex = this.items.findIndex(item => item.selected);\n this.resetTabIndexes();\n if (selectedItemIndex !== -1 && this.modeSingleSelect) {\n this.setTabIndexByIndex(this.items, selectedItemIndex);\n }\n }\n\n focusHeader(item: UDExListItemBase): void {\n const header = item.shadowRoot?.querySelector(\".udex-list__group-header-wrap\") as HTMLElement;\n if (!header) { return; }\n // If the wrap element is a custom element (e.g. udex-list-item used for MultiSelect\n // collapsible headers), its host has no tabindex so .focus() is a no-op. Delegate\n // to the inner [part=item] div which carries the actual tabindex.\n const focusTarget = header.shadowRoot?.querySelector<HTMLElement>(\"[part=item]\") ?? header;\n focusTarget.focus();\n }\n\n focusItem(item: UDExListItemBase): void {\n // UI5Element.focus() is async. Synchronously drill to the focusable shadow element\n // so focus is set immediately (required for JAWS and reliable Cypress assertions).\n const focusTarget = item.shadowRoot?.querySelector<HTMLElement>(\"[part=item]\") ?? item;\n focusTarget.focus();\n }\n\n scrollToItem(item: UDExListItemBase): void {\n item.scrollIntoView({ block: this._scrollIntoView?.toLowerCase() as ScrollLogicalPosition });\n }\n\n unsetTabIndexByIndex(items: UDExListItemBase[], index: number): void {\n items[index]._tabIndex = \"-1\";\n }\n\n setTabIndexByIndex(items: UDExListItemBase[], index: number): void {\n items[index]._tabIndex = \"0\";\n }\n\n getItems(): Array<UDExListItemBase> {\n return this.getSlottedNodes<UDExListItemBase>(\"items\");\n }\n\n getSelectedItems(): Array<UDExListItemBase> {\n return this.getItemsFromList().filter(item => item.selected);\n }\n\n getCurrentIndex(items: Array<UDExListItemBase | HTMLElement>, item: UDExListItemBase | HTMLElement): number {\n return items.indexOf(item);\n }\n\n getKeyboardNavigationItems(): Array<UDExListItemBase> {\n return this.getItemsFromList().filter(item => {\n const parent = item.parentElement as UDExListItemBase;\n return !item.disabled\n && (!item.isGroup || item.modeMultiSelect || item.collapsible)\n && !(parent?.isGroup && parent.collapsed);\n });\n }\n\n getItemsFromList(): Array<UDExListItemBase> {\n const items: UDExListItemBase[] = [];\n const slottedItems = this.getItems();\n\n slottedItems.forEach(item => {\n const childItems = item.isGroup ? item.children : [];\n items.push(item, ...childItems as UDExListItemBase[]);\n });\n\n return items;\n }\n\n prepareListItemsMode(): void {\n const treeMode = this._hasCollapsibleGroups;\n this.getItemsFromList().forEach((item, index) => {\n item.mode = this.mode;\n item.controlled = this.controlled;\n item.type = this.type;\n item._icon = this.itemIcon;\n item._tabIndex = this.getTabIndex(index, item);\n if (item.isGroup) {\n // Only upgrade _treeMode to true; never force it to false, since\n // SearchableListBaseTemplate may have set _tree-mode=true externally.\n if (treeMode) {\n item._treeMode = true;\n }\n } else if (treeMode) {\n // Set accessibleRole for standalone List tree mode.\n // Never overwrite a value already set by an external template (e.g. FilterMenu\n // sets accessible-role=\"treeitem\" on children via SearchableListBaseTemplate).\n item.accessibleRole = \"treeitem\";\n item.setAttribute(\"_list-managed-role\", \"\");\n } else if (item.getAttribute(\"_list-managed-role\") !== null) {\n item.accessibleRole = \"\";\n item.removeAttribute(\"_list-managed-role\");\n }\n });\n }\n\n getTabIndex(index: number, item: UDExListItemBase): string {\n const isFirstItem = this.modeSelected && index === 0;\n const isFirstItemInGroupList = this.isGroupList && index === 1;\n const listGroupHeader = item.closest(\"[udex-list-group-header]\") as UDExListGroupHeader;\n const modeSingleOrRadio = this.modeSingleSelect || this.modeRadioGroup;\n const isFirstHeader = item.isGroup && isFirstItem;\n const isFirstHeaderMultiMode = isFirstHeader && this.modeMultiSelect && !item.nonInteractive;\n const isFirstItemGroupSingleOrRadioMode = isFirstItemInGroupList && modeSingleOrRadio;\n const isFirstItemGroupMultiMode = isFirstItemInGroupList && this.modeMultiSelect && listGroupHeader?.nonInteractive;\n const isCollapsibleHeader = item.isGroup && item.collapsible;\n\n if (isFirstHeaderMultiMode || isFirstItemGroupSingleOrRadioMode || isFirstItemGroupMultiMode || isFirstItem || isCollapsibleHeader) {\n return \"0\";\n }\n\n return \"-1\";\n }\n\n resetTabIndexes(): void {\n this.getItemsFromList().forEach(item => {\n item._tabIndex = \"-1\";\n });\n }\n\n setCollapsedItems(collapsed: boolean, target: UDExListItemBase): void {\n const items = target.getSlottedNodes<UDExListItemBase>(\"items\");\n items.forEach(item => {\n if (collapsed) {\n item.setAttribute(\"collapsed\", \"\");\n } else {\n item.removeAttribute(\"collapsed\");\n }\n });\n }\n\n get isGroupList(): boolean {\n return this.getItemsFromList().some(item => item.isGroup);\n }\n\n get ariaLabelModeText(): string {\n const defaultText = this.modeSingleSelect || this.modeRadioGroup\n ? ARIA_LABEL_LIST_SELECTABLE\n : ARIA_LABEL_LIST_MULTISELECTABLE;\n\n return this.accessibleName || translate(UDExList, defaultText);\n }\n\n get ariaLabelledBy(): string {\n return `${this._id}-mode-label`;\n }\n\n get singleContentAriaLabel(): string | undefined {\n const label = this.accessibleName || this.headerText;\n return label || undefined;\n }\n\n get modeRadioGroup(): boolean {\n return this.mode === UDExListMode.RadioGroup;\n }\n\n get modeMultiSelect(): boolean {\n return this.mode === UDExListMode.MultiSelect;\n }\n\n get modeSingleSelect(): boolean {\n return this.mode === UDExListMode.SingleSelect;\n }\n\n get modeSingleContent(): boolean {\n return this.mode === UDExListMode.SingleContent;\n }\n\n get modeSelected(): boolean {\n return [UDExListMode.SingleSelect, UDExListMode.MultiSelect, UDExListMode.RadioGroup].includes(this.mode as UDExListMode);\n }\n\n get holderHeight(): string {\n return this.height ? this.height : \"auto\";\n }\n\n /** True when at least one slotted group header has the collapsible attribute. */\n get _hasCollapsibleGroups(): boolean {\n return this.getItems().some(item => item.isGroup && item.hasAttribute(\"collapsible\"));\n }\n\n /**\n * The effective ARIA role for the inner list div.\n * When the list has collapsible group headers it uses the tree pattern so that\n * JAWS enters application mode and delivers arrow-key events to the component.\n */\n get effectiveAccessibleRole(): string {\n return this._hasCollapsibleGroups ? \"tree\" : this.accessibleRole;\n }\n\n /**\n * Role for SingleContent mode. listbox/option is for selection widgets only;\n * SingleContent is informational so \"list\"/\"listitem\" is the correct semantic.\n */\n get singleContentRole(): string {\n return this.accessibleRole !== \"listbox\" ? this.accessibleRole : \"list\";\n }\n\n /**\n * aria-multiselectable is exposed for every MultiSelect list — the flat listbox\n * and the collapsible tree alike. It is required so the screen reader announces\n * each option's selected / not-selected state (from aria-selected) instead of\n * treating the container as single-select and announcing only the active option.\n */\n get _listAriaMultiSelectable(): string | undefined {\n return this.modeMultiSelect ? \"true\" : undefined;\n }\n}\n\nUDExList.define();\n\nexport default UDExList;\nexport type { UDExListSelectionChangeEventDetail };\n"]}
@@ -28,6 +28,17 @@ declare class UDExListGroupHeaderBase extends UDExListItemBase {
28
28
  * @private
29
29
  */
30
30
  _treeMode: boolean;
31
+ /**
32
+ * Marks the group as a self-contained role="listbox" (FilterMenu real-focus
33
+ * SingleSelect, non-collapsible groups). When true, this group's options are
34
+ * wrapped in their own listbox so JAWS counts them natively per group. Set by
35
+ * the parent (SearchableListBase.isPerGroupListbox) only when the whole list is
36
+ * grouped; the outer #udex-list drops its listbox role in that case.
37
+ *
38
+ * @default false
39
+ * @private
40
+ */
41
+ _groupAsListbox: boolean;
31
42
  /**
32
43
  * Slot for group header list items.
33
44
  *
@@ -64,7 +75,9 @@ declare class UDExListGroupHeaderBase extends UDExListItemBase {
64
75
  */
65
76
  get useListItemHeader(): boolean;
66
77
  get isTreeAccessibleRole(): boolean;
78
+ get isPerGroupListbox(): boolean;
67
79
  get singleCollapsibleHeaderRole(): string;
80
+ get collapsibleHeaderLabelledBy(): string;
68
81
  get collapsibleHeaderAccessibleRole(): string;
69
82
  get groupWrapperRole(): string;
70
83
  get contentRegionRole(): string;
@@ -32,6 +32,17 @@ let UDExListGroupHeaderBase = class UDExListGroupHeaderBase extends UDExListItem
32
32
  * @private
33
33
  */
34
34
  this._treeMode = false;
35
+ /**
36
+ * Marks the group as a self-contained role="listbox" (FilterMenu real-focus
37
+ * SingleSelect, non-collapsible groups). When true, this group's options are
38
+ * wrapped in their own listbox so JAWS counts them natively per group. Set by
39
+ * the parent (SearchableListBase.isPerGroupListbox) only when the whole list is
40
+ * grouped; the outer #udex-list drops its listbox role in that case.
41
+ *
42
+ * @default false
43
+ * @private
44
+ */
45
+ this._groupAsListbox = false;
35
46
  }
36
47
  handleSelectionGroupState() {
37
48
  const isAnyEnabledOption = this.isAnyEnabledOption();
@@ -159,9 +170,26 @@ let UDExListGroupHeaderBase = class UDExListGroupHeaderBase extends UDExListItem
159
170
  get isTreeAccessibleRole() {
160
171
  return this._treeMode;
161
172
  }
173
+ // FilterMenu real-focus SingleSelect non-collapsible group: its options are
174
+ // rendered inside their own role="listbox" so JAWS counts them natively per
175
+ // group ("1 of 4"). JAWS ignores role="group" boundaries and author
176
+ // aria-posinset within a single listbox, but counts reliably within a flat
177
+ // listbox. Excludes SelectBox (_useHostAriaRole) and tree mode.
178
+ get isPerGroupListbox() {
179
+ return this._groupAsListbox && !this._useHostAriaRole && !this._treeMode;
180
+ }
162
181
  get singleCollapsibleHeaderRole() {
163
182
  return this._treeMode ? "treeitem" : "button";
164
183
  }
184
+ // Pins the collapsible header's accessible name to its heading (+ supporting text)
185
+ // so the decorative expand/collapse chevron button — a child of the header — does
186
+ // not fold its "Expand"/"Collapse" label into the header's name. The chevron is a
187
+ // mouse affordance only (tabindex=-1); its state is already conveyed by
188
+ // aria-expanded, so excluding its name avoids announcing "Collapse" alongside the
189
+ // spoken "expanded"/"collapsed" state.
190
+ get collapsibleHeaderLabelledBy() {
191
+ return this.supportingText ? "group-heading group-supporting-text" : "group-heading";
192
+ }
165
193
  get collapsibleHeaderAccessibleRole() {
166
194
  return this._treeMode ? "treeitem" : "button";
167
195
  }
@@ -169,13 +197,23 @@ let UDExListGroupHeaderBase = class UDExListGroupHeaderBase extends UDExListItem
169
197
  if (this._useHostAriaRole) {
170
198
  return "presentation";
171
199
  }
172
- return this._treeMode ? "none" : "group";
200
+ // Tree mode keeps the treeitem/group nesting; per-group-listbox mode moves the
201
+ // single labelled role="listbox" onto the inner options wrapper — the outer div
202
+ // is transparent so screen readers don't announce a redundant "group" around it.
203
+ if (this._treeMode || this.isPerGroupListbox) {
204
+ return "none";
205
+ }
206
+ return "group";
173
207
  }
174
208
  get contentRegionRole() {
175
209
  return this._treeMode ? "group" : "region";
176
210
  }
177
211
  get nonCollapsibleContainerRole() {
178
- return "group";
212
+ // The single role="group" for non-collapsible headers lives on the outer
213
+ // div.udex-list__group wrapper (groupWrapperRole = "group" in non-tree mode,
214
+ // labelled by aria-labelledby="group-heading"). This container div must be
215
+ // transparent so that extra "group group" announcements are avoided.
216
+ return "none";
179
217
  }
180
218
  get nonCollapsibleHeaderAccessibleRole() {
181
219
  return this._treeMode ? "treeitem" : undefined;
@@ -197,6 +235,9 @@ __decorate([
197
235
  __decorate([
198
236
  property({ type: Boolean })
199
237
  ], UDExListGroupHeaderBase.prototype, "_treeMode", void 0);
238
+ __decorate([
239
+ property({ type: Boolean })
240
+ ], UDExListGroupHeaderBase.prototype, "_groupAsListbox", void 0);
200
241
  __decorate([
201
242
  slot({ type: UDExListItemBase, "default": true })
202
243
  ], UDExListGroupHeaderBase.prototype, "items", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ListGroupHeaderBase.js","sourceRoot":"","sources":["../src/ListGroupHeaderBase.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport UDExListItemBase from \"./ListItemBase.js\";\n\nconst listGroupHeaderClass: string = \"udex-list__group-header\";\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExListGroupHeader</code> and <code>UDExFilterMenuGroupHeader</code> classes.\n *\n * @constructor\n * @author SAP SE\n * @extends UDExListItemBase\n * @public\n */\n@customElement({\n languageAware: true,\n renderer: jsxRenderer,\n})\n\nclass UDExListGroupHeaderBase extends UDExListItemBase {\n /**\n * Defines non-interactive the group header.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n nonInteractive!: boolean;\n\n @property({ type: String })\n _additionalClassName!: string;\n\n /**\n * Marks the group header as part of a tree structure. When true, the header\n * renders as a treeitem and its children container as a group.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _treeMode: boolean = false;\n\n /**\n * Slot for group header list items.\n *\n * @slot items\n * @public\n */\n @slot({ type: UDExListItemBase, \"default\": true })\n items!: DefaultSlot<UDExListItemBase>;\n\n handleSelectionGroupState() {\n const isAnyEnabledOption = this.isAnyEnabledOption();\n\n if (!isAnyEnabledOption) {\n return;\n }\n\n const isAllSelectedGroupState = this.isAllSelected();\n const isIndeterminateGroupState = this.indeterminate;\n\n if (isAllSelectedGroupState) {\n this.processGroupDeselectAll();\n } else if (isIndeterminateGroupState) {\n this.toggleIndeterminateGroupState();\n } else {\n this.processGroupSelectAll();\n }\n }\n\n processGroupDeselectAll() {\n const isAnySelectedOptionDisabled = this.isAnySelectedOptionDisabled();\n\n this.setAllItems(false);\n\n if (isAnySelectedOptionDisabled) {\n this.activateHeaderIndeterminate();\n } else {\n this.deactivateHeader();\n }\n }\n\n toggleIndeterminateGroupState() {\n const isEachEnabledOptionSelected = this.isEachEnabledOptionSelected();\n\n if (isEachEnabledOptionSelected) {\n this.processGroupDeselectAll();\n } else {\n this.processGroupSelectAll();\n }\n }\n\n processGroupSelectAll() {\n const isAnyNotSelectedOptionDisabled = this.isAnyNotSelectedOptionDisabled();\n\n this.setAllItems(true);\n\n if (isAnyNotSelectedOptionDisabled) {\n this.activateHeaderIndeterminate();\n } else {\n this.activateHeader();\n }\n }\n\n handleHeaderState() {\n const isAllSelected = this.isAllSelected();\n const isAllDeselected = this.isAllDeselected();\n\n if (isAllDeselected) {\n this.deactivateHeader();\n return;\n }\n\n if (isAllSelected) {\n this.activateHeader();\n return;\n }\n\n this.activateHeaderIndeterminate();\n }\n\n activateHeaderIndeterminate() {\n this.selected = true;\n this.indeterminate = true;\n }\n\n activateHeader() {\n this.indeterminate = false;\n this.selected = true;\n }\n\n deactivateHeader() {\n this.selected = false;\n this.indeterminate = false;\n }\n\n setAllItems(value: boolean) {\n this.getItems().forEach(item => {\n if (!item.disabled) {\n item.selected = value;\n }\n });\n }\n\n isAllSelected(): boolean {\n return this.getItems().every(({ selected }) => selected);\n }\n\n isAllDeselected(): boolean {\n return this.getItems().every(({ selected }) => !selected);\n }\n\n isEachEnabledOptionSelected(): boolean {\n return this.getItems().every(item => item.disabled || item.selected);\n }\n\n isAnyNotSelectedOptionDisabled(): boolean {\n return this.getItems().some(item => !item.selected && item.disabled);\n }\n\n isAnySelected(): boolean {\n return this.getItems().some(item => item.selected);\n }\n\n isAnySelectedOptionDisabled(): boolean {\n return this.getItems().some(({ disabled, selected }) => disabled && selected);\n }\n\n isAnyEnabledOption(): boolean {\n return this.getItems().some(({ disabled }) => !disabled);\n }\n\n getItems(): Array<UDExListItemBase> {\n return this.getSlottedNodes<UDExListItemBase>(\"items\");\n }\n\n get isGroup(): boolean {\n return true;\n }\n\n get isSelectAllHeader(): boolean {\n return false;\n }\n\n get isFilterMenuSelectAllHeader(): boolean {\n return false;\n }\n\n get isNonActiveHeader(): boolean {\n return this.nonInteractive || this.modeRadioGroup;\n }\n\n /**\n * Decides which collapsible-header partial to render.\n * Uses the udex-list-item-based partial for MultiSelect/RadioGroup only.\n * SingleSelect collapsible headers use the plain div partial — the list-item\n * partial fires its own Enter/Space/click selection handlers that must not run.\n */\n get useListItemHeader(): boolean {\n return this.modeMultiSelectOrRadioGroup;\n }\n\n get isTreeAccessibleRole(): boolean {\n return this._treeMode;\n }\n\n get singleCollapsibleHeaderRole(): string {\n return this._treeMode ? \"treeitem\" : \"button\";\n }\n\n get collapsibleHeaderAccessibleRole(): string {\n return this._treeMode ? \"treeitem\" : \"button\";\n }\n\n get groupWrapperRole(): string {\n if (this._useHostAriaRole) {\n return \"presentation\";\n }\n return this._treeMode ? \"none\" : \"group\";\n }\n\n get contentRegionRole(): string {\n return this._treeMode ? \"group\" : \"region\";\n }\n\n get nonCollapsibleContainerRole(): string {\n return \"group\";\n }\n\n get nonCollapsibleHeaderAccessibleRole(): string | undefined {\n return this._treeMode ? \"treeitem\" : undefined;\n }\n\n get className(): string {\n const controlledClassName = this.controlled ? `${listGroupHeaderClass}_controlled` : \"\";\n return `${listGroupHeaderClass} ${this._additionalClassName} ${controlledClassName} ${listGroupHeaderClass}-wrap`;\n }\n\n get listItem(): UDExListItemBase {\n return this.shadowRoot!.querySelector<UDExListItemBase>(\"[udex-list-item]\")!;\n }\n}\n\nexport default UDExListGroupHeaderBase;\n"]}
1
+ {"version":3,"file":"ListGroupHeaderBase.js","sourceRoot":"","sources":["../src/ListGroupHeaderBase.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport type { DefaultSlot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport UDExListItemBase from \"./ListItemBase.js\";\n\nconst listGroupHeaderClass: string = \"udex-list__group-header\";\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExListGroupHeader</code> and <code>UDExFilterMenuGroupHeader</code> classes.\n *\n * @constructor\n * @author SAP SE\n * @extends UDExListItemBase\n * @public\n */\n@customElement({\n languageAware: true,\n renderer: jsxRenderer,\n})\n\nclass UDExListGroupHeaderBase extends UDExListItemBase {\n /**\n * Defines non-interactive the group header.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n nonInteractive!: boolean;\n\n @property({ type: String })\n _additionalClassName!: string;\n\n /**\n * Marks the group header as part of a tree structure. When true, the header\n * renders as a treeitem and its children container as a group.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _treeMode: boolean = false;\n\n /**\n * Marks the group as a self-contained role=\"listbox\" (FilterMenu real-focus\n * SingleSelect, non-collapsible groups). When true, this group's options are\n * wrapped in their own listbox so JAWS counts them natively per group. Set by\n * the parent (SearchableListBase.isPerGroupListbox) only when the whole list is\n * grouped; the outer #udex-list drops its listbox role in that case.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _groupAsListbox: boolean = false;\n\n /**\n * Slot for group header list items.\n *\n * @slot items\n * @public\n */\n @slot({ type: UDExListItemBase, \"default\": true })\n items!: DefaultSlot<UDExListItemBase>;\n\n handleSelectionGroupState() {\n const isAnyEnabledOption = this.isAnyEnabledOption();\n\n if (!isAnyEnabledOption) {\n return;\n }\n\n const isAllSelectedGroupState = this.isAllSelected();\n const isIndeterminateGroupState = this.indeterminate;\n\n if (isAllSelectedGroupState) {\n this.processGroupDeselectAll();\n } else if (isIndeterminateGroupState) {\n this.toggleIndeterminateGroupState();\n } else {\n this.processGroupSelectAll();\n }\n }\n\n processGroupDeselectAll() {\n const isAnySelectedOptionDisabled = this.isAnySelectedOptionDisabled();\n\n this.setAllItems(false);\n\n if (isAnySelectedOptionDisabled) {\n this.activateHeaderIndeterminate();\n } else {\n this.deactivateHeader();\n }\n }\n\n toggleIndeterminateGroupState() {\n const isEachEnabledOptionSelected = this.isEachEnabledOptionSelected();\n\n if (isEachEnabledOptionSelected) {\n this.processGroupDeselectAll();\n } else {\n this.processGroupSelectAll();\n }\n }\n\n processGroupSelectAll() {\n const isAnyNotSelectedOptionDisabled = this.isAnyNotSelectedOptionDisabled();\n\n this.setAllItems(true);\n\n if (isAnyNotSelectedOptionDisabled) {\n this.activateHeaderIndeterminate();\n } else {\n this.activateHeader();\n }\n }\n\n handleHeaderState() {\n const isAllSelected = this.isAllSelected();\n const isAllDeselected = this.isAllDeselected();\n\n if (isAllDeselected) {\n this.deactivateHeader();\n return;\n }\n\n if (isAllSelected) {\n this.activateHeader();\n return;\n }\n\n this.activateHeaderIndeterminate();\n }\n\n activateHeaderIndeterminate() {\n this.selected = true;\n this.indeterminate = true;\n }\n\n activateHeader() {\n this.indeterminate = false;\n this.selected = true;\n }\n\n deactivateHeader() {\n this.selected = false;\n this.indeterminate = false;\n }\n\n setAllItems(value: boolean) {\n this.getItems().forEach(item => {\n if (!item.disabled) {\n item.selected = value;\n }\n });\n }\n\n isAllSelected(): boolean {\n return this.getItems().every(({ selected }) => selected);\n }\n\n isAllDeselected(): boolean {\n return this.getItems().every(({ selected }) => !selected);\n }\n\n isEachEnabledOptionSelected(): boolean {\n return this.getItems().every(item => item.disabled || item.selected);\n }\n\n isAnyNotSelectedOptionDisabled(): boolean {\n return this.getItems().some(item => !item.selected && item.disabled);\n }\n\n isAnySelected(): boolean {\n return this.getItems().some(item => item.selected);\n }\n\n isAnySelectedOptionDisabled(): boolean {\n return this.getItems().some(({ disabled, selected }) => disabled && selected);\n }\n\n isAnyEnabledOption(): boolean {\n return this.getItems().some(({ disabled }) => !disabled);\n }\n\n getItems(): Array<UDExListItemBase> {\n return this.getSlottedNodes<UDExListItemBase>(\"items\");\n }\n\n get isGroup(): boolean {\n return true;\n }\n\n get isSelectAllHeader(): boolean {\n return false;\n }\n\n get isFilterMenuSelectAllHeader(): boolean {\n return false;\n }\n\n get isNonActiveHeader(): boolean {\n return this.nonInteractive || this.modeRadioGroup;\n }\n\n /**\n * Decides which collapsible-header partial to render.\n * Uses the udex-list-item-based partial for MultiSelect/RadioGroup only.\n * SingleSelect collapsible headers use the plain div partial — the list-item\n * partial fires its own Enter/Space/click selection handlers that must not run.\n */\n get useListItemHeader(): boolean {\n return this.modeMultiSelectOrRadioGroup;\n }\n\n get isTreeAccessibleRole(): boolean {\n return this._treeMode;\n }\n\n // FilterMenu real-focus SingleSelect non-collapsible group: its options are\n // rendered inside their own role=\"listbox\" so JAWS counts them natively per\n // group (\"1 of 4\"). JAWS ignores role=\"group\" boundaries and author\n // aria-posinset within a single listbox, but counts reliably within a flat\n // listbox. Excludes SelectBox (_useHostAriaRole) and tree mode.\n get isPerGroupListbox(): boolean {\n return this._groupAsListbox && !this._useHostAriaRole && !this._treeMode;\n }\n\n get singleCollapsibleHeaderRole(): string {\n return this._treeMode ? \"treeitem\" : \"button\";\n }\n\n // Pins the collapsible header's accessible name to its heading (+ supporting text)\n // so the decorative expand/collapse chevron button — a child of the header — does\n // not fold its \"Expand\"/\"Collapse\" label into the header's name. The chevron is a\n // mouse affordance only (tabindex=-1); its state is already conveyed by\n // aria-expanded, so excluding its name avoids announcing \"Collapse\" alongside the\n // spoken \"expanded\"/\"collapsed\" state.\n get collapsibleHeaderLabelledBy(): string {\n return this.supportingText ? \"group-heading group-supporting-text\" : \"group-heading\";\n }\n\n get collapsibleHeaderAccessibleRole(): string {\n return this._treeMode ? \"treeitem\" : \"button\";\n }\n\n get groupWrapperRole(): string {\n if (this._useHostAriaRole) {\n return \"presentation\";\n }\n // Tree mode keeps the treeitem/group nesting; per-group-listbox mode moves the\n // single labelled role=\"listbox\" onto the inner options wrapper — the outer div\n // is transparent so screen readers don't announce a redundant \"group\" around it.\n if (this._treeMode || this.isPerGroupListbox) {\n return \"none\";\n }\n return \"group\";\n }\n\n get contentRegionRole(): string {\n return this._treeMode ? \"group\" : \"region\";\n }\n\n get nonCollapsibleContainerRole(): string {\n // The single role=\"group\" for non-collapsible headers lives on the outer\n // div.udex-list__group wrapper (groupWrapperRole = \"group\" in non-tree mode,\n // labelled by aria-labelledby=\"group-heading\"). This container div must be\n // transparent so that extra \"group group\" announcements are avoided.\n return \"none\";\n }\n\n get nonCollapsibleHeaderAccessibleRole(): string | undefined {\n return this._treeMode ? \"treeitem\" : undefined;\n }\n\n get className(): string {\n const controlledClassName = this.controlled ? `${listGroupHeaderClass}_controlled` : \"\";\n return `${listGroupHeaderClass} ${this._additionalClassName} ${controlledClassName} ${listGroupHeaderClass}-wrap`;\n }\n\n get listItem(): UDExListItemBase {\n return this.shadowRoot!.querySelector<UDExListItemBase>(\"[udex-list-item]\")!;\n }\n}\n\nexport default UDExListGroupHeaderBase;\n"]}
@@ -1,4 +1,4 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "@ui5/webcomponents-base/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "@ui5/webcomponents-base/jsx-runtime";
2
2
  import UDExListItem from "./ListItem.js";
3
3
  import UDExButton from "./Button.js";
4
4
  import Icon from "@ui5/webcomponents/dist/Icon.js";
@@ -8,26 +8,45 @@ import slimArrowRight from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
8
8
  function SingleGroupHeader() {
9
9
  return (_jsxs("div", { class: `udex-list__group-content udex-list__group-header-wrap ${this.sizeClass}`, part: "group-item", children: [this.typeNumber && _jsxs("span", { class: "udex-list__number", children: [this.numberOfItem, "."] }), this.typeCircle && _jsx("span", { class: "udex-list__circle", children: "\u2022" }), this.typeIcon && (_jsx(Icon, { class: "udex-list__icon", "accessible-role": "presentation", "aria-hidden": "true", part: "icon", name: this._icon })), _jsxs("div", { class: "udex-list__header", children: [_jsx("span", { id: "group-heading", class: "udex-list__header-title", ...{ innerHTML: this.label } }), this.supportingText && (_jsx("span", { class: `udex-list__supporting-text ${this.sizeClass}`, children: this.supportingText }))] })] }));
10
10
  }
11
+ // The visible header row of the single-select collapsible group: number/icon,
12
+ // heading + supporting text, and the expand/collapse chevron.
13
+ function SingleCollapsibleHeaderRow() {
14
+ return (_jsxs(_Fragment, { children: [this.typeNumber && _jsxs("span", { class: "udex-list__number", children: [this.numberOfItem, "."] }), this.typeCircle && _jsx("span", { class: "udex-list__circle", children: "\u2022" }), this.typeIcon && (_jsx(Icon, { name: this._icon, class: "udex-list__icon", "accessible-role": "presentation", "aria-hidden": "true", part: "icon" })), _jsxs("div", { class: "udex-list__header", children: [_jsx("span", { id: "group-heading", class: "udex-list__header-title", ...{ innerHTML: this.label } }), this.supportingText && (_jsx("span", { id: "group-supporting-text", class: `udex-list__supporting-text ${this.sizeClass}`, children: this.supportingText }))] }), _jsx("div", { class: "udex-list__group-heading__icon-wrapper", children: _jsx(UDExButton, { size: "Small", design: "Tertiary", class: "udex-list__group-heading__icon", onClick: this.handleCollapseIconClick, onMouseDown: this.handleCollapseIconMouseDown, tabindex: -1, "accessible-name": this.expandButtonAccessibleName, icon: slimArrowRight, ...{ "mode": "Interactive" } }) })] }));
15
+ }
11
16
  function SingleGroupHeaderCollapsible() {
12
- return (_jsxs("div", { class: `udex-list__group-content udex-list__group-header-wrap ${this.sizeClass}`, part: "group-item", id: `${this._id}_group-content__focusable`, role: this.singleCollapsibleHeaderRole, tabIndex: 0, onKeyDown: this.handleKeyDown, "aria-expanded": this.expanded, "aria-controls": this.ariaControlsId, "_tab-index": Number(this._effectiveTabIndex), children: [this.typeNumber && _jsxs("span", { class: "udex-list__number", children: [this.numberOfItem, "."] }), this.typeCircle && _jsx("span", { class: "udex-list__circle", children: "\u2022" }), this.typeIcon && (_jsx(Icon, { name: this._icon, class: "udex-list__icon", "accessible-role": "presentation", "aria-hidden": "true", part: "icon" })), _jsxs("div", { class: "udex-list__header", children: [_jsx("span", { id: "group-heading", class: "udex-list__header-title", ...{ innerHTML: this.label } }), this.supportingText && (_jsx("span", { class: `udex-list__supporting-text ${this.sizeClass}`, children: this.supportingText }))] }), _jsx("div", { class: "udex-list__group-heading__icon-wrapper", children: _jsx(UDExButton, { size: "Small", design: "Tertiary", class: "udex-list__group-heading__icon", onClick: this.handleCollapseIconClick, tabindex: -1, "accessible-name": this.expandButtonAccessibleName, icon: slimArrowRight, ...{ "mode": "Interactive" } }) })] }));
17
+ // Conformant WAI-ARIA tree (FilterMenu real focus): nest the child role="group"
18
+ // INSIDE this treeitem so screen readers count children per group natively — no
19
+ // explicit aria-posinset/aria-setsize (which JAWS distrusts). Excludes SelectBox
20
+ // (aria-activedescendant, _useHostAriaRole) and non-tree modes, which keep the flat
21
+ // structure with the content region emitted as a sibling by the template body.
22
+ const nested = this.isTreeAccessibleRole && !this._useHostAriaRole;
23
+ return (_jsx("div", { class: `udex-list__group-content ${nested ? "udex-list__group-content--nested " : ""}udex-list__group-header-wrap ${this.sizeClass}`, part: "group-item", id: `${this._id}_group-content__focusable`, role: this.singleCollapsibleHeaderRole, tabIndex: 0, onKeyDown: this.handleKeyDown, "aria-expanded": this.expanded, "aria-controls": this.ariaControlsId, "aria-labelledby": this.collapsibleHeaderLabelledBy, "_tab-index": Number(this._effectiveTabIndex), children: nested ? (_jsxs(_Fragment, { children: [_jsx("div", { class: "udex-list__group-header-row", children: SingleCollapsibleHeaderRow.call(this) }), _jsx("div", { id: this.ariaControlsId, role: this.contentRegionRole, class: "udex-list__group-list__content", children: _jsx("slot", {}) })] })) : (SingleCollapsibleHeaderRow.call(this)) }));
13
24
  }
14
25
  function MultiOrRadioGroupHeader() {
15
26
  if (this.isNonActiveHeader) {
16
27
  return (_jsx("header", { id: "group-heading", class: "udex-list__inactive-header udex-list__group-header-wrap", children: _jsxs("div", { class: "udex-list__inactive-header-content", children: [_jsx("span", { class: "udex-list__header-title", ...{ innerHTML: this.label } }), this.supportingText && (_jsx("span", { class: "udex-list__supporting-text", children: this.supportingText }))] }) }));
17
28
  }
18
- return (_jsx(UDExListItem, { id: "group-heading", part: "group-item", role: "none", selected: this.selected, indeterminate: this.indeterminate, class: this.className, mode: this.mode, controlled: this.controlled, onClick: this.handleHeaderPress, onKeyDown: this.handleKeyDownPress, type: this.type, label: this.label, size: this.size, supportingText: this.supportingText, "accessible-role": this.nonCollapsibleHeaderAccessibleRole, "_additional-class-name": this._additionalClassName, "_tab-index": Number(this._effectiveTabIndex), _icon: this._icon, _filtered: this._filtered }));
29
+ return (_jsx(UDExListItem, { id: "group-heading", part: "group-item", role: "none", selected: this.selected, indeterminate: this.indeterminate, class: this.className, mode: this.mode, controlled: this.controlled, onClick: this.handleHeaderPress, onKeyDown: this.handleKeyDownPress, type: this.type, label: this.label, size: this.size, supportingText: this.supportingText, "accessible-role": this.nonCollapsibleHeaderAccessibleRole, "_additional-class-name": this._additionalClassName, "_tab-index": Number(this._effectiveTabIndex), "_aria-pos-in-set": this._ariaPosInSet, "_aria-set-size": this._ariaSetSize, _icon: this._icon, _filtered: this._filtered }));
19
30
  }
20
31
  function MultiOrRadioGroupHeaderCollapsible() {
21
32
  if (this.isNonActiveHeader) {
22
33
  return (_jsxs("header", { role: "button", id: "group-heading", class: "udex-list__inactive-header udex-list__group-header-wrap", tabIndex: Number(this._effectiveTabIndex), "aria-expanded": this.expanded, "aria-controls": this.ariaControlsId, children: [_jsxs("div", { class: "udex-list__inactive-header-content", children: [_jsx("span", { class: "udex-list__header-title", ...{ innerHTML: this.label } }), this.supportingText && (_jsx("span", { class: "udex-list__supporting-text", children: this.supportingText }))] }), _jsx("div", { class: "udex-list__group-heading__icon-wrapper", children: _jsx(UDExButton, { class: "udex-list__group-heading__icon", size: UDExButtonSize.Small, design: UDExButtonDesign.Tertiary, tabindex: -1, icon: slimArrowRight, onClick: this.handleCollapseIconClick, "accessible-name": this.expandButtonAccessibleName, ...{ "mode": "Interactive" } }) })] }));
23
34
  }
24
- return (_jsx(UDExListItem, { id: "group-heading", part: "group-item", role: "none", "aria-expanded": this.expanded, "aria-controls": this.ariaControlsId, selected: this.selected, indeterminate: this.indeterminate, collapsible: this.collapsible, collapsed: this.collapsed, class: this.className, mode: this.mode, controlled: this.controlled, onClick: this.handleHeaderPress, onKeyDown: this.handleKeyDownPress, type: this.type, label: this.label, size: this.size, supportingText: this.supportingText, "accessible-role": this.collapsibleHeaderAccessibleRole, onAccordionIconClick: this.handleCollapseIconClick, "_additional-class-name": this._additionalClassName, "_tab-index": Number(this._effectiveTabIndex), _icon: this._icon, _filtered: this._filtered }));
35
+ return (_jsx(UDExListItem, { id: "group-heading", part: "group-item", role: "none", "aria-expanded": this.expanded, "aria-controls": this.ariaControlsId, selected: this.selected, indeterminate: this.indeterminate, collapsible: this.collapsible, collapsed: this.collapsed, class: this.className, mode: this.mode, controlled: this.controlled, onClick: this.handleHeaderPress, onKeyDown: this.handleKeyDownPress, type: this.type, label: this.label, size: this.size, supportingText: this.supportingText, "accessible-role": this.collapsibleHeaderAccessibleRole, onAccordionIconClick: this.handleCollapseIconClick, "_additional-class-name": this._additionalClassName, "_tab-index": Number(this._effectiveTabIndex), "_aria-pos-in-set": this._ariaPosInSet, "_aria-set-size": this._ariaSetSize, _icon: this._icon, _filtered: this._filtered }));
25
36
  }
26
37
  export default function ListGroupHeaderTemplate() {
27
- return (_jsx("div", { part: "item", class: "udex-list__group", role: this.groupWrapperRole, "aria-labelledby": !this.isTreeAccessibleRole ? "group-heading" : undefined, children: this.collapsible ? (_jsxs("div", { class: "udex-list__group-list", "onui5-item-press": this.getHandleGroupItemsClick, ...{ name: "group" }, children: [this.useListItemHeader
38
+ // Single-select real-focus tree: SingleGroupHeaderCollapsible now emits the
39
+ // role="group" content region as a CHILD of the treeitem (conformant nesting),
40
+ // so the template body must not also emit it as a sibling.
41
+ const singleSelectNested = this.isTreeAccessibleRole && !this.useListItemHeader && !this._useHostAriaRole;
42
+ return (_jsx("div", { part: "item", class: "udex-list__group", role: this.groupWrapperRole, "aria-labelledby": (!this.isTreeAccessibleRole && !this.isPerGroupListbox) ? "group-heading" : undefined, children: this.collapsible ? (_jsxs("div", { class: "udex-list__group-list", "onui5-item-press": this.getHandleGroupItemsClick, ...{ name: "group" }, children: [this.useListItemHeader
28
43
  ? MultiOrRadioGroupHeaderCollapsible.call(this)
29
- : SingleGroupHeaderCollapsible.call(this), _jsx("div", { id: this.ariaControlsId, role: this.contentRegionRole, class: "udex-list__group-list__content", children: this.isTreeAccessibleRole ? (_jsx("slot", {})) : (_jsx("div", { role: "listbox", "aria-label": "group", children: _jsx("slot", {}) })) })] })) : (_jsxs("div", { role: this.nonCollapsibleContainerRole, class: "udex-list__group-list", "aria-label": "group", "onui5-item-press": this.getHandleGroupItemsClick, ...{ name: "group" }, children: [this.modeMultiSelectOrRadioGroup
44
+ : SingleGroupHeaderCollapsible.call(this), !singleSelectNested && (_jsx("div", { id: this.ariaControlsId, role: this.contentRegionRole, class: "udex-list__group-list__content", children: this.isTreeAccessibleRole ? (_jsx("slot", {})) : (_jsx("div", { role: "listbox", "aria-label": "group", children: _jsx("slot", {}) })) }))] })) : (_jsxs("div", { role: this.nonCollapsibleContainerRole, class: "udex-list__group-list", "onui5-item-press": this.getHandleGroupItemsClick, ...{ name: "group" }, children: [this.modeMultiSelectOrRadioGroup
30
45
  ? MultiOrRadioGroupHeader.call(this)
31
- : SingleGroupHeader.call(this), _jsx("slot", {})] })) }));
46
+ : SingleGroupHeader.call(this), this.isTreeAccessibleRole ? (_jsx("div", { role: "group", children: _jsx("slot", {}) })) : this.isPerGroupListbox ? (
47
+ // Each group is its own labelled listbox: JAWS counts the options natively
48
+ // per group ("Python, 1 of 4"). The outer #udex-list is presentational
49
+ // (SearchableListBase.isPerGroupListbox) so this is not a nested listbox.
50
+ _jsx("div", { role: "listbox", "aria-labelledby": "group-heading", children: _jsx("slot", {}) })) : (_jsx("slot", {}))] })) }));
32
51
  }
33
52
  //# sourceMappingURL=ListGroupHeaderTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListGroupHeaderTemplate.js","sourceRoot":"","sources":["../src/ListGroupHeaderTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { AriaRole } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExButton from \"./Button.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\n\nfunction SingleGroupHeader(this: UDExListGroupHeader) {\n return (\n <div class={`udex-list__group-content udex-list__group-header-wrap ${this.sizeClass}`} part=\"group-item\">\n {this.typeNumber && <span class=\"udex-list__number\">{this.numberOfItem}.</span>}\n {this.typeCircle && <span class=\"udex-list__circle\">&#x2022;</span>}\n {this.typeIcon && (\n <Icon\n class=\"udex-list__icon\"\n accessible-role=\"presentation\"\n aria-hidden=\"true\"\n part=\"icon\"\n name={this._icon}\n />\n )}\n <div class=\"udex-list__header\">\n <span\n id=\"group-heading\"\n class=\"udex-list__header-title\"\n {...({ innerHTML: this.label } as object)}>\n </span>\n {this.supportingText && (\n <span class={`udex-list__supporting-text ${this.sizeClass}`}>{this.supportingText}</span>\n )}\n </div>\n </div>\n );\n}\n\nfunction SingleGroupHeaderCollapsible(this: UDExListGroupHeader) {\n return (\n <div\n class={`udex-list__group-content udex-list__group-header-wrap ${this.sizeClass}`}\n part=\"group-item\"\n id={`${this._id}_group-content__focusable`}\n role={this.singleCollapsibleHeaderRole as AriaRole}\n tabIndex={0}\n onKeyDown={this.handleKeyDown}\n aria-expanded={this.expanded}\n aria-controls={this.ariaControlsId}\n _tab-index={Number(this._effectiveTabIndex)}>\n {this.typeNumber && <span class=\"udex-list__number\">{this.numberOfItem}.</span>}\n {this.typeCircle && <span class=\"udex-list__circle\">&#x2022;</span>}\n {this.typeIcon && (\n <Icon\n name={this._icon}\n class=\"udex-list__icon\"\n accessible-role=\"presentation\"\n aria-hidden=\"true\"\n part=\"icon\"\n />\n )}\n <div class=\"udex-list__header\">\n <span\n id=\"group-heading\"\n class=\"udex-list__header-title\"\n {...({ innerHTML: this.label } as object)}>\n </span>\n {this.supportingText && (\n <span class={`udex-list__supporting-text ${this.sizeClass}`}>{this.supportingText}</span>\n )}\n </div>\n <div class=\"udex-list__group-heading__icon-wrapper\">\n <UDExButton\n size=\"Small\"\n design=\"Tertiary\"\n class=\"udex-list__group-heading__icon\"\n onClick={this.handleCollapseIconClick as unknown as EventListener}\n tabindex={-1}\n accessible-name={this.expandButtonAccessibleName}\n icon={slimArrowRight}\n {...({ \"mode\": \"Interactive\" } as object)}\n />\n </div>\n </div>\n );\n}\n\nfunction MultiOrRadioGroupHeader(this: UDExListGroupHeader) {\n if (this.isNonActiveHeader) {\n return (\n <header id=\"group-heading\" class=\"udex-list__inactive-header udex-list__group-header-wrap\">\n <div class=\"udex-list__inactive-header-content\">\n <span class=\"udex-list__header-title\" {...({ innerHTML: this.label } as object)}></span>\n {this.supportingText && (\n <span class=\"udex-list__supporting-text\">{this.supportingText}</span>\n )}\n </div>\n </header>\n );\n }\n return (\n <UDExListItem\n id=\"group-heading\"\n part=\"group-item\"\n role=\"none\"\n selected={this.selected}\n indeterminate={this.indeterminate}\n class={this.className}\n mode={this.mode}\n controlled={this.controlled}\n onClick={this.handleHeaderPress}\n onKeyDown={this.handleKeyDownPress}\n type={this.type}\n label={this.label}\n size={this.size}\n supportingText={this.supportingText}\n accessible-role={this.nonCollapsibleHeaderAccessibleRole}\n _additional-class-name={this._additionalClassName}\n _tab-index={Number(this._effectiveTabIndex)}\n _icon={this._icon}\n _filtered={this._filtered}\n />\n );\n}\n\nfunction MultiOrRadioGroupHeaderCollapsible(this: UDExListGroupHeader) {\n if (this.isNonActiveHeader) {\n return (\n <header\n role=\"button\"\n id=\"group-heading\"\n class=\"udex-list__inactive-header udex-list__group-header-wrap\"\n tabIndex={Number(this._effectiveTabIndex)}\n aria-expanded={this.expanded}\n aria-controls={this.ariaControlsId}>\n <div class=\"udex-list__inactive-header-content\">\n <span class=\"udex-list__header-title\" {...({ innerHTML: this.label } as object)}></span>\n {this.supportingText && (\n <span class=\"udex-list__supporting-text\">{this.supportingText}</span>\n )}\n </div>\n <div class=\"udex-list__group-heading__icon-wrapper\">\n <UDExButton\n class=\"udex-list__group-heading__icon\"\n size={UDExButtonSize.Small}\n design={UDExButtonDesign.Tertiary}\n tabindex={-1}\n icon={slimArrowRight}\n onClick={this.handleCollapseIconClick as EventListener}\n accessible-name={this.expandButtonAccessibleName}\n {...({ \"mode\": \"Interactive\" } as object)}\n />\n </div>\n </header>\n );\n }\n return (\n <UDExListItem\n id=\"group-heading\"\n part=\"group-item\"\n role=\"none\"\n aria-expanded={this.expanded}\n aria-controls={this.ariaControlsId}\n selected={this.selected}\n indeterminate={this.indeterminate}\n collapsible={this.collapsible}\n collapsed={this.collapsed}\n class={this.className}\n mode={this.mode}\n controlled={this.controlled}\n onClick={this.handleHeaderPress}\n onKeyDown={this.handleKeyDownPress}\n type={this.type}\n label={this.label}\n size={this.size}\n supportingText={this.supportingText}\n accessible-role={this.collapsibleHeaderAccessibleRole}\n onAccordionIconClick={this.handleCollapseIconClick as EventListener}\n _additional-class-name={this._additionalClassName}\n _tab-index={Number(this._effectiveTabIndex)}\n _icon={this._icon}\n _filtered={this._filtered}\n />\n );\n}\n\nexport default function ListGroupHeaderTemplate(this: UDExListGroupHeader) {\n return (\n <div\n part=\"item\"\n class=\"udex-list__group\"\n role={this.groupWrapperRole as AriaRole}\n aria-labelledby={!this.isTreeAccessibleRole ? \"group-heading\" : undefined}>\n {this.collapsible ? (\n <div\n class=\"udex-list__group-list\"\n onui5-item-press={this.getHandleGroupItemsClick}\n {...({ name: \"group\" } as object)}>\n {this.useListItemHeader\n ? MultiOrRadioGroupHeaderCollapsible.call(this)\n : SingleGroupHeaderCollapsible.call(this)\n }\n <div id={this.ariaControlsId} role={this.contentRegionRole as AriaRole} class=\"udex-list__group-list__content\">\n {this.isTreeAccessibleRole ? (\n <slot></slot>\n ) : (\n <div role=\"listbox\" aria-label=\"group\">\n <slot></slot>\n </div>\n )}\n </div>\n </div>\n ) : (\n <div\n role={this.nonCollapsibleContainerRole as AriaRole}\n class=\"udex-list__group-list\"\n aria-label=\"group\"\n onui5-item-press={this.getHandleGroupItemsClick}\n {...({ name: \"group\" } as object)}>\n {this.modeMultiSelectOrRadioGroup\n ? MultiOrRadioGroupHeader.call(this)\n : SingleGroupHeader.call(this)\n }\n <slot></slot>\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"ListGroupHeaderTemplate.js","sourceRoot":"","sources":["../src/ListGroupHeaderTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { AriaRole } from \"@ui5/webcomponents-base/dist/types.js\";\nimport type UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExButton from \"./Button.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport UDExButtonSize from \"./types/ButtonSize.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\nimport slimArrowRight from \"@ui5/webcomponents-icons/dist/slim-arrow-right.js\";\n\nfunction SingleGroupHeader(this: UDExListGroupHeader) {\n return (\n <div class={`udex-list__group-content udex-list__group-header-wrap ${this.sizeClass}`} part=\"group-item\">\n {this.typeNumber && <span class=\"udex-list__number\">{this.numberOfItem}.</span>}\n {this.typeCircle && <span class=\"udex-list__circle\">&#x2022;</span>}\n {this.typeIcon && (\n <Icon\n class=\"udex-list__icon\"\n accessible-role=\"presentation\"\n aria-hidden=\"true\"\n part=\"icon\"\n name={this._icon}\n />\n )}\n <div class=\"udex-list__header\">\n <span\n id=\"group-heading\"\n class=\"udex-list__header-title\"\n {...({ innerHTML: this.label } as object)}>\n </span>\n {this.supportingText && (\n <span class={`udex-list__supporting-text ${this.sizeClass}`}>{this.supportingText}</span>\n )}\n </div>\n </div>\n );\n}\n\n// The visible header row of the single-select collapsible group: number/icon,\n// heading + supporting text, and the expand/collapse chevron.\nfunction SingleCollapsibleHeaderRow(this: UDExListGroupHeader) {\n return (\n <>\n {this.typeNumber && <span class=\"udex-list__number\">{this.numberOfItem}.</span>}\n {this.typeCircle && <span class=\"udex-list__circle\">&#x2022;</span>}\n {this.typeIcon && (\n <Icon\n name={this._icon}\n class=\"udex-list__icon\"\n accessible-role=\"presentation\"\n aria-hidden=\"true\"\n part=\"icon\"\n />\n )}\n <div class=\"udex-list__header\">\n <span\n id=\"group-heading\"\n class=\"udex-list__header-title\"\n {...({ innerHTML: this.label } as object)}>\n </span>\n {this.supportingText && (\n <span id=\"group-supporting-text\" class={`udex-list__supporting-text ${this.sizeClass}`}>{this.supportingText}</span>\n )}\n </div>\n <div class=\"udex-list__group-heading__icon-wrapper\">\n <UDExButton\n size=\"Small\"\n design=\"Tertiary\"\n class=\"udex-list__group-heading__icon\"\n onClick={this.handleCollapseIconClick as unknown as EventListener}\n onMouseDown={this.handleCollapseIconMouseDown}\n tabindex={-1}\n accessible-name={this.expandButtonAccessibleName}\n icon={slimArrowRight}\n {...({ \"mode\": \"Interactive\" } as object)}\n />\n </div>\n </>\n );\n}\n\nfunction SingleGroupHeaderCollapsible(this: UDExListGroupHeader) {\n // Conformant WAI-ARIA tree (FilterMenu real focus): nest the child role=\"group\"\n // INSIDE this treeitem so screen readers count children per group natively — no\n // explicit aria-posinset/aria-setsize (which JAWS distrusts). Excludes SelectBox\n // (aria-activedescendant, _useHostAriaRole) and non-tree modes, which keep the flat\n // structure with the content region emitted as a sibling by the template body.\n const nested = this.isTreeAccessibleRole && !this._useHostAriaRole;\n return (\n <div\n class={`udex-list__group-content ${nested ? \"udex-list__group-content--nested \" : \"\"}udex-list__group-header-wrap ${this.sizeClass}`}\n part=\"group-item\"\n id={`${this._id}_group-content__focusable`}\n role={this.singleCollapsibleHeaderRole as AriaRole}\n tabIndex={0}\n onKeyDown={this.handleKeyDown}\n aria-expanded={this.expanded}\n aria-controls={this.ariaControlsId}\n aria-labelledby={this.collapsibleHeaderLabelledBy}\n _tab-index={Number(this._effectiveTabIndex)}>\n {nested ? (\n <>\n <div class=\"udex-list__group-header-row\">\n {SingleCollapsibleHeaderRow.call(this)}\n </div>\n <div id={this.ariaControlsId} role={this.contentRegionRole as AriaRole} class=\"udex-list__group-list__content\">\n <slot></slot>\n </div>\n </>\n ) : (\n SingleCollapsibleHeaderRow.call(this)\n )}\n </div>\n );\n}\n\nfunction MultiOrRadioGroupHeader(this: UDExListGroupHeader) {\n if (this.isNonActiveHeader) {\n return (\n <header id=\"group-heading\" class=\"udex-list__inactive-header udex-list__group-header-wrap\">\n <div class=\"udex-list__inactive-header-content\">\n <span class=\"udex-list__header-title\" {...({ innerHTML: this.label } as object)}></span>\n {this.supportingText && (\n <span class=\"udex-list__supporting-text\">{this.supportingText}</span>\n )}\n </div>\n </header>\n );\n }\n return (\n <UDExListItem\n id=\"group-heading\"\n part=\"group-item\"\n role=\"none\"\n selected={this.selected}\n indeterminate={this.indeterminate}\n class={this.className}\n mode={this.mode}\n controlled={this.controlled}\n onClick={this.handleHeaderPress}\n onKeyDown={this.handleKeyDownPress}\n type={this.type}\n label={this.label}\n size={this.size}\n supportingText={this.supportingText}\n accessible-role={this.nonCollapsibleHeaderAccessibleRole}\n _additional-class-name={this._additionalClassName}\n _tab-index={Number(this._effectiveTabIndex)}\n _aria-pos-in-set={this._ariaPosInSet}\n _aria-set-size={this._ariaSetSize}\n _icon={this._icon}\n _filtered={this._filtered}\n />\n );\n}\n\nfunction MultiOrRadioGroupHeaderCollapsible(this: UDExListGroupHeader) {\n if (this.isNonActiveHeader) {\n return (\n <header\n role=\"button\"\n id=\"group-heading\"\n class=\"udex-list__inactive-header udex-list__group-header-wrap\"\n tabIndex={Number(this._effectiveTabIndex)}\n aria-expanded={this.expanded}\n aria-controls={this.ariaControlsId}>\n <div class=\"udex-list__inactive-header-content\">\n <span class=\"udex-list__header-title\" {...({ innerHTML: this.label } as object)}></span>\n {this.supportingText && (\n <span class=\"udex-list__supporting-text\">{this.supportingText}</span>\n )}\n </div>\n <div class=\"udex-list__group-heading__icon-wrapper\">\n <UDExButton\n class=\"udex-list__group-heading__icon\"\n size={UDExButtonSize.Small}\n design={UDExButtonDesign.Tertiary}\n tabindex={-1}\n icon={slimArrowRight}\n onClick={this.handleCollapseIconClick as EventListener}\n accessible-name={this.expandButtonAccessibleName}\n {...({ \"mode\": \"Interactive\" } as object)}\n />\n </div>\n </header>\n );\n }\n return (\n <UDExListItem\n id=\"group-heading\"\n part=\"group-item\"\n role=\"none\"\n aria-expanded={this.expanded}\n aria-controls={this.ariaControlsId}\n selected={this.selected}\n indeterminate={this.indeterminate}\n collapsible={this.collapsible}\n collapsed={this.collapsed}\n class={this.className}\n mode={this.mode}\n controlled={this.controlled}\n onClick={this.handleHeaderPress}\n onKeyDown={this.handleKeyDownPress}\n type={this.type}\n label={this.label}\n size={this.size}\n supportingText={this.supportingText}\n accessible-role={this.collapsibleHeaderAccessibleRole}\n onAccordionIconClick={this.handleCollapseIconClick as EventListener}\n _additional-class-name={this._additionalClassName}\n _tab-index={Number(this._effectiveTabIndex)}\n _aria-pos-in-set={this._ariaPosInSet}\n _aria-set-size={this._ariaSetSize}\n _icon={this._icon}\n _filtered={this._filtered}\n />\n );\n}\n\nexport default function ListGroupHeaderTemplate(this: UDExListGroupHeader) {\n // Single-select real-focus tree: SingleGroupHeaderCollapsible now emits the\n // role=\"group\" content region as a CHILD of the treeitem (conformant nesting),\n // so the template body must not also emit it as a sibling.\n const singleSelectNested = this.isTreeAccessibleRole && !this.useListItemHeader && !this._useHostAriaRole;\n return (\n <div\n part=\"item\"\n class=\"udex-list__group\"\n role={this.groupWrapperRole as AriaRole}\n aria-labelledby={(!this.isTreeAccessibleRole && !this.isPerGroupListbox) ? \"group-heading\" : undefined}>\n {this.collapsible ? (\n <div\n class=\"udex-list__group-list\"\n onui5-item-press={this.getHandleGroupItemsClick}\n {...({ name: \"group\" } as object)}>\n {this.useListItemHeader\n ? MultiOrRadioGroupHeaderCollapsible.call(this)\n : SingleGroupHeaderCollapsible.call(this)\n }\n {!singleSelectNested && (\n <div id={this.ariaControlsId} role={this.contentRegionRole as AriaRole} class=\"udex-list__group-list__content\">\n {this.isTreeAccessibleRole ? (\n <slot></slot>\n ) : (\n <div role=\"listbox\" aria-label=\"group\">\n <slot></slot>\n </div>\n )}\n </div>\n )}\n </div>\n ) : (\n <div\n role={this.nonCollapsibleContainerRole as AriaRole}\n class=\"udex-list__group-list\"\n onui5-item-press={this.getHandleGroupItemsClick}\n {...({ name: \"group\" } as object)}>\n {this.modeMultiSelectOrRadioGroup\n ? MultiOrRadioGroupHeader.call(this)\n : SingleGroupHeader.call(this)\n }\n {this.isTreeAccessibleRole ? (\n <div role=\"group\">\n <slot></slot>\n </div>\n ) : this.isPerGroupListbox ? (\n // Each group is its own labelled listbox: JAWS counts the options natively\n // per group (\"Python, 1 of 4\"). The outer #udex-list is presentational\n // (SearchableListBase.isPerGroupListbox) so this is not a nested listbox.\n <div role=\"listbox\" aria-labelledby=\"group-heading\">\n <slot></slot>\n </div>\n ) : (\n <slot></slot>\n )}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -170,7 +170,6 @@ declare class UDExListItem extends UDExListItemBase {
170
170
  get ariaCheckedValue(): "true" | "false" | "mixed" | undefined;
171
171
  get ariaSelectedValue(): "true" | "false" | undefined;
172
172
  get ariaExpandedValue(): "true" | "false" | undefined;
173
- get checkboxAriaHidden(): boolean;
174
173
  get _ariaDisabled(): boolean | undefined;
175
174
  get modeSingleContent(): boolean;
176
175
  get modeRadioGroup(): boolean;
@@ -178,8 +177,6 @@ declare class UDExListItem extends UDExListItemBase {
178
177
  get isLargeSize(): boolean;
179
178
  get accessibleListItemName(): string;
180
179
  get stateAccessibleName(): string;
181
- get itemDescribedBy(): string;
182
- get itemState(): string;
183
180
  get ratingAriaLabel(): string;
184
181
  }
185
182
  export default UDExListItem;
package/dist/ListItem.js CHANGED
@@ -214,24 +214,36 @@ let UDExListItem = UDExListItem_1 = class UDExListItem extends UDExListItemBase
214
214
  return this.selected ? "true" : "false";
215
215
  }
216
216
  get ariaSelectedValue() {
217
- if (this.effectiveRole !== "treeitem") {
217
+ // RadioGroup conveys its state through the radio control, never aria-selected.
218
+ if (this.modeRadioGroup) {
219
+ return undefined;
220
+ }
221
+ // MultiSelect treeitems convey state via aria-checked (see ariaCheckedValue).
222
+ // Every other selectable node — listbox options in both SingleSelect AND
223
+ // MultiSelect, plus SingleSelect treeitems — announces its state natively
224
+ // through aria-selected so the screen reader re-reads it when focus is on the
225
+ // item and when Enter/Space toggles it.
226
+ if (this.roleItem === "treeitem" && this.modeMultiSelect) {
218
227
  return undefined;
219
228
  }
220
- // Only SingleSelect treeitems expose aria-selected; MultiSelect uses aria-checked.
221
- if (this.modeMultiSelect) {
229
+ // Gated on the actual rendered role of the [part=item] div — never the
230
+ // presentational inner div used in aria-activedescendant mode (SelectBox sets
231
+ // aria-selected on the host).
232
+ if (this.roleItem !== "treeitem" && this.roleItem !== "option") {
222
233
  return undefined;
223
234
  }
224
235
  return this.selected ? "true" : "false";
225
236
  }
226
237
  get ariaExpandedValue() {
238
+ // aria-expanded is exposed ONLY on collapsible headers — a node the user can
239
+ // actually expand/collapse. Non-collapsible group headers must NOT report an
240
+ // expanded/collapsed state (nothing to toggle); the tree hierarchy is conveyed
241
+ // structurally by the nested role="group", not by aria-expanded.
227
242
  if (!this.collapsible) {
228
243
  return undefined;
229
244
  }
230
245
  return this.expanded ? "true" : "false";
231
246
  }
232
- get checkboxAriaHidden() {
233
- return this.effectiveRole === "treeitem";
234
- }
235
247
  get _ariaDisabled() {
236
248
  return this.disabled ? true : undefined;
237
249
  }
@@ -256,12 +268,6 @@ let UDExListItem = UDExListItem_1 = class UDExListItem extends UDExListItemBase
256
268
  }
257
269
  return `${this.selected ? translate(UDExListItem_1, SELECTED) : translate(UDExListItem_1, UNSELECTED)} `;
258
270
  }
259
- get itemDescribedBy() {
260
- return `${this._id}-invisibleText-describedby`;
261
- }
262
- get itemState() {
263
- return this.selected ? "Selected" : "Not selected";
264
- }
265
271
  get ratingAriaLabel() {
266
272
  const ratingText = this.ratingCount ? `${translate(UDExListItem_1, RATING_COUNT_TITLE)} ${this.ratingCount}` : "";
267
273
  const totalText = this.totalCount ? `${translate(UDExListItem_1, TOTAL)} ${this.totalCount}` : "";