@sapudex/web-components 2.54.0 → 2.56.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 (415) hide show
  1. package/cypress/specs/Breadcrumbs.cy.tsx +3 -1
  2. package/cypress/specs/FilterMenu.cy.tsx +34 -2
  3. package/cypress/specs/Footer.cy.tsx +59 -0
  4. package/cypress/specs/HeroBanner.cy.tsx +35 -1
  5. package/cypress/specs/List.cy.tsx +63 -1
  6. package/cypress/specs/ListItem.cy.tsx +44 -0
  7. package/cypress/specs/MastheadShell.cy.tsx +39 -0
  8. package/cypress/specs/MediaPlayer.cy.tsx +58 -0
  9. package/cypress/specs/PhoneNumberField.cy.tsx +29 -1
  10. package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +2 -2
  11. package/cypress/specs/SelectBox.cy.tsx +173 -0
  12. package/dist/BreadcrumbsTemplate.js +1 -1
  13. package/dist/BreadcrumbsTemplate.js.map +1 -1
  14. package/dist/CountrySelectorTemplate.js +1 -1
  15. package/dist/CountrySelectorTemplate.js.map +1 -1
  16. package/dist/FilterMenu.d.ts +1 -1
  17. package/dist/FilterMenu.js +11 -7
  18. package/dist/FilterMenu.js.map +1 -1
  19. package/dist/Footer.d.ts +20 -1
  20. package/dist/Footer.js +40 -3
  21. package/dist/Footer.js.map +1 -1
  22. package/dist/FooterTemplate.js +7 -2
  23. package/dist/FooterTemplate.js.map +1 -1
  24. package/dist/HeroBanner.d.ts +12 -0
  25. package/dist/HeroBanner.js +54 -0
  26. package/dist/HeroBanner.js.map +1 -1
  27. package/dist/List.d.ts +5 -0
  28. package/dist/List.js +13 -6
  29. package/dist/List.js.map +1 -1
  30. package/dist/ListGroupHeader.js +12 -5
  31. package/dist/ListGroupHeader.js.map +1 -1
  32. package/dist/ListGroupHeaderBase.d.ts +1 -1
  33. package/dist/ListGroupHeaderBase.js +2 -2
  34. package/dist/ListGroupHeaderBase.js.map +1 -1
  35. package/dist/ListGroupHeaderTemplate.d.ts +2 -0
  36. package/dist/ListGroupHeaderTemplate.js +33 -0
  37. package/dist/ListGroupHeaderTemplate.js.map +1 -0
  38. package/dist/ListItem.d.ts +1 -1
  39. package/dist/ListItem.js +9 -4
  40. package/dist/ListItem.js.map +1 -1
  41. package/dist/ListItemBase.d.ts +1 -0
  42. package/dist/ListItemBase.js +8 -4
  43. package/dist/ListItemBase.js.map +1 -1
  44. package/dist/ListItemTemplate.d.ts +2 -0
  45. package/dist/ListItemTemplate.js +18 -0
  46. package/dist/ListItemTemplate.js.map +1 -0
  47. package/dist/ListSelectAll.js +4 -5
  48. package/dist/ListSelectAll.js.map +1 -1
  49. package/dist/ListSelectAllTemplate.d.ts +2 -0
  50. package/dist/ListSelectAllTemplate.js +6 -0
  51. package/dist/ListSelectAllTemplate.js.map +1 -0
  52. package/dist/ListTemplate.d.ts +2 -0
  53. package/dist/ListTemplate.js +11 -0
  54. package/dist/ListTemplate.js.map +1 -0
  55. package/dist/MastheadShell.d.ts +7 -0
  56. package/dist/MastheadShell.js +38 -0
  57. package/dist/MastheadShell.js.map +1 -1
  58. package/dist/MediaPlayer.js +6 -0
  59. package/dist/MediaPlayer.js.map +1 -1
  60. package/dist/PhoneNumberField.d.ts +3 -3
  61. package/dist/PhoneNumberField.js +18 -21
  62. package/dist/PhoneNumberField.js.map +1 -1
  63. package/dist/PhoneNumberFieldTemplate.d.ts +2 -0
  64. package/dist/PhoneNumberFieldTemplate.js +12 -0
  65. package/dist/PhoneNumberFieldTemplate.js.map +1 -0
  66. package/dist/Search.d.ts +2 -0
  67. package/dist/Search.js +21 -0
  68. package/dist/Search.js.map +1 -1
  69. package/dist/SearchableListBase.d.ts +4 -0
  70. package/dist/SearchableListBase.js +66 -6
  71. package/dist/SearchableListBase.js.map +1 -1
  72. package/dist/SearchableListBaseTemplate.js +1 -1
  73. package/dist/SearchableListBaseTemplate.js.map +1 -1
  74. package/dist/SelectBase.js +14 -22
  75. package/dist/SelectBase.js.map +1 -1
  76. package/dist/SelectBox.js +31 -0
  77. package/dist/SelectBox.js.map +1 -1
  78. package/dist/SelectBoxTemplate.js +3 -2
  79. package/dist/SelectBoxTemplate.js.map +1 -1
  80. package/dist/StatusMessage.d.ts +2 -2
  81. package/dist/StatusMessage.js +1 -1
  82. package/dist/StatusMessage.js.map +1 -1
  83. package/dist/TextAreaTemplate.js +1 -1
  84. package/dist/TextAreaTemplate.js.map +1 -1
  85. package/dist/TextFieldTemplate.js +1 -1
  86. package/dist/TextFieldTemplate.js.map +1 -1
  87. package/dist/Upload.js +6 -9
  88. package/dist/Upload.js.map +1 -1
  89. package/dist/UploadItem.d.ts +2 -2
  90. package/dist/UploadItem.js +6 -9
  91. package/dist/UploadItem.js.map +1 -1
  92. package/dist/UploadItemTemplate.d.ts +2 -0
  93. package/dist/UploadItemTemplate.js +14 -0
  94. package/dist/UploadItemTemplate.js.map +1 -0
  95. package/dist/UploadTemplate.d.ts +2 -0
  96. package/dist/UploadTemplate.js +11 -0
  97. package/dist/UploadTemplate.js.map +1 -0
  98. package/dist/assets/{InputSuggestions-CqOrRXxa.js → InputSuggestions-ChhTxYh4.js} +1 -1
  99. package/dist/assets/{ListItemStandardExpandableTextTemplate-DKUm4L2B.js → ListItemStandardExpandableTextTemplate-Bh1HxZfH.js} +1 -1
  100. package/dist/assets/{bundle-C7Yft7IG.css → bundle-CdO3MnjQ.css} +1 -1
  101. package/dist/assets/{bundle.esm-CI60uvdr.js → bundle.esm-DCX_ohoZ.js} +277 -265
  102. package/dist/assets/messagebundle_en-B0P3kkb6.js +1 -0
  103. package/dist/assets/messagebundle_it-BML2SC0W.js +1 -0
  104. package/dist/assets/messagebundle_ja-zyFfZHcj.js +1 -0
  105. package/dist/assets/messagebundle_ko-BCPaSqNp.js +1 -0
  106. package/dist/assets/messagebundle_lt-DB4b6FVx.js +1 -0
  107. package/dist/assets/messagebundle_lv-tAOia5tU.js +1 -0
  108. package/dist/assets/messagebundle_uk-CCv57GhV.js +1 -0
  109. package/dist/css/themes/AccordionItem.css +1 -1
  110. package/dist/css/themes/AccordionSpotlight.css +1 -1
  111. package/dist/css/themes/Avatar.css +1 -1
  112. package/dist/css/themes/Breadcrumbs.css +1 -1
  113. package/dist/css/themes/BreadcrumbsPopover.css +1 -1
  114. package/dist/css/themes/CountrySelector.css +1 -1
  115. package/dist/css/themes/EventRibbon.css +1 -1
  116. package/dist/css/themes/FilterMenu.css +1 -1
  117. package/dist/css/themes/Footer.css +1 -1
  118. package/dist/css/themes/HeroBanner.css +1 -1
  119. package/dist/css/themes/ImageGridTicker.css +1 -1
  120. package/dist/css/themes/Link.css +1 -1
  121. package/dist/css/themes/ListGroupHeader.css +1 -1
  122. package/dist/css/themes/ListItem.css +1 -1
  123. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  124. package/dist/css/themes/MastheadItem.css +1 -1
  125. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  126. package/dist/css/themes/MastheadShell.css +1 -1
  127. package/dist/css/themes/MediaPlayer.css +1 -1
  128. package/dist/css/themes/Modal.css +1 -1
  129. package/dist/css/themes/PhoneNumberField.css +1 -1
  130. package/dist/css/themes/Search.css +1 -1
  131. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  132. package/dist/css/themes/SelectBase.css +1 -1
  133. package/dist/css/themes/StepInput.css +1 -1
  134. package/dist/css/themes/TabInOverflow.css +1 -1
  135. package/dist/css/themes/TabNavigation.css +1 -1
  136. package/dist/css/themes/TableCellBase.css +1 -1
  137. package/dist/css/themes/TagGroup.css +1 -1
  138. package/dist/css/themes/TextArea.css +1 -1
  139. package/dist/css/themes/TextField.css +1 -1
  140. package/dist/css/themes/Wizard.css +1 -1
  141. package/dist/custom-elements-internal.json +1191 -82
  142. package/dist/custom-elements.json +818 -127
  143. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  149. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  150. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  151. package/dist/generated/i18n/i18n-defaults.js +2 -1
  152. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  153. package/dist/generated/themes/AccordionItem.css.d.ts +1 -1
  154. package/dist/generated/themes/AccordionItem.css.js +1 -1
  155. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  156. package/dist/generated/themes/AccordionSpotlight.css.d.ts +1 -1
  157. package/dist/generated/themes/AccordionSpotlight.css.js +1 -1
  158. package/dist/generated/themes/AccordionSpotlight.css.js.map +1 -1
  159. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  160. package/dist/generated/themes/Avatar.css.js +1 -1
  161. package/dist/generated/themes/Avatar.css.js.map +1 -1
  162. package/dist/generated/themes/Breadcrumbs.css.d.ts +1 -1
  163. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  164. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  165. package/dist/generated/themes/BreadcrumbsPopover.css.d.ts +1 -1
  166. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  167. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  168. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  169. package/dist/generated/themes/CountrySelector.css.js +1 -1
  170. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  171. package/dist/generated/themes/EventRibbon.css.d.ts +1 -1
  172. package/dist/generated/themes/EventRibbon.css.js +1 -1
  173. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  174. package/dist/generated/themes/FilterMenu.css.d.ts +1 -1
  175. package/dist/generated/themes/FilterMenu.css.js +1 -1
  176. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  177. package/dist/generated/themes/Footer.css.d.ts +1 -1
  178. package/dist/generated/themes/Footer.css.js +1 -1
  179. package/dist/generated/themes/Footer.css.js.map +1 -1
  180. package/dist/generated/themes/HeroBanner.css.d.ts +1 -1
  181. package/dist/generated/themes/HeroBanner.css.js +1 -1
  182. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  183. package/dist/generated/themes/ImageGridTicker.css.d.ts +1 -1
  184. package/dist/generated/themes/ImageGridTicker.css.js +1 -1
  185. package/dist/generated/themes/ImageGridTicker.css.js.map +1 -1
  186. package/dist/generated/themes/Link.css.d.ts +1 -1
  187. package/dist/generated/themes/Link.css.js +1 -1
  188. package/dist/generated/themes/Link.css.js.map +1 -1
  189. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  190. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  191. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  192. package/dist/generated/themes/ListItem.css.d.ts +1 -1
  193. package/dist/generated/themes/ListItem.css.js +1 -1
  194. package/dist/generated/themes/ListItem.css.js.map +1 -1
  195. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  196. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  197. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  198. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  199. package/dist/generated/themes/MastheadItem.css.js +1 -1
  200. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  201. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  202. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  203. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  204. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  205. package/dist/generated/themes/MastheadShell.css.js +1 -1
  206. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  207. package/dist/generated/themes/MediaPlayer.css.d.ts +1 -1
  208. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  209. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  210. package/dist/generated/themes/Modal.css.d.ts +1 -1
  211. package/dist/generated/themes/Modal.css.js +1 -1
  212. package/dist/generated/themes/Modal.css.js.map +1 -1
  213. package/dist/generated/themes/PhoneNumberField.css.d.ts +1 -1
  214. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  215. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  216. package/dist/generated/themes/Search.css.d.ts +1 -1
  217. package/dist/generated/themes/Search.css.js +1 -1
  218. package/dist/generated/themes/Search.css.js.map +1 -1
  219. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
  220. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  221. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  222. package/dist/generated/themes/SelectBase.css.d.ts +1 -1
  223. package/dist/generated/themes/SelectBase.css.js +1 -1
  224. package/dist/generated/themes/SelectBase.css.js.map +1 -1
  225. package/dist/generated/themes/StepInput.css.d.ts +1 -1
  226. package/dist/generated/themes/StepInput.css.js +1 -1
  227. package/dist/generated/themes/StepInput.css.js.map +1 -1
  228. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  229. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  230. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  231. package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
  232. package/dist/generated/themes/TabNavigation.css.js +1 -1
  233. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  234. package/dist/generated/themes/TableCellBase.css.d.ts +1 -1
  235. package/dist/generated/themes/TableCellBase.css.js +1 -1
  236. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  237. package/dist/generated/themes/TagGroup.css.d.ts +1 -1
  238. package/dist/generated/themes/TagGroup.css.js +1 -1
  239. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  240. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  241. package/dist/generated/themes/TextArea.css.js +1 -1
  242. package/dist/generated/themes/TextArea.css.js.map +1 -1
  243. package/dist/generated/themes/TextField.css.d.ts +1 -1
  244. package/dist/generated/themes/TextField.css.js +1 -1
  245. package/dist/generated/themes/TextField.css.js.map +1 -1
  246. package/dist/generated/themes/Wizard.css.d.ts +1 -1
  247. package/dist/generated/themes/Wizard.css.js +1 -1
  248. package/dist/generated/themes/Wizard.css.js.map +1 -1
  249. package/dist/messagebundle.properties +1 -0
  250. package/dist/messagebundle_en.properties +1 -0
  251. package/dist/messagebundle_it.properties +123 -0
  252. package/dist/messagebundle_ja.properties +127 -1
  253. package/dist/messagebundle_ko.properties +126 -0
  254. package/dist/messagebundle_lt.properties +126 -0
  255. package/dist/messagebundle_lv.properties +9 -0
  256. package/dist/messagebundle_uk.properties +8 -0
  257. package/dist/types/FooterAskJoulePosition.d.ts +5 -0
  258. package/dist/types/FooterAskJoulePosition.js +7 -0
  259. package/dist/types/FooterAskJoulePosition.js.map +1 -0
  260. package/dist/utils/searchBackdrop.d.ts +1 -0
  261. package/dist/utils/searchBackdrop.js +23 -0
  262. package/dist/utils/searchBackdrop.js.map +1 -0
  263. package/dist/vscode.html-custom-data.json +176 -3
  264. package/dist/web-types.json +396 -8
  265. package/package.json +1 -1
  266. package/src/BreadcrumbsTemplate.tsx +12 -10
  267. package/src/CountrySelectorTemplate.tsx +2 -2
  268. package/src/FilterMenu.ts +11 -7
  269. package/src/Footer.ts +41 -3
  270. package/src/FooterTemplate.tsx +28 -4
  271. package/src/HeroBanner.ts +66 -0
  272. package/src/List.ts +16 -8
  273. package/src/ListGroupHeader.ts +12 -5
  274. package/src/ListGroupHeaderBase.ts +3 -3
  275. package/src/ListGroupHeaderTemplate.tsx +228 -0
  276. package/src/ListItem.ts +10 -5
  277. package/src/ListItemBase.ts +9 -4
  278. package/src/ListItemTemplate.tsx +193 -0
  279. package/src/ListSelectAll.ts +4 -5
  280. package/src/ListSelectAllTemplate.tsx +38 -0
  281. package/src/ListTemplate.tsx +60 -0
  282. package/src/MastheadShell.ts +44 -0
  283. package/src/MediaPlayer.ts +6 -0
  284. package/src/PhoneNumberField.ts +23 -22
  285. package/src/PhoneNumberFieldTemplate.tsx +128 -0
  286. package/src/Search.ts +21 -1
  287. package/src/SearchableListBase.ts +62 -7
  288. package/src/SearchableListBaseTemplate.tsx +1 -0
  289. package/src/SelectBase.ts +14 -21
  290. package/src/SelectBox.ts +34 -0
  291. package/src/SelectBoxTemplate.tsx +3 -1
  292. package/src/StatusMessage.ts +4 -3
  293. package/src/TextAreaTemplate.tsx +1 -1
  294. package/src/TextFieldTemplate.tsx +1 -1
  295. package/src/Upload.ts +7 -10
  296. package/src/UploadItem.ts +7 -9
  297. package/src/UploadItemTemplate.tsx +62 -0
  298. package/src/UploadTemplate.tsx +53 -0
  299. package/src/generated/i18n/i18n-defaults.ts +2 -2
  300. package/src/generated/themes/AccordionItem.css.ts +1 -1
  301. package/src/generated/themes/AccordionSpotlight.css.ts +1 -1
  302. package/src/generated/themes/Avatar.css.ts +1 -1
  303. package/src/generated/themes/Breadcrumbs.css.ts +1 -1
  304. package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
  305. package/src/generated/themes/CountrySelector.css.ts +1 -1
  306. package/src/generated/themes/EventRibbon.css.ts +1 -1
  307. package/src/generated/themes/FilterMenu.css.ts +1 -1
  308. package/src/generated/themes/Footer.css.ts +1 -1
  309. package/src/generated/themes/HeroBanner.css.ts +1 -1
  310. package/src/generated/themes/ImageGridTicker.css.ts +1 -1
  311. package/src/generated/themes/Link.css.ts +1 -1
  312. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  313. package/src/generated/themes/ListItem.css.ts +1 -1
  314. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  315. package/src/generated/themes/MastheadItem.css.ts +1 -1
  316. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  317. package/src/generated/themes/MastheadShell.css.ts +1 -1
  318. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  319. package/src/generated/themes/Modal.css.ts +1 -1
  320. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  321. package/src/generated/themes/Search.css.ts +1 -1
  322. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  323. package/src/generated/themes/SelectBase.css.ts +1 -1
  324. package/src/generated/themes/StepInput.css.ts +1 -1
  325. package/src/generated/themes/TabInOverflow.css.ts +1 -1
  326. package/src/generated/themes/TabNavigation.css.ts +1 -1
  327. package/src/generated/themes/TableCellBase.css.ts +1 -1
  328. package/src/generated/themes/TagGroup.css.ts +1 -1
  329. package/src/generated/themes/TextArea.css.ts +1 -1
  330. package/src/generated/themes/TextField.css.ts +1 -1
  331. package/src/generated/themes/Wizard.css.ts +1 -1
  332. package/src/i18n/messagebundle.properties +1 -0
  333. package/src/i18n/messagebundle_en.properties +1 -0
  334. package/src/i18n/messagebundle_it.properties +123 -0
  335. package/src/i18n/messagebundle_ja.properties +127 -1
  336. package/src/i18n/messagebundle_ko.properties +126 -0
  337. package/src/i18n/messagebundle_lt.properties +126 -0
  338. package/src/i18n/messagebundle_lv.properties +9 -0
  339. package/src/i18n/messagebundle_uk.properties +8 -0
  340. package/src/themes/AccordionItem.css +1 -1
  341. package/src/themes/AccordionSpotlight.css +1 -1
  342. package/src/themes/Avatar.css +1 -1
  343. package/src/themes/Breadcrumbs.css +46 -5
  344. package/src/themes/BreadcrumbsPopover.css +65 -0
  345. package/src/themes/CountrySelector.css +12 -2
  346. package/src/themes/EventRibbon.css +1 -1
  347. package/src/themes/FilterMenu.css +3 -2
  348. package/src/themes/Footer.css +98 -1
  349. package/src/themes/HeroBanner.css +1 -1
  350. package/src/themes/ImageGridTicker.css +1 -1
  351. package/src/themes/Link.css +127 -8
  352. package/src/themes/ListGroupHeader.css +6 -3
  353. package/src/themes/ListItem.css +10 -2
  354. package/src/themes/MastheadCountrySelector.css +1 -1
  355. package/src/themes/MastheadItem.css +1 -1
  356. package/src/themes/MastheadProfileMenu.css +1 -1
  357. package/src/themes/MastheadShell.css +1 -1
  358. package/src/themes/MediaPlayer.css +10 -10
  359. package/src/themes/Modal.css +5 -3
  360. package/src/themes/PhoneNumberField.css +16 -6
  361. package/src/themes/Search.css +9 -9
  362. package/src/themes/SecondaryNavigationItem.css +1 -1
  363. package/src/themes/SelectBase.css +2 -2
  364. package/src/themes/StepInput.css +1 -1
  365. package/src/themes/TabInOverflow.css +2 -2
  366. package/src/themes/TabNavigation.css +7 -7
  367. package/src/themes/TableCellBase.css +1 -1
  368. package/src/themes/TagGroup.css +1 -1
  369. package/src/themes/TextArea.css +1 -1
  370. package/src/themes/TextField.css +1 -1
  371. package/src/themes/Wizard.css +1 -1
  372. package/src/types/FooterAskJoulePosition.ts +6 -0
  373. package/src/utils/searchBackdrop.ts +23 -0
  374. package/dist/assets/messagebundle_en-DoNTK1BE.js +0 -1
  375. package/dist/assets/messagebundle_it-BhrBdOd4.js +0 -1
  376. package/dist/assets/messagebundle_ja-5P5L7sQ1.js +0 -1
  377. package/dist/assets/messagebundle_ko-B9H5YQlC.js +0 -1
  378. package/dist/assets/messagebundle_lt-BJ5gr_LF.js +0 -1
  379. package/dist/assets/messagebundle_lv-D06tlATH.js +0 -1
  380. package/dist/assets/messagebundle_uk-GmdhsMsP.js +0 -1
  381. package/dist/generated/templates/ListGroupHeaderTemplate.lit.d.ts +0 -3
  382. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +0 -30
  383. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +0 -1
  384. package/dist/generated/templates/ListItemTemplate.lit.d.ts +0 -3
  385. package/dist/generated/templates/ListItemTemplate.lit.js +0 -49
  386. package/dist/generated/templates/ListItemTemplate.lit.js.map +0 -1
  387. package/dist/generated/templates/ListSelectAllTemplate.lit.d.ts +0 -3
  388. package/dist/generated/templates/ListSelectAllTemplate.lit.js +0 -7
  389. package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +0 -1
  390. package/dist/generated/templates/ListTemplate.lit.d.ts +0 -3
  391. package/dist/generated/templates/ListTemplate.lit.js +0 -11
  392. package/dist/generated/templates/ListTemplate.lit.js.map +0 -1
  393. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.d.ts +0 -3
  394. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +0 -16
  395. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +0 -1
  396. package/dist/generated/templates/UploadItemTemplate.lit.d.ts +0 -3
  397. package/dist/generated/templates/UploadItemTemplate.lit.js +0 -12
  398. package/dist/generated/templates/UploadItemTemplate.lit.js.map +0 -1
  399. package/dist/generated/templates/UploadTemplate.lit.d.ts +0 -3
  400. package/dist/generated/templates/UploadTemplate.lit.js +0 -10
  401. package/dist/generated/templates/UploadTemplate.lit.js.map +0 -1
  402. package/src/List.hbs +0 -38
  403. package/src/ListGroupHeader.hbs +0 -188
  404. package/src/ListItem.hbs +0 -166
  405. package/src/ListSelectAll.hbs +0 -31
  406. package/src/PhoneNumberField.hbs +0 -119
  407. package/src/Upload.hbs +0 -21
  408. package/src/UploadItem.hbs +0 -32
  409. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +0 -34
  410. package/src/generated/templates/ListItemTemplate.lit.ts +0 -53
  411. package/src/generated/templates/ListSelectAllTemplate.lit.ts +0 -11
  412. package/src/generated/templates/ListTemplate.lit.ts +0 -15
  413. package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +0 -20
  414. package/src/generated/templates/UploadItemTemplate.lit.ts +0 -16
  415. package/src/generated/templates/UploadTemplate.lit.ts +0 -14
@@ -49,6 +49,17 @@ const groupHeaderCollapsible = <div style="width: 350px; position:relative;"><UD
49
49
  </UDExSelectBoxGroupHeader>
50
50
  </UDExSelectBox></div>
51
51
 
52
+ const groupHeaderCollapsibleSingleSelect = (
53
+ <div style="width: 350px; position: relative;">
54
+ <UDExSelectBox id="select-box" label="Countries">
55
+ <UDExSelectBoxGroupHeader id="group-na" label="North America" collapsible>
56
+ <UDExSelectBoxItem label="United States" data-id="us"></UDExSelectBoxItem>
57
+ <UDExSelectBoxItem label="Canada" data-id="ca"></UDExSelectBoxItem>
58
+ </UDExSelectBoxGroupHeader>
59
+ </UDExSelectBox>
60
+ </div>
61
+ );
62
+
52
63
  const multiSelect = <div style="width: 350px; position:relative;">
53
64
  <a id="previous-focus" href="#">Previous focusable element</a>
54
65
  <UDExSelectBox
@@ -2483,6 +2494,105 @@ describe("SelectBox", () => {
2483
2494
  .invoke("prop", "scrollTop")
2484
2495
  .should("be.greaterThan", 0);
2485
2496
  });
2497
+
2498
+ const singleSelectCollapsibleGroupScrollFixture = <div style="width: 350px; position:relative;">
2499
+ <UDExSelectBox id="select-box" height="200px" label="Languages">
2500
+ <UDExSelectBoxGroupHeader label="Backend Languages" collapsible>
2501
+ <UDExSelectBoxItem label="Java"></UDExSelectBoxItem>
2502
+ <UDExSelectBoxItem label="Python"></UDExSelectBoxItem>
2503
+ <UDExSelectBoxItem label="Go"></UDExSelectBoxItem>
2504
+ <UDExSelectBoxItem label="Ruby"></UDExSelectBoxItem>
2505
+ <UDExSelectBoxItem label="Rust"></UDExSelectBoxItem>
2506
+ <UDExSelectBoxItem label="Node.js" selected></UDExSelectBoxItem>
2507
+ </UDExSelectBoxGroupHeader>
2508
+ <UDExSelectBoxGroupHeader label="Frontend Languages" collapsible>
2509
+ <UDExSelectBoxItem label="JavaScript"></UDExSelectBoxItem>
2510
+ <UDExSelectBoxItem label="TypeScript"></UDExSelectBoxItem>
2511
+ </UDExSelectBoxGroupHeader>
2512
+ </UDExSelectBox>
2513
+ </div>;
2514
+
2515
+ it("SingleSelect mode with collapsible group - selected item is scrolled into view after reopening the dropdown", () => {
2516
+ cy.mount(singleSelectCollapsibleGroupScrollFixture);
2517
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").as("trigger");
2518
+
2519
+ cy.get("@trigger").click();
2520
+ cy.get("#select-box").shadow().find(".udex-select-box__dropdown").should("have.attr", "open");
2521
+ cy.get("@trigger").click();
2522
+ cy.get("#select-box").shadow().find(".udex-select-box__dropdown").should("not.have.attr", "open");
2523
+ cy.get("@trigger").click();
2524
+ cy.get("#select-box").shadow().find(".udex-select-box__dropdown").should("have.attr", "open");
2525
+
2526
+ cy.get("#select-box").shadow()
2527
+ .find("ui5-popover").shadow()
2528
+ .find("[part=content]")
2529
+ .invoke("prop", "scrollTop")
2530
+ .should("be.greaterThan", 0);
2531
+ });
2532
+
2533
+ const collapsedGroupWithSelectionFixture = <div style="width: 350px; position:relative;">
2534
+ <UDExSelectBox id="select-box" height="200px" label="Languages">
2535
+ <UDExSelectBoxGroupHeader label="Backend Languages" collapsible collapsed>
2536
+ <UDExSelectBoxItem label="Java"></UDExSelectBoxItem>
2537
+ <UDExSelectBoxItem label="Python"></UDExSelectBoxItem>
2538
+ <UDExSelectBoxItem label="Node.js" selected></UDExSelectBoxItem>
2539
+ </UDExSelectBoxGroupHeader>
2540
+ <UDExSelectBoxGroupHeader label="Frontend Languages" collapsible>
2541
+ <UDExSelectBoxItem label="JavaScript"></UDExSelectBoxItem>
2542
+ <UDExSelectBoxItem label="TypeScript"></UDExSelectBoxItem>
2543
+ </UDExSelectBoxGroupHeader>
2544
+ </UDExSelectBox>
2545
+ </div>;
2546
+
2547
+ it("SingleSelect mode - collapsed group containing selected item is auto-expanded on dropdown open", () => {
2548
+ cy.mount(collapsedGroupWithSelectionFixture);
2549
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
2550
+
2551
+ cy.get("#select-box").shadow()
2552
+ .find(".udex-select-box__dropdown")
2553
+ .should("have.attr", "open");
2554
+
2555
+ // The group that contains the selected item must be expanded (collapsed attribute removed).
2556
+ cy.get("[udex-select-box-group-header]").filter("[label='Backend Languages']")
2557
+ .should("not.have.attr", "collapsed");
2558
+
2559
+ // The rendered group header in the shadow DOM must also reflect the expanded state.
2560
+ cy.get("#select-box").shadow()
2561
+ .find("[udex-list-group-header]")
2562
+ .first()
2563
+ .should("not.have.attr", "collapsed");
2564
+ });
2565
+
2566
+ it("SingleSelect mode - manually collapsed group with selected item re-expands on next dropdown open", () => {
2567
+ cy.mount(collapsedGroupWithSelectionFixture);
2568
+
2569
+ // First open: group auto-expands.
2570
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
2571
+ cy.get("#select-box").shadow().find(".udex-select-box__dropdown").should("have.attr", "open");
2572
+ cy.get("#select-box").shadow().find("[udex-list-group-header]").first().should("not.have.attr", "collapsed");
2573
+
2574
+ // Simulate user manually collapsing the group:
2575
+ // - Set collapsed on the original item so _expandCollapsedGroupsWithSelection detects it.
2576
+ // - Also set it on the rendered element in case the template re-render is async.
2577
+ cy.get("[udex-select-box-group-header]").filter("[label='Backend Languages']")
2578
+ .invoke("prop", "collapsed", true);
2579
+ cy.get("#select-box").shadow()
2580
+ .find("[udex-list-group-header]").first()
2581
+ .invoke("prop", "collapsed", true);
2582
+ cy.get("#select-box").shadow().find("[udex-list-group-header]").first().should("have.attr", "collapsed");
2583
+
2584
+ // Close the dropdown.
2585
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
2586
+ cy.get("#select-box").shadow().find(".udex-select-box__dropdown").should("not.have.attr", "open");
2587
+
2588
+ // Reopen: the group must be auto-expanded again.
2589
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
2590
+ cy.get("#select-box").shadow().find(".udex-select-box__dropdown").should("have.attr", "open");
2591
+ cy.get("#select-box").shadow()
2592
+ .find("[udex-list-group-header]")
2593
+ .first()
2594
+ .should("not.have.attr", "collapsed");
2595
+ });
2486
2596
  });
2487
2597
 
2488
2598
  // Tree accessibility pattern: SelectBox uses tree pattern when group headers are present.
@@ -2834,4 +2944,67 @@ describe("SelectBox", () => {
2834
2944
  .should("have.attr", "aria-required", "true");
2835
2945
  });
2836
2946
  });
2947
+
2948
+ // When focus lands on the body div of a collapsible single-select group header
2949
+ // (tabindex="0"), SelectBox.handleInputFocusOut detects it — either by the
2950
+ // udex-list__group-content class on the raw body div, or by checking isGroup +
2951
+ // collapsible + !modeMultiSelect on the shadow-DOM-retargeted HOST element —
2952
+ // sets the group header as the active descendant, and redirects DOM focus back
2953
+ // to the search input.
2954
+ describe("Select Box collapsible single-select group header click", () => {
2955
+ it("clicking the body of a collapsible single-select group header returns DOM focus to the search input", () => {
2956
+ cy.mount(groupHeaderCollapsibleSingleSelect);
2957
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
2958
+
2959
+ cy.get("#select-box").shadow()
2960
+ .find(".udex-select-box__dropdown")
2961
+ .should("have.attr", "open");
2962
+
2963
+ // realClick fires native browser events so the body div receives real focus,
2964
+ // triggering the focusout on the search input with a valid relatedTarget.
2965
+ // Click left side to avoid the collapse icon on the right.
2966
+ cy.get("#select-box").shadow()
2967
+ .find("[udex-list-group-header]")
2968
+ .shadow()
2969
+ .find("div[part='group-item'].udex-list__group-content")
2970
+ .realClick({ position: "left" });
2971
+
2972
+ // handleInputFocusOut detects the group header HOST (via isGroup + collapsible +
2973
+ // !modeMultiSelect after shadow DOM retargeting) and calls _search.focus().
2974
+ cy.get("#select-box").shadow()
2975
+ .find(".udex-text-field__search")
2976
+ .should("be.focused");
2977
+ });
2978
+
2979
+ it("clicking the body returns focus after click and arrow navigation uses the group header as starting point", () => {
2980
+ cy.mount(groupHeaderCollapsibleSingleSelect);
2981
+ cy.get("#select-box").shadow().find(".udex-text-field__trigger").click();
2982
+
2983
+ cy.get("#select-box").shadow()
2984
+ .find(".udex-select-box__dropdown")
2985
+ .should("have.attr", "open");
2986
+
2987
+ // realClick fires native browser events so the body div receives real focus,
2988
+ // triggering the focusout on the search input with a valid relatedTarget.
2989
+ // Click left side to avoid the collapse icon on the right.
2990
+ cy.get("#select-box").shadow()
2991
+ .find("[udex-list-group-header]")
2992
+ .shadow()
2993
+ .find("div[part='group-item'].udex-list__group-content")
2994
+ .realClick({ position: "left" });
2995
+
2996
+ cy.get("#select-box").shadow()
2997
+ .find(".udex-text-field__search")
2998
+ .should("be.focused");
2999
+
3000
+ // ArrowDown (via onKeyDownSearch) advances from the group header active
3001
+ // descendant to the FIRST list item (United States) — not back to item 0 /
3002
+ // the group header — confirming _activeDescendantItem was the group header.
3003
+ cy.realPress("ArrowDown");
3004
+
3005
+ cy.get("#select-box").shadow()
3006
+ .find("udex-list-item").eq(0)
3007
+ .should("have.class", "_udex-active-descendant");
3008
+ });
3009
+ });
2837
3010
  });
@@ -5,6 +5,6 @@ import slimArrowDown from "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
5
5
  import BreadcrumbsPopoverTemplate from "./BreadcrumbsPopoverTemplate.js";
6
6
  export default function BreadcrumbsTemplate() {
7
7
  const rootClass = "udex-breadcrumbs";
8
- return (_jsxs(_Fragment, { children: [_jsx("nav", { class: `${this._rootClass} ui5-breadcrumbs-root`, "aria-label": this._breadcrumbsAccessibleNameText, children: _jsxs("ol", { children: [_jsx("li", { class: `${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`, children: _jsx(UDExLink, { id: `udex-${this._id}-breadcrumbs__opener`, class: `${this._rootClass}__trigger ${this._triggerClass}`, onClick: this._toggleDropdown, accessibleName: this._dropdownArrowAccessibleNameText, accessibleRole: UDExButtonAccessibleRole.Button, accessibilityAttributes: this._triggerAccessibilityAttributes, icon: slimArrowDown }) }), this._linksData.map(linkData => (linkData._isCurrentPageItem && !this.showCurrentPage ? null : (_jsx("li", { role: linkData._isCurrentPageItem ? "presentation" : undefined, class: `${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`, id: `${linkData._id}-link-wrapper`, children: linkData._isCurrentPageItem ? (_jsxs(_Fragment, { children: [_jsx("span", { className: `${this._rootClass}__separator` }), _jsx("span", { id: `${linkData._id}-link`, class: `${rootClass}__item ${this._rootClass}__item--visible ${this._rootClass}__item--current-page`, "aria-current": "page", "data-ui5-stable": linkData.stableDomRef, children: linkData.textContent })] })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: `${this._rootClass}__separator`, "aria-hidden": "true" }), _jsx(UDExLink, { onClick: this._onLinkPress, id: `${linkData._id}-link`, class: `${rootClass}__item ${this._rootClass}__item--visible`, href: linkData.href, target: linkData.target, accessibleName: linkData._accessibleNameText, "data-ui5-stable": linkData.stableDomRef, children: linkData.textContent })] })) }))))] }) }), BreadcrumbsPopoverTemplate.call(this)] }));
8
+ return (_jsxs(_Fragment, { children: [_jsx("nav", { class: `${this._rootClass} ui5-breadcrumbs-root`, "aria-label": this._breadcrumbsAccessibleNameText, children: _jsxs("ol", { children: [_jsx("li", { class: `${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`, children: _jsx(UDExLink, { id: `udex-${this._id}-breadcrumbs__opener`, class: `${this._rootClass}__trigger ${this._triggerClass}`, onClick: this._toggleDropdown, accessibleName: this._dropdownArrowAccessibleNameText, accessibleRole: UDExButtonAccessibleRole.Button, accessibilityAttributes: this._triggerAccessibilityAttributes, icon: slimArrowDown }) }), this._linksData.map(linkData => (linkData._isCurrentPageItem && !this.showCurrentPage ? null : (_jsx("li", { role: linkData._isCurrentPageItem ? "presentation" : undefined, class: `${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`, id: `${linkData._id}-link-wrapper`, children: linkData._isCurrentPageItem ? (_jsxs(_Fragment, { children: [_jsx("span", { className: `${this._rootClass}__separator` }), _jsx("span", { id: `${linkData._id}-link`, class: `${rootClass}__item ${this._rootClass}__item--visible ${this._rootClass}__item--current-page`, "aria-current": "page", "data-ui5-stable": linkData.stableDomRef, children: linkData.textContent })] })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: `${this._rootClass}__separator`, "aria-hidden": "true" }), _jsx("span", { class: `${this._rootClass}__link-wrap`, children: _jsx(UDExLink, { onClick: this._onLinkPress, id: `${linkData._id}-link`, class: `${rootClass}__item ${this._rootClass}__item--visible`, href: linkData.href, target: linkData.target, accessibleName: linkData._accessibleNameText, "data-ui5-stable": linkData.stableDomRef, children: linkData.textContent }) })] })) }))))] }) }), BreadcrumbsPopoverTemplate.call(this)] }));
9
9
  }
10
10
  //# sourceMappingURL=BreadcrumbsTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbsTemplate.js","sourceRoot":"","sources":["../src/BreadcrumbsTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,wBAAwB,MAAM,iCAAiC,CAAC;AACvE,OAAO,aAAa,MAAM,kDAAkD,CAAC;AAC7E,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,OAAO,CACL,8BACE,cACE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,uBAAuB,gBACpC,IAAI,CAAC,8BAA8B,YAC/C,yBACE,aAAI,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6DAA6D,YACxF,KAAC,QAAQ,IACP,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,sBAAsB,EAC1C,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,aAAa,EAAE,EAC1D,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,cAAc,EAAE,IAAI,CAAC,gCAAgC,EACrD,cAAc,EAAE,wBAAwB,CAAC,MAAM,EAC/C,uBAAuB,EAAE,IAAI,CAAC,+BAA+B,EAC7D,IAAI,EAAE,aAAa,GACV,GACR,EACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC9B,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7D,aACE,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAC9D,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6CAA6C,EACtE,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,eAAe,YACjC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC7B,8BACE,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,GAAS,EACzD,eACE,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,EAC1B,KAAK,EAAE,GAAG,SAAS,UAAU,IAAI,CAAC,UAAU,mBAAmB,IAAI,CAAC,UAAU,sBAAsB,kBACvF,MAAM,qBACF,QAAQ,CAAC,YAAY,YACrC,QAAQ,CAAC,WAAW,GAChB,IACN,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,iBAAc,MAAM,GAAQ,EAC5E,KAAC,QAAQ,IACP,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,EAC1B,KAAK,EAAE,GAAG,SAAS,UAAU,IAAI,CAAC,UAAU,iBAAiB,EAC7D,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,cAAc,EAAE,QAAQ,CAAC,mBAAmB,qBAC3B,QAAQ,CAAC,YAAY,YACrC,QAAQ,CAAC,WAAW,GACZ,IACV,CACJ,GACE,CACN,CAAC,CACH,IACE,GACD,EACL,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IACrC,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import type Breadcrumbs from \"./Breadcrumbs.js\";\nimport UDExLink from \"./Link.js\";\nimport UDExButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport slimArrowDown from \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport BreadcrumbsPopoverTemplate from \"./BreadcrumbsPopoverTemplate.js\";\n\nexport default function BreadcrumbsTemplate(this: Breadcrumbs) {\n const rootClass = \"udex-breadcrumbs\";\n\n return (\n <>\n <nav\n class={`${this._rootClass} ui5-breadcrumbs-root`}\n aria-label={this._breadcrumbsAccessibleNameText}>\n <ol>\n <li class={`${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`}>\n <UDExLink\n id={`udex-${this._id}-breadcrumbs__opener`}\n class={`${this._rootClass}__trigger ${this._triggerClass}`}\n onClick={this._toggleDropdown}\n accessibleName={this._dropdownArrowAccessibleNameText}\n accessibleRole={UDExButtonAccessibleRole.Button}\n accessibilityAttributes={this._triggerAccessibilityAttributes}\n icon={slimArrowDown}>\n </UDExLink>\n </li>\n {this._linksData.map(linkData =>\n (linkData._isCurrentPageItem && !this.showCurrentPage ? null : (\n <li\n role={linkData._isCurrentPageItem ? \"presentation\" : undefined}\n class={`${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`}\n id={`${linkData._id}-link-wrapper`}>\n {linkData._isCurrentPageItem ? (\n <>\n <span className={`${this._rootClass}__separator`}></span>\n <span\n id={`${linkData._id}-link`}\n class={`${rootClass}__item ${this._rootClass}__item--visible ${this._rootClass}__item--current-page`}\n aria-current=\"page\"\n data-ui5-stable={linkData.stableDomRef}>\n {linkData.textContent}\n </span>\n </>\n ) : (\n <>\n <span className={`${this._rootClass}__separator`} aria-hidden=\"true\"></span>\n <UDExLink\n onClick={this._onLinkPress}\n id={`${linkData._id}-link`}\n class={`${rootClass}__item ${this._rootClass}__item--visible`}\n href={linkData.href}\n target={linkData.target}\n accessibleName={linkData._accessibleNameText}\n data-ui5-stable={linkData.stableDomRef}>\n {linkData.textContent}\n </UDExLink>\n </>\n )}\n </li>\n ))\n )}\n </ol>\n </nav>\n {BreadcrumbsPopoverTemplate.call(this)}\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"BreadcrumbsTemplate.js","sourceRoot":"","sources":["../src/BreadcrumbsTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,wBAAwB,MAAM,iCAAiC,CAAC;AACvE,OAAO,aAAa,MAAM,kDAAkD,CAAC;AAC7E,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,OAAO,CACL,8BACE,cACE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,uBAAuB,gBACpC,IAAI,CAAC,8BAA8B,YAC/C,yBACE,aAAI,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6DAA6D,YACxF,KAAC,QAAQ,IACP,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,sBAAsB,EAC1C,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,aAAa,EAAE,EAC1D,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,cAAc,EAAE,IAAI,CAAC,gCAAgC,EACrD,cAAc,EAAE,wBAAwB,CAAC,MAAM,EAC/C,uBAAuB,EAAE,IAAI,CAAC,+BAA+B,EAC7D,IAAI,EAAE,aAAa,GACV,GACR,EACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC9B,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7D,aACE,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAC9D,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6CAA6C,EACtE,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,eAAe,YACjC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC7B,8BACE,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,GAAS,EACzD,eACE,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,EAC1B,KAAK,EAAE,GAAG,SAAS,UAAU,IAAI,CAAC,UAAU,mBAAmB,IAAI,CAAC,UAAU,sBAAsB,kBACvF,MAAM,qBACF,QAAQ,CAAC,YAAY,YACrC,QAAQ,CAAC,WAAW,GAChB,IACN,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,iBAAc,MAAM,GAAQ,EAC5E,eAAM,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,YAC1C,KAAC,QAAQ,IACP,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,EAC1B,KAAK,EAAE,GAAG,SAAS,UAAU,IAAI,CAAC,UAAU,iBAAiB,EAC7D,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,cAAc,EAAE,QAAQ,CAAC,mBAAmB,qBAC3B,QAAQ,CAAC,YAAY,YACrC,QAAQ,CAAC,WAAW,GACZ,GACN,IACN,CACJ,GACE,CACN,CAAC,CACH,IACE,GACD,EACL,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IACrC,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import type Breadcrumbs from \"./Breadcrumbs.js\";\nimport UDExLink from \"./Link.js\";\nimport UDExButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport slimArrowDown from \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport BreadcrumbsPopoverTemplate from \"./BreadcrumbsPopoverTemplate.js\";\n\nexport default function BreadcrumbsTemplate(this: Breadcrumbs) {\n const rootClass = \"udex-breadcrumbs\";\n\n return (\n <>\n <nav\n class={`${this._rootClass} ui5-breadcrumbs-root`}\n aria-label={this._breadcrumbsAccessibleNameText}>\n <ol>\n <li class={`${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`}>\n <UDExLink\n id={`udex-${this._id}-breadcrumbs__opener`}\n class={`${this._rootClass}__trigger ${this._triggerClass}`}\n onClick={this._toggleDropdown}\n accessibleName={this._dropdownArrowAccessibleNameText}\n accessibleRole={UDExButtonAccessibleRole.Button}\n accessibilityAttributes={this._triggerAccessibilityAttributes}\n icon={slimArrowDown}>\n </UDExLink>\n </li>\n {this._linksData.map(linkData =>\n (linkData._isCurrentPageItem && !this.showCurrentPage ? null : (\n <li\n role={linkData._isCurrentPageItem ? \"presentation\" : undefined}\n class={`${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`}\n id={`${linkData._id}-link-wrapper`}>\n {linkData._isCurrentPageItem ? (\n <>\n <span className={`${this._rootClass}__separator`}></span>\n <span\n id={`${linkData._id}-link`}\n class={`${rootClass}__item ${this._rootClass}__item--visible ${this._rootClass}__item--current-page`}\n aria-current=\"page\"\n data-ui5-stable={linkData.stableDomRef}>\n {linkData.textContent}\n </span>\n </>\n ) : (\n <>\n <span className={`${this._rootClass}__separator`} aria-hidden=\"true\"></span>\n <span class={`${this._rootClass}__link-wrap`}>\n <UDExLink\n onClick={this._onLinkPress}\n id={`${linkData._id}-link`}\n class={`${rootClass}__item ${this._rootClass}__item--visible`}\n href={linkData.href}\n target={linkData.target}\n accessibleName={linkData._accessibleNameText}\n data-ui5-stable={linkData.stableDomRef}>\n {linkData.textContent}\n </UDExLink>\n </span>\n </>\n )}\n </li>\n ))\n )}\n </ol>\n </nav>\n {BreadcrumbsPopoverTemplate.call(this)}\n </>\n );\n}\n"]}
@@ -3,6 +3,6 @@ export default function CountrySelectorTemplate() {
3
3
  if (this.hideFlagImages) {
4
4
  return _jsx(_Fragment, {});
5
5
  }
6
- return (_jsx("img", { class: "udex-text-field__image", "aria-label": this.flagAriaLabel, style: `background-position-x: ${this.selectedCountryFlagX}; background-position-y: ${this.selectedCountryFlagY}` }));
6
+ return (_jsx("span", { class: "udex-text-field__image", "aria-label": this.flagAriaLabel, style: `background-position-x: ${this.selectedCountryFlagX}; background-position-y: ${this.selectedCountryFlagY}` }));
7
7
  }
8
8
  //# sourceMappingURL=CountrySelectorTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CountrySelectorTemplate.js","sourceRoot":"","sources":["../src/CountrySelectorTemplate.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,uBAAuB;IAC7C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAAC,OAAO,mBAAK,CAAC;IAAC,CAAC;IAC1C,OAAO,CACL,cACE,KAAK,EAAC,wBAAwB,gBAClB,IAAI,CAAC,aAAa,EAC9B,KAAK,EAAE,0BAA0B,IAAI,CAAC,oBAAoB,4BAA4B,IAAI,CAAC,oBAAoB,EAAE,GAC7G,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type UDExCountrySelector from \"./CountrySelector.js\";\n\nexport default function CountrySelectorTemplate(this: UDExCountrySelector) {\n if (this.hideFlagImages) { return <></>; }\n return (\n <img\n class=\"udex-text-field__image\"\n aria-label={this.flagAriaLabel}\n style={`background-position-x: ${this.selectedCountryFlagX}; background-position-y: ${this.selectedCountryFlagY}`}>\n </img>\n );\n}\n"]}
1
+ {"version":3,"file":"CountrySelectorTemplate.js","sourceRoot":"","sources":["../src/CountrySelectorTemplate.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,uBAAuB;IAC7C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAAC,OAAO,mBAAK,CAAC;IAAC,CAAC;IAC1C,OAAO,CACL,eACE,KAAK,EAAC,wBAAwB,gBAClB,IAAI,CAAC,aAAa,EAC9B,KAAK,EAAE,0BAA0B,IAAI,CAAC,oBAAoB,4BAA4B,IAAI,CAAC,oBAAoB,EAAE,GAC5G,CACR,CAAC;AACJ,CAAC","sourcesContent":["import type UDExCountrySelector from \"./CountrySelector.js\";\n\nexport default function CountrySelectorTemplate(this: UDExCountrySelector) {\n if (this.hideFlagImages) { return <></>; }\n return (\n <span\n class=\"udex-text-field__image\"\n aria-label={this.flagAriaLabel}\n style={`background-position-x: ${this.selectedCountryFlagX}; background-position-y: ${this.selectedCountryFlagY}`}>\n </span>\n );\n}\n"]}
@@ -162,7 +162,7 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
162
162
  accessibleNameRef: string;
163
163
  /**
164
164
  * Allows setting a custom role.
165
- * @default "Dialog"
165
+ * @default "None"
166
166
  * @public
167
167
  */
168
168
  accessibleRole: `${PopupAccessibleRole}`;
@@ -11,6 +11,7 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
11
11
  import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
12
12
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
13
13
  import { isTabPrevious, isTabNext, isEscape, isSpace, isEnter, } from "@ui5/webcomponents-base/dist/Keys.js";
14
+ import { renderFinished } from "@ui5/webcomponents-base/dist/Render.js";
14
15
  import PopupAccessibleRole from "@ui5/webcomponents/dist/types/PopupAccessibleRole.js";
15
16
  import Popover from "@ui5/webcomponents/dist/Popover.js";
16
17
  import UDExBusyIndicator from "./BusyIndicator.js";
@@ -114,10 +115,10 @@ let UDExFilterMenu = UDExFilterMenu_1 = class UDExFilterMenu extends UDExSearcha
114
115
  this.hideResetBtn = false;
115
116
  /**
116
117
  * Allows setting a custom role.
117
- * @default "Dialog"
118
+ * @default "None"
118
119
  * @public
119
120
  */
120
- this.accessibleRole = PopupAccessibleRole.Dialog;
121
+ this.accessibleRole = PopupAccessibleRole.None;
121
122
  /**
122
123
  * Allows setting a custom role for dropdown trigger.
123
124
  * @default "button"
@@ -206,14 +207,14 @@ let UDExFilterMenu = UDExFilterMenu_1 = class UDExFilterMenu extends UDExSearcha
206
207
  }
207
208
  handleKeyDownResultBtn(e) {
208
209
  e.stopPropagation();
209
- if (isTabNext(e) && !this.hasResetBtn) {
210
- this.onDropdownClose();
210
+ if (isEscape(e) || (isTabNext(e) && !this.hasResetBtn)) {
211
+ this.onDropdownClose(e);
211
212
  }
212
213
  }
213
214
  handleKeyDownResetBtn(e) {
214
215
  e.stopPropagation();
215
- if (isTabNext(e)) {
216
- this.onDropdownClose();
216
+ if (isEscape(e) || isTabNext(e)) {
217
+ this.onDropdownClose(e);
217
218
  }
218
219
  }
219
220
  handleTriggerClick() {
@@ -269,7 +270,10 @@ let UDExFilterMenu = UDExFilterMenu_1 = class UDExFilterMenu extends UDExSearcha
269
270
  if (this.modeSingleSelect && !this._search) {
270
271
  this.activeItem?.focus();
271
272
  }
272
- this._handleDropdownScroll();
273
+ this._expandCollapsedGroupsWithSelection();
274
+ renderFinished().then(() => {
275
+ this._handleDropdownScroll();
276
+ }).catch(() => { });
273
277
  this.fireDecoratorEvent("after-open");
274
278
  }
275
279
  _focusFirstInteractiveElement() {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterMenu.js","sourceRoot":"","sources":["../src/FilterMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n isTabPrevious, isTabNext, isEscape, isSpace, isEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport PopupAccessibleRole from \"@ui5/webcomponents/dist/types/PopupAccessibleRole.js\";\nimport Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport UDExBusyIndicator from \"./BusyIndicator.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport IllustratedMessage from \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";\nimport \"@ui5/webcomponents-fiori/dist/illustrations/NoSearchResults.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExFilterMenuItem from \"./FilterMenuItem.js\";\nimport UDExFilterMenuGroupHeader from \"./FilterMenuGroupHeader.js\";\nimport type { UDExSearchKeydownEventDetail } from \"./Search.js\";\nimport UDExSearch from \"./Search.js\";\nimport UDExButton from \"./Button.js\";\nimport type { UDExSearchableListBaseEvents } from \"./SearchableListBase.js\";\nimport UDExSearchableListBase from \"./SearchableListBase.js\";\nimport { UDExPopoverPart } from \"./types/SearchableListBase.js\";\nimport { Placement, HorizontalAlign } from \"./types/Dropdown.js\";\nimport { UDExListMode } from \"./types/List.js\";\nimport UDExFilterMenuSelectAll from \"./FilterMenuSelectAll.js\";\nimport UDExListSelectAll from \"./ListSelectAll.js\";\nimport UDExBadge from \"./Badge.js\";\nimport type UDExListItemBase from \"./ListItemBase.js\";\nimport { RESET, SHOW_RESULTS, SELECT_OPTIONS } from \"./generated/i18n/i18n-defaults.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport FilterMenuTemplate from \"./FilterMenuTemplate.js\";\nimport SearchableListBaseTemplate from \"./SearchableListBaseTemplate.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport FilterMenuCss from \"./generated/themes/FilterMenu.css.js\";\nimport SearchableListCss from \"./generated/themes/SearchableList.css.js\";\nimport getEffectiveScrollbarStyle from \"./utils/getEffectiveScrollbarStyle.js\";\n\nexport type initialItemState = {\n id: string,\n selected: boolean,\n indeterminate?: boolean,\n collapsed?: boolean,\n _filtered?: boolean,\n}\n\ntype UDExFilterMenuResultClickEventDetail = {\n selectedItems: Array<UDExListItemBase>,\n}\n\ntype UDExFilterMenuResetClickEventDetail = {\n restoredItems: Array<UDExListItemBase>,\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-filter-menu</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/UDExFilterMenu.js\";</code>\n *\n * @constructor\n * @extends UDExSearchableListBase\n * @tagname udex-filter-menu\n * @public\n */\n@customElement({\n tag: \"udex-filter-menu\",\n renderer: jsxRenderer,\n styles: [FilterMenuCss, SearchableListCss, getEffectiveScrollbarStyle()],\n template: FilterMenuTemplate,\n dependencies: [\n IllustratedMessage,\n Popover,\n Icon,\n UDExBusyIndicator,\n UDExFilterMenuItem,\n UDExFilterMenuGroupHeader,\n UDExFilterMenuSelectAll,\n UDExList,\n UDExListSelectAll,\n UDExListItem,\n UDExListGroupHeader,\n UDExBadge,\n UDExSearch,\n UDExButton,\n ],\n})\n\n/**\n * Fired event when the user click on a reset button on the footer.\n *\n * @public\n * @param {Array<UDExListItemBase>} restoredItems\n */\n@event(\"reset-click\", { bubbles: true })\n\n/**\n * Fired event when the user click on a result button on the footer.\n *\n * @public\n * @param {Array<UDExListItemBase>} selectedItems\n */\n@event(\"result-click\", { bubbles: true })\n\n/**\n * Fired event when the user click on Select All header item.\n *\n * @public\n */\n@event(\"select-all\", { bubbles: true })\n\n/**\n * Fired before the dropdown pane is opened.\n *\n * @public\n */\n@event(\"before-open\", { bubbles: true })\n\n/**\n * Fired after the dropdown pane is opened.\n *\n * @public\n */\n@event(\"after-open\", { bubbles: true })\n\n/**\n * Fired before the dropdown pane is closed.\n *\n * @public\n */\n@event(\"before-close\", { bubbles: true })\n\n/**\n * Fired after the dropdown pane is closed.\n *\n * @public\n */\n@event(\"after-close\", { bubbles: true })\n\nclass UDExFilterMenu extends UDExSearchableListBase {\n eventDetails!: {\n \"result-click\": UDExFilterMenuResultClickEventDetail,\n \"reset-click\": UDExFilterMenuResetClickEventDetail,\n \"before-open\": void,\n \"after-open\": void,\n \"before-close\": void,\n \"after-close\": void,\n } & UDExSearchableListBaseEvents;\n /**\n * Determines the value of the badge.\n *\n * @public\n */\n @property({ type: Number })\n badgeValue?: number;\n\n /**\n * Determines if there is no enough space, the component can be placed\n * over the target.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disableTargetOverlap?: boolean;\n\n /**\n * Determines on which side the component is placed at.\n *\n * @default \"Bottom\"\n * @public\n */\n @property()\n placement: `${Placement}` = Placement.Bottom;\n\n /**\n * Determines the horizontal alignment of the component.\n *\n * @default \"Left\"\n * @public\n */\n @property()\n horizontalAlign: `${HorizontalAlign}` = HorizontalAlign.Start;\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 label of the button reset in the footer.\n *\n * @default \"Reset\"\n * @public\n */\n @property()\n resetBtnLabel?: string;\n\n /**\n * Defines the label of the button result in the footer.\n *\n * @default \"Show Result\"\n * @public\n */\n @property()\n resultBtnLabel?: string;\n\n /**\n * Defines the filter name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n filterName!: string;\n\n /**\n * Defines the filter name prefix of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n filterNamePrefix!: string;\n\n /**\n * Defines whether the component is in disabled state.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled: boolean = false;\n\n /**\n * Defines whether the dropdown is open or not.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _open: boolean = false;\n\n /**\n * Hides the result button in the footer.\n *\n * @type {boolean}\n * @default false\n * @public\n */\n @property({ type: Boolean })\n hideResultBtn: boolean = false;\n\n /**\n * Hides the reset button in the footer.\n *\n * @type {boolean}\n * @default false\n * @public\n */\n @property({ type: Boolean })\n hideResetBtn: boolean = false;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default undefined\n * @public\n */\n @property()\n accessibleName?: string;\n\n /**\n * Defines id (or many ids) of the elements that contain the ARIA name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n accessibleNameRef!: string;\n /**\n * Allows setting a custom role.\n * @default \"Dialog\"\n * @public\n */\n @property()\n accessibleRole: `${PopupAccessibleRole}` = PopupAccessibleRole.Dialog;\n\n /**\n * Allows setting a custom role for dropdown trigger.\n * @default \"button\"\n * @public\n */\n @property({ type: String })\n triggerAccessibleRole: string = \"button\";\n\n /**\n * Determines whether the filter should be applied.\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _shouldApplyFilter: boolean = false;\n\n /**\n * Determines whether the component should be re-rendered.\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n _trigger!: UDExButton;\n _search!: UDExSearch | HTMLInputElement;\n _popover!: Popover;\n _breakpointSizeXS = 640;\n _initialState: Array<initialItemState> = [];\n _list!: UDExList;\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onBeforeRendering() {\n super.onBeforeRendering();\n }\n\n onAfterRendering() {\n this._search = this.getSearch();\n this._popover = this.getPopover();\n this._trigger = this.getTriggerButton();\n this._list = this.getList();\n }\n\n handleSelectAll(e:CustomEvent): void {\n this.onSelectAllHeaderPress(e);\n }\n\n handleItemPress(e:CustomEvent): void {\n this.onItemPress(e);\n\n if (this.modeSingleSelect) {\n this.onDropdownClose();\n }\n }\n\n handleHeaderPress(e:CustomEvent): void {\n this.onHeaderPress(e);\n }\n\n handleValueSearch(e:CustomEvent<{ value: string }>): void {\n this.onSearch(e.detail.value);\n }\n\n handleSubmitSearch(): void {\n this.onDropdownClose();\n this.onSubmitSearch();\n }\n\n handleResetSearch(): void {\n this.onResetSearch();\n }\n\n handleReset(): void {\n this.onDropdownClose();\n this.fireDecoratorEvent(\"reset-click\", {\n restoredItems: this.selectedItems,\n });\n this.onReset();\n }\n\n handleResult(): void {\n this._shouldApplyFilter = true;\n this.onDropdownClose();\n this.fireDecoratorEvent(\"result-click\", {\n selectedItems: this.selectedItems,\n });\n }\n\n handleKeyDownList(e: KeyboardEvent): void {\n const isTabNextPress = isTabNext(e) && !this.hasFooterButtons;\n const isTabPrevPress = isTabPrevious(e) && !this._search;\n const target = e.target as HTMLElement;\n const isSearchResetTrigger = target === this._search;\n if ((isTabNextPress && (!isSearchResetTrigger || this.isListEmpty)) || isTabPrevPress) {\n this.onDropdownClose(e);\n }\n }\n\n handleKeyDownSearch(keyEvent: CustomEvent<UDExSearchKeydownEventDetail>): void {\n const { detail: { e } } = keyEvent;\n if (isTabPrevious(e) || isEscape(e)) {\n this.onDropdownClose(e);\n }\n }\n\n handleKeyDownResultBtn(e: KeyboardEvent): void {\n e.stopPropagation();\n if (isTabNext(e) && !this.hasResetBtn) {\n this.onDropdownClose();\n }\n }\n\n handleKeyDownResetBtn(e: KeyboardEvent): void {\n e.stopPropagation();\n if (isTabNext(e)) {\n this.onDropdownClose();\n }\n }\n\n handleTriggerClick(): void {\n this.toggleDropdown();\n }\n\n handleTriggerKeydown(e: KeyboardEvent): void {\n if (isSpace(e) || isEnter(e)) {\n e.preventDefault();\n this.toggleDropdown();\n }\n }\n\n toggleDropdown(): void {\n this._open = !this._open;\n\n if (this._open) {\n this._trigger.classList.add(\"udex-filter-menu__trigger-active\");\n this._popover.opener = this._trigger;\n this._popover.open = true;\n } else {\n this.onDropdownClose();\n }\n }\n\n onDropdownClose(e?: KeyboardEvent): void {\n if (this._popover.open) {\n if (e && (isTabPrevious(e) || isEscape(e))) {\n e.preventDefault();\n this._popover.open = false;\n } else {\n this._popover.open = false;\n }\n }\n }\n\n _dropdownBeforeOpen(): void {\n if (this.preventPageScroll) {\n this._managePopupListeners(UDExPopoverPart.Header, \"addEventListener\");\n this._managePopupListeners(UDExPopoverPart.Footer, \"addEventListener\");\n }\n\n if (this.height) {\n this._setContentHeight();\n }\n\n this._initialState = this._getInitialState(this.items);\n this.fireDecoratorEvent(\"before-open\");\n }\n\n _dropdownAfterOpen(): void {\n const popoverLeftOffset = +this._popover.style.left.split(\"px\")[0];\n if (this._popover.offsetWidth + popoverLeftOffset < this._breakpointSizeXS) {\n this.style.setProperty(\"--udex-filter-menu-popover-left-offset\", `${this._popover.style.left}`);\n }\n if (this.modeMultiSelect) {\n this._focusFirstInteractiveElement();\n }\n if (this.modeSingleSelect && !this._search) {\n this.activeItem?.focus();\n }\n this._handleDropdownScroll();\n this.fireDecoratorEvent(\"after-open\");\n }\n\n _focusFirstInteractiveElement(): void {\n if (this.showSearch && this._search) {\n this._focusSearchInput();\n return;\n }\n\n this.focusFirstItem();\n }\n\n _focusSearchInput(): void {\n const input = this._search.shadowRoot?.querySelector(\"[id='search-input']\") as HTMLInputElement;\n input.focus();\n }\n\n _getInitialState(items: Array<UDExListItemBase | UDExListGroupHeaderBase>): Array<initialItemState> {\n return items.flatMap(item => {\n if (item.isGroup) {\n const groupState: initialItemState = {\n id: item._id,\n selected: item.selected,\n indeterminate: item.indeterminate,\n collapsed: item.collapsed,\n _filtered: item._filtered,\n };\n const subItemsState = (item as UDExListGroupHeaderBase).getItems().map(subItem => ({\n id: subItem._id,\n selected: subItem.selected,\n }));\n return [groupState, ...subItemsState];\n }\n return {\n id: item._id,\n selected: item.selected,\n };\n });\n }\n\n _setInitialListState(): void {\n this.getSlottedItems(this.items).forEach((item, index) => {\n const initialState = this._initialState[index];\n if (item._id === initialState?.id) {\n item.selected = initialState.selected;\n if (item.isGroup) {\n item.indeterminate = initialState.indeterminate;\n }\n }\n });\n }\n\n _setInitialState(): void {\n this._setInitialListState();\n this._requestRender = true;\n }\n\n _dropdownBeforeClose(): void {\n this.fireDecoratorEvent(\"before-close\");\n }\n\n _dropdownAfterClose(): void {\n if (this.preventPageScroll) {\n this._managePopupListeners(UDExPopoverPart.Header, \"removeEventListener\");\n this._managePopupListeners(UDExPopoverPart.Footer, \"removeEventListener\");\n }\n\n if (!this._shouldApplyFilter && this.modeMultiSelect && !this.modeSelectAll) {\n this._setInitialState();\n }\n\n this._shouldApplyFilter = false;\n this._open = false;\n this._trigger.classList.remove(\"udex-filter-menu__trigger-active\");\n this.fireDecoratorEvent(\"after-close\");\n }\n\n /**\n * Close the dropdown.\n * @public\n */\n close(): void {\n this.onDropdownClose();\n }\n\n get disableAllowTargetOverlap(): boolean {\n return !this.disableTargetOverlap;\n }\n\n get hasFilterNamePrefix(): boolean {\n return !!this.filterNamePrefix?.length;\n }\n\n get getResultLabelText(): string {\n return this.resultBtnLabel !== undefined && this.resultBtnLabel.length > 0 && this.resultBtnLabel ? this.resultBtnLabel : translate(UDExFilterMenu, SHOW_RESULTS);\n }\n\n get getResetLabelText(): string {\n return this.resetBtnLabel !== undefined && this.resetBtnLabel.length > 0 ? this.resetBtnLabel : translate(UDExFilterMenu, RESET);\n }\n\n get _iconAccessibleNameText(): string {\n return translate(UDExFilterMenu, SELECT_OPTIONS);\n }\n\n /**\n * FilterMenu uses the ARIA tree pattern for genuinely grouped items when:\n * - MultiSelect mode (headers/items expose aria-checked), or\n * - SingleSelect mode with at least one collapsible group\n * (headers expose aria-expanded, items expose aria-selected).\n *\n * A \"Select All\" header is NOT a hierarchical group — it is a bulk-select\n * affordance for a flat list — so it must not trigger the tree pattern.\n */\n override get isTreeStructure(): boolean {\n const groups = this._filteredItems.filter(e => e.isGroup && !(e.item as UDExListGroupHeaderBase).isSelectAllHeader);\n if (!groups.length) {\n return false;\n }\n if (this.modeMultiSelect) {\n return true;\n }\n return this.modeSingleSelect\n && groups.some(e => (e.item as UDExListGroupHeaderBase).collapsible);\n }\n\n get triggerButtonAccessibleName(): string {\n return this.accessibleName || translate(UDExFilterMenu, SELECT_OPTIONS);\n }\n\n get searchableList() {\n return SearchableListBaseTemplate.call(this);\n }\n\n static get searchableListBaseTemplate() {\n return SearchableListBaseTemplate;\n }\n\n get hideActionBar(): boolean {\n return this.hideResultBtn && this.hideResetBtn;\n }\n\n get hasFooterButtons(): boolean {\n return !!this.shadowRoot!.querySelector(\"[udex-button]\");\n }\n\n get hasResetBtn(): boolean {\n return !this.hideResetBtn;\n }\n\n get modeSelectAll(): boolean {\n return !!this.querySelector<UDExFilterMenuSelectAll>(\"[udex-filter-menu-select-all]\");\n }\n\n getTriggerButton(): UDExButton {\n return this.shadowRoot!.querySelector<UDExButton>(\"#filterMenuTrigger\")!;\n }\n\n getItems(): Array<UDExListItemBase> {\n return this.getSlottedNodes<UDExListItemBase>(\"items\");\n }\n}\n\nUDExFilterMenu.define();\n\nexport default UDExFilterMenu;\nexport type { UDExFilterMenuResetClickEventDetail, UDExFilterMenuResultClickEventDetail };\n"]}
1
+ {"version":3,"file":"FilterMenu.js","sourceRoot":"","sources":["../src/FilterMenu.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EACL,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GACrD,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,mBAAmB,MAAM,sDAAsD,CAAC;AACvF,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,iBAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,kBAAkB,MAAM,qDAAqD,CAAC;AACrF,OAAO,gEAAgE,CAAC;AACxE,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,mBAAmB,MAAM,sBAAsB,CAAC;AACvD,OAAO,kBAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,yBAAyB,MAAM,4BAA4B,CAAC;AAEnE,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,OAAO,sBAAsB,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,uBAAuB,MAAM,0BAA0B,CAAC;AAC/D,OAAO,iBAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,wDAAwD,CAAC;AAChE,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAE7C,SAAS;AACT,OAAO,aAAa,MAAM,sCAAsC,CAAC;AACjE,OAAO,iBAAiB,MAAM,0CAA0C,CAAC;AACzE,OAAO,0BAA0B,MAAM,uCAAuC,CAAC;AAkB/E;;;;;;;;;;;;;;;;;GAiBG;AA2EH,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,sBAAsB;IAAnD;;QA2BE;;;;;WAKG;QAED,cAAS,GAAmB,SAAS,CAAC,MAAM,CAAC;QAE/C;;;;;WAKG;QAED,oBAAe,GAAyB,eAAe,CAAC,KAAK,CAAC;QAEhE;;;;;WAKG;QAED,SAAI,GAAsB,YAAY,CAAC,YAAY,CAAC;QAsCtD;;;;;WAKG;QAED,aAAQ,GAAY,KAAK,CAAC;QAE5B;;;;;WAKG;QAED,UAAK,GAAY,KAAK,CAAC;QAEzB;;;;;;WAMG;QAED,kBAAa,GAAY,KAAK,CAAC;QAEjC;;;;;;WAMG;QAED,iBAAY,GAAY,KAAK,CAAC;QAmBhC;;;;WAIG;QAED,mBAAc,GAA6B,mBAAmB,CAAC,IAAI,CAAC;QAEtE;;;;WAIG;QAED,0BAAqB,GAAW,QAAQ,CAAC;QAE3C;;;;WAIG;QAED,uBAAkB,GAAY,KAAK,CAAC;QAEtC;;;;WAIG;QAED,mBAAc,GAAG,KAAK,CAAC;QAKzB,sBAAiB,GAAG,GAAG,CAAC;QACxB,kBAAa,GAA4B,EAAE,CAAC;IAgU9C,CAAC;IA7TC,UAAU;QACR,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,CAAa;QAC3B,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,eAAe,CAAC,CAAa;QAC3B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,CAAa;QAC7B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,CAAgC;QAChD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;YACrC,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;YACtC,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,CAAC,CAAgB;QAChC,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9D,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACzD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB,CAAC;QACvC,MAAM,oBAAoB,GAAG,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,oBAAoB,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;YACtF,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,QAAmD;QACrE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC;QACnC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,sBAAsB,CAAC,CAAgB;QACrC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,CAAgB;QACpC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,oBAAoB,CAAC,CAAgB;QACnC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,eAAe,CAAC,CAAiB;QAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YACvE,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB;QAChB,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3E,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,wCAAwC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,mCAAmC,EAAE,CAAC;QAC3C,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,6BAA6B;QAC3B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,iBAAiB;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,qBAAqB,CAAqB,CAAC;QAChG,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAED,gBAAgB,CAAC,KAAwD;QACvE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAqB;oBACnC,EAAE,EAAE,IAAI,CAAC,GAAG;oBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC;gBACF,MAAM,aAAa,GAAI,IAAgC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBACjF,EAAE,EAAE,OAAO,CAAC,GAAG;oBACf,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B,CAAC,CAAC,CAAC;gBACJ,OAAO,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC,CAAC;YACxC,CAAC;YACD,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,GAAG;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACtC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;YAC1E,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACpC,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACzC,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAc,EAAE,YAAY,CAAC,CAAC;IACpK,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAc,EAAE,KAAK,CAAC,CAAC;IACnI,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,SAAS,CAAC,gBAAc,EAAE,cAAc,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;OAQG;IACH,IAAa,eAAe;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAE,CAAC,CAAC,IAAgC,CAAC,iBAAiB,CAAC,CAAC;QACpH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB;eACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,IAAgC,CAAC,WAAW,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC,gBAAc,EAAE,cAAc,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,0BAA0B;QACnC,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;IACjD,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,WAAW;QACb,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;IAC5B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAA0B,+BAA+B,CAAC,CAAC;IACxF,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAW,CAAC,aAAa,CAAa,oBAAoB,CAAE,CAAC;IAC3E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,eAAe,CAAmB,OAAO,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AAteG;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDACL;AAUpB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;4DACK;AAS/B;IADD,QAAQ,EAAE;iDACoC;AAS7C;IADD,QAAQ,EAAE;uDACqD;AAS9D;IADD,QAAQ,EAAE;4CAC2C;AASpD;IADD,QAAQ,EAAE;qDACc;AASvB;IADD,QAAQ,EAAE;sDACe;AASxB;IADD,QAAQ,EAAE;kDACW;AASpB;IADD,QAAQ,EAAE;wDACiB;AAS1B;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gDACA;AAS1B;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6CACH;AAUvB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qDACK;AAU/B;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oDACI;AAS9B;IADD,QAAQ,EAAE;sDACe;AASxB;IADD,QAAQ,EAAE;yDACkB;AAO3B;IADD,QAAQ,EAAE;sDAC2D;AAQpE;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6DACgB;AAQzC;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0DACU;AAQpC;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;sDACtB;AA/KrB,cAAc;IA1EnB,aAAa,CAAC;QACb,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;QACxE,QAAQ,EAAE,kBAAkB;QAC5B,YAAY,EAAE;YACZ,kBAAkB;YAClB,OAAO;YACP,IAAI;YACJ,iBAAiB;YACjB,kBAAkB;YAClB,yBAAyB;YACzB,uBAAuB;YACvB,QAAQ;YACR,iBAAiB;YACjB,YAAY;YACZ,mBAAmB;YACnB,SAAS;YACT,UAAU;YACV,UAAU;SACX;KACF,CAAC;IAEF;;;;;OAKG;;IACF,KAAK,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAExC;;;;;OAKG;;IACF,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEzC;;;;OAIG;;IACF,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEvC;;;;OAIG;;IACF,KAAK,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAExC;;;;OAIG;;IACF,KAAK,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEvC;;;;OAIG;;IACF,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEzC;;;;OAIG;;IACF,KAAK,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;GAElC,cAAc,CAqfnB;AAED,cAAc,CAAC,MAAM,EAAE,CAAC;AAExB,eAAe,cAAc,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport {\n isTabPrevious, isTabNext, isEscape, isSpace, isEnter,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { renderFinished } from \"@ui5/webcomponents-base/dist/Render.js\";\nimport PopupAccessibleRole from \"@ui5/webcomponents/dist/types/PopupAccessibleRole.js\";\nimport Popover from \"@ui5/webcomponents/dist/Popover.js\";\nimport UDExBusyIndicator from \"./BusyIndicator.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport IllustratedMessage from \"@ui5/webcomponents-fiori/dist/IllustratedMessage.js\";\nimport \"@ui5/webcomponents-fiori/dist/illustrations/NoSearchResults.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExFilterMenuItem from \"./FilterMenuItem.js\";\nimport UDExFilterMenuGroupHeader from \"./FilterMenuGroupHeader.js\";\nimport type { UDExSearchKeydownEventDetail } from \"./Search.js\";\nimport UDExSearch from \"./Search.js\";\nimport UDExButton from \"./Button.js\";\nimport type { UDExSearchableListBaseEvents } from \"./SearchableListBase.js\";\nimport UDExSearchableListBase from \"./SearchableListBase.js\";\nimport { UDExPopoverPart } from \"./types/SearchableListBase.js\";\nimport { Placement, HorizontalAlign } from \"./types/Dropdown.js\";\nimport { UDExListMode } from \"./types/List.js\";\nimport UDExFilterMenuSelectAll from \"./FilterMenuSelectAll.js\";\nimport UDExListSelectAll from \"./ListSelectAll.js\";\nimport UDExBadge from \"./Badge.js\";\nimport type UDExListItemBase from \"./ListItemBase.js\";\nimport { RESET, SHOW_RESULTS, SELECT_OPTIONS } from \"./generated/i18n/i18n-defaults.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-down-arrow.js\";\nimport FilterMenuTemplate from \"./FilterMenuTemplate.js\";\nimport SearchableListBaseTemplate from \"./SearchableListBaseTemplate.js\";\nimport type UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport FilterMenuCss from \"./generated/themes/FilterMenu.css.js\";\nimport SearchableListCss from \"./generated/themes/SearchableList.css.js\";\nimport getEffectiveScrollbarStyle from \"./utils/getEffectiveScrollbarStyle.js\";\n\nexport type initialItemState = {\n id: string,\n selected: boolean,\n indeterminate?: boolean,\n collapsed?: boolean,\n _filtered?: boolean,\n}\n\ntype UDExFilterMenuResultClickEventDetail = {\n selectedItems: Array<UDExListItemBase>,\n}\n\ntype UDExFilterMenuResetClickEventDetail = {\n restoredItems: Array<UDExListItemBase>,\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-filter-menu</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/UDExFilterMenu.js\";</code>\n *\n * @constructor\n * @extends UDExSearchableListBase\n * @tagname udex-filter-menu\n * @public\n */\n@customElement({\n tag: \"udex-filter-menu\",\n renderer: jsxRenderer,\n styles: [FilterMenuCss, SearchableListCss, getEffectiveScrollbarStyle()],\n template: FilterMenuTemplate,\n dependencies: [\n IllustratedMessage,\n Popover,\n Icon,\n UDExBusyIndicator,\n UDExFilterMenuItem,\n UDExFilterMenuGroupHeader,\n UDExFilterMenuSelectAll,\n UDExList,\n UDExListSelectAll,\n UDExListItem,\n UDExListGroupHeader,\n UDExBadge,\n UDExSearch,\n UDExButton,\n ],\n})\n\n/**\n * Fired event when the user click on a reset button on the footer.\n *\n * @public\n * @param {Array<UDExListItemBase>} restoredItems\n */\n@event(\"reset-click\", { bubbles: true })\n\n/**\n * Fired event when the user click on a result button on the footer.\n *\n * @public\n * @param {Array<UDExListItemBase>} selectedItems\n */\n@event(\"result-click\", { bubbles: true })\n\n/**\n * Fired event when the user click on Select All header item.\n *\n * @public\n */\n@event(\"select-all\", { bubbles: true })\n\n/**\n * Fired before the dropdown pane is opened.\n *\n * @public\n */\n@event(\"before-open\", { bubbles: true })\n\n/**\n * Fired after the dropdown pane is opened.\n *\n * @public\n */\n@event(\"after-open\", { bubbles: true })\n\n/**\n * Fired before the dropdown pane is closed.\n *\n * @public\n */\n@event(\"before-close\", { bubbles: true })\n\n/**\n * Fired after the dropdown pane is closed.\n *\n * @public\n */\n@event(\"after-close\", { bubbles: true })\n\nclass UDExFilterMenu extends UDExSearchableListBase {\n eventDetails!: {\n \"result-click\": UDExFilterMenuResultClickEventDetail,\n \"reset-click\": UDExFilterMenuResetClickEventDetail,\n \"before-open\": void,\n \"after-open\": void,\n \"before-close\": void,\n \"after-close\": void,\n } & UDExSearchableListBaseEvents;\n /**\n * Determines the value of the badge.\n *\n * @public\n */\n @property({ type: Number })\n badgeValue?: number;\n\n /**\n * Determines if there is no enough space, the component can be placed\n * over the target.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disableTargetOverlap?: boolean;\n\n /**\n * Determines on which side the component is placed at.\n *\n * @default \"Bottom\"\n * @public\n */\n @property()\n placement: `${Placement}` = Placement.Bottom;\n\n /**\n * Determines the horizontal alignment of the component.\n *\n * @default \"Left\"\n * @public\n */\n @property()\n horizontalAlign: `${HorizontalAlign}` = HorizontalAlign.Start;\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 label of the button reset in the footer.\n *\n * @default \"Reset\"\n * @public\n */\n @property()\n resetBtnLabel?: string;\n\n /**\n * Defines the label of the button result in the footer.\n *\n * @default \"Show Result\"\n * @public\n */\n @property()\n resultBtnLabel?: string;\n\n /**\n * Defines the filter name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n filterName!: string;\n\n /**\n * Defines the filter name prefix of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n filterNamePrefix!: string;\n\n /**\n * Defines whether the component is in disabled state.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled: boolean = false;\n\n /**\n * Defines whether the dropdown is open or not.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _open: boolean = false;\n\n /**\n * Hides the result button in the footer.\n *\n * @type {boolean}\n * @default false\n * @public\n */\n @property({ type: Boolean })\n hideResultBtn: boolean = false;\n\n /**\n * Hides the reset button in the footer.\n *\n * @type {boolean}\n * @default false\n * @public\n */\n @property({ type: Boolean })\n hideResetBtn: boolean = false;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default undefined\n * @public\n */\n @property()\n accessibleName?: string;\n\n /**\n * Defines id (or many ids) of the elements that contain the ARIA name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n accessibleNameRef!: string;\n /**\n * Allows setting a custom role.\n * @default \"None\"\n * @public\n */\n @property()\n accessibleRole: `${PopupAccessibleRole}` = PopupAccessibleRole.None;\n\n /**\n * Allows setting a custom role for dropdown trigger.\n * @default \"button\"\n * @public\n */\n @property({ type: String })\n triggerAccessibleRole: string = \"button\";\n\n /**\n * Determines whether the filter should be applied.\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _shouldApplyFilter: boolean = false;\n\n /**\n * Determines whether the component should be re-rendered.\n * @default false\n * @private\n */\n @property({ type: Boolean, noAttribute: true })\n _requestRender = false;\n\n _trigger!: UDExButton;\n _search!: UDExSearch | HTMLInputElement;\n _popover!: Popover;\n _breakpointSizeXS = 640;\n _initialState: Array<initialItemState> = [];\n _list!: UDExList;\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onBeforeRendering() {\n super.onBeforeRendering();\n }\n\n onAfterRendering() {\n this._search = this.getSearch();\n this._popover = this.getPopover();\n this._trigger = this.getTriggerButton();\n this._list = this.getList();\n }\n\n handleSelectAll(e:CustomEvent): void {\n this.onSelectAllHeaderPress(e);\n }\n\n handleItemPress(e:CustomEvent): void {\n this.onItemPress(e);\n\n if (this.modeSingleSelect) {\n this.onDropdownClose();\n }\n }\n\n handleHeaderPress(e:CustomEvent): void {\n this.onHeaderPress(e);\n }\n\n handleValueSearch(e:CustomEvent<{ value: string }>): void {\n this.onSearch(e.detail.value);\n }\n\n handleSubmitSearch(): void {\n this.onDropdownClose();\n this.onSubmitSearch();\n }\n\n handleResetSearch(): void {\n this.onResetSearch();\n }\n\n handleReset(): void {\n this.onDropdownClose();\n this.fireDecoratorEvent(\"reset-click\", {\n restoredItems: this.selectedItems,\n });\n this.onReset();\n }\n\n handleResult(): void {\n this._shouldApplyFilter = true;\n this.onDropdownClose();\n this.fireDecoratorEvent(\"result-click\", {\n selectedItems: this.selectedItems,\n });\n }\n\n handleKeyDownList(e: KeyboardEvent): void {\n const isTabNextPress = isTabNext(e) && !this.hasFooterButtons;\n const isTabPrevPress = isTabPrevious(e) && !this._search;\n const target = e.target as HTMLElement;\n const isSearchResetTrigger = target === this._search;\n if ((isTabNextPress && (!isSearchResetTrigger || this.isListEmpty)) || isTabPrevPress) {\n this.onDropdownClose(e);\n }\n }\n\n handleKeyDownSearch(keyEvent: CustomEvent<UDExSearchKeydownEventDetail>): void {\n const { detail: { e } } = keyEvent;\n if (isTabPrevious(e) || isEscape(e)) {\n this.onDropdownClose(e);\n }\n }\n\n handleKeyDownResultBtn(e: KeyboardEvent): void {\n e.stopPropagation();\n if (isEscape(e) || (isTabNext(e) && !this.hasResetBtn)) {\n this.onDropdownClose(e);\n }\n }\n\n handleKeyDownResetBtn(e: KeyboardEvent): void {\n e.stopPropagation();\n if (isEscape(e) || isTabNext(e)) {\n this.onDropdownClose(e);\n }\n }\n\n handleTriggerClick(): void {\n this.toggleDropdown();\n }\n\n handleTriggerKeydown(e: KeyboardEvent): void {\n if (isSpace(e) || isEnter(e)) {\n e.preventDefault();\n this.toggleDropdown();\n }\n }\n\n toggleDropdown(): void {\n this._open = !this._open;\n\n if (this._open) {\n this._trigger.classList.add(\"udex-filter-menu__trigger-active\");\n this._popover.opener = this._trigger;\n this._popover.open = true;\n } else {\n this.onDropdownClose();\n }\n }\n\n onDropdownClose(e?: KeyboardEvent): void {\n if (this._popover.open) {\n if (e && (isTabPrevious(e) || isEscape(e))) {\n e.preventDefault();\n this._popover.open = false;\n } else {\n this._popover.open = false;\n }\n }\n }\n\n _dropdownBeforeOpen(): void {\n if (this.preventPageScroll) {\n this._managePopupListeners(UDExPopoverPart.Header, \"addEventListener\");\n this._managePopupListeners(UDExPopoverPart.Footer, \"addEventListener\");\n }\n\n if (this.height) {\n this._setContentHeight();\n }\n\n this._initialState = this._getInitialState(this.items);\n this.fireDecoratorEvent(\"before-open\");\n }\n\n _dropdownAfterOpen(): void {\n const popoverLeftOffset = +this._popover.style.left.split(\"px\")[0];\n if (this._popover.offsetWidth + popoverLeftOffset < this._breakpointSizeXS) {\n this.style.setProperty(\"--udex-filter-menu-popover-left-offset\", `${this._popover.style.left}`);\n }\n if (this.modeMultiSelect) {\n this._focusFirstInteractiveElement();\n }\n if (this.modeSingleSelect && !this._search) {\n this.activeItem?.focus();\n }\n this._expandCollapsedGroupsWithSelection();\n renderFinished().then(() => {\n this._handleDropdownScroll();\n }).catch(() => {});\n this.fireDecoratorEvent(\"after-open\");\n }\n\n _focusFirstInteractiveElement(): void {\n if (this.showSearch && this._search) {\n this._focusSearchInput();\n return;\n }\n\n this.focusFirstItem();\n }\n\n _focusSearchInput(): void {\n const input = this._search.shadowRoot?.querySelector(\"[id='search-input']\") as HTMLInputElement;\n input.focus();\n }\n\n _getInitialState(items: Array<UDExListItemBase | UDExListGroupHeaderBase>): Array<initialItemState> {\n return items.flatMap(item => {\n if (item.isGroup) {\n const groupState: initialItemState = {\n id: item._id,\n selected: item.selected,\n indeterminate: item.indeterminate,\n collapsed: item.collapsed,\n _filtered: item._filtered,\n };\n const subItemsState = (item as UDExListGroupHeaderBase).getItems().map(subItem => ({\n id: subItem._id,\n selected: subItem.selected,\n }));\n return [groupState, ...subItemsState];\n }\n return {\n id: item._id,\n selected: item.selected,\n };\n });\n }\n\n _setInitialListState(): void {\n this.getSlottedItems(this.items).forEach((item, index) => {\n const initialState = this._initialState[index];\n if (item._id === initialState?.id) {\n item.selected = initialState.selected;\n if (item.isGroup) {\n item.indeterminate = initialState.indeterminate;\n }\n }\n });\n }\n\n _setInitialState(): void {\n this._setInitialListState();\n this._requestRender = true;\n }\n\n _dropdownBeforeClose(): void {\n this.fireDecoratorEvent(\"before-close\");\n }\n\n _dropdownAfterClose(): void {\n if (this.preventPageScroll) {\n this._managePopupListeners(UDExPopoverPart.Header, \"removeEventListener\");\n this._managePopupListeners(UDExPopoverPart.Footer, \"removeEventListener\");\n }\n\n if (!this._shouldApplyFilter && this.modeMultiSelect && !this.modeSelectAll) {\n this._setInitialState();\n }\n\n this._shouldApplyFilter = false;\n this._open = false;\n this._trigger.classList.remove(\"udex-filter-menu__trigger-active\");\n this.fireDecoratorEvent(\"after-close\");\n }\n\n /**\n * Close the dropdown.\n * @public\n */\n close(): void {\n this.onDropdownClose();\n }\n\n get disableAllowTargetOverlap(): boolean {\n return !this.disableTargetOverlap;\n }\n\n get hasFilterNamePrefix(): boolean {\n return !!this.filterNamePrefix?.length;\n }\n\n get getResultLabelText(): string {\n return this.resultBtnLabel !== undefined && this.resultBtnLabel.length > 0 && this.resultBtnLabel ? this.resultBtnLabel : translate(UDExFilterMenu, SHOW_RESULTS);\n }\n\n get getResetLabelText(): string {\n return this.resetBtnLabel !== undefined && this.resetBtnLabel.length > 0 ? this.resetBtnLabel : translate(UDExFilterMenu, RESET);\n }\n\n get _iconAccessibleNameText(): string {\n return translate(UDExFilterMenu, SELECT_OPTIONS);\n }\n\n /**\n * FilterMenu uses the ARIA tree pattern for genuinely grouped items when:\n * - MultiSelect mode (headers/items expose aria-checked), or\n * - SingleSelect mode with at least one collapsible group\n * (headers expose aria-expanded, items expose aria-selected).\n *\n * A \"Select All\" header is NOT a hierarchical group — it is a bulk-select\n * affordance for a flat list — so it must not trigger the tree pattern.\n */\n override get isTreeStructure(): boolean {\n const groups = this._filteredItems.filter(e => e.isGroup && !(e.item as UDExListGroupHeaderBase).isSelectAllHeader);\n if (!groups.length) {\n return false;\n }\n if (this.modeMultiSelect) {\n return true;\n }\n return this.modeSingleSelect\n && groups.some(e => (e.item as UDExListGroupHeaderBase).collapsible);\n }\n\n get triggerButtonAccessibleName(): string {\n return this.accessibleName || translate(UDExFilterMenu, SELECT_OPTIONS);\n }\n\n get searchableList() {\n return SearchableListBaseTemplate.call(this);\n }\n\n static get searchableListBaseTemplate() {\n return SearchableListBaseTemplate;\n }\n\n get hideActionBar(): boolean {\n return this.hideResultBtn && this.hideResetBtn;\n }\n\n get hasFooterButtons(): boolean {\n return !!this.shadowRoot!.querySelector(\"[udex-button]\");\n }\n\n get hasResetBtn(): boolean {\n return !this.hideResetBtn;\n }\n\n get modeSelectAll(): boolean {\n return !!this.querySelector<UDExFilterMenuSelectAll>(\"[udex-filter-menu-select-all]\");\n }\n\n getTriggerButton(): UDExButton {\n return this.shadowRoot!.querySelector<UDExButton>(\"#filterMenuTrigger\")!;\n }\n\n getItems(): Array<UDExListItemBase> {\n return this.getSlottedNodes<UDExListItemBase>(\"items\");\n }\n}\n\nUDExFilterMenu.define();\n\nexport default UDExFilterMenu;\nexport type { UDExFilterMenuResetClickEventDetail, UDExFilterMenuResultClickEventDetail };\n"]}
package/dist/Footer.d.ts CHANGED
@@ -6,6 +6,7 @@ import type { UDExAccordionItemClickEventDetail } from "./AccordionItem.js";
6
6
  import UDExSocialMediaButton from "./SocialMediaButton.js";
7
7
  import type { UDExSocialMediaButtonType } from "./types/SocialMediaButtonType.js";
8
8
  import type { UDExTarget } from "./types/common.js";
9
+ import UDExFooterAskJoulePosition from "./types/FooterAskJoulePosition.js";
9
10
  export declare const chineseICPDefaultLink = "https://beian.miit.gov.cn/";
10
11
  export type FooterLink = {
11
12
  id: string;
@@ -34,7 +35,7 @@ type UDExFooterDetailedClickEventDetail = {
34
35
  type UDExFooterBaseEventDetail = {
35
36
  originalEvent: MouseEvent | Event;
36
37
  };
37
- type BaseEvents = "contact-chat-click" | "contact-phone-local-numbers-click" | "contact-email-click" | "contact-phone-click" | "logo-click" | "back-to-top-click";
38
+ type BaseEvents = "contact-chat-click" | "contact-phone-local-numbers-click" | "contact-email-click" | "contact-phone-click" | "logo-click" | "back-to-top-click" | "ask-joule-click";
38
39
  type DetailedEvents = "quick-links-click" | "trending-click" | "about-sap-click" | "site-information-click" | "social-media-link-click";
39
40
  /**
40
41
  * @class
@@ -63,6 +64,7 @@ declare class UDExFooter extends UI5Element {
63
64
  "contact-phone-local-numbers-click": UDExFooterBaseEventDetail;
64
65
  "contact-email-click": UDExFooterBaseEventDetail;
65
66
  "contact-phone-click": UDExFooterBaseEventDetail;
67
+ "ask-joule-click": UDExFooterBaseEventDetail;
66
68
  "quick-links-click": UDExFooterDetailedClickEventDetail;
67
69
  "trending-click": UDExFooterDetailedClickEventDetail;
68
70
  "about-sap-click": UDExFooterDetailedClickEventDetail;
@@ -189,6 +191,21 @@ declare class UDExFooter extends UI5Element {
189
191
  * @public
190
192
  */
191
193
  chatWithUsLink: string;
194
+ /**
195
+ * Defines the Ask Joule link's href
196
+ *
197
+ * @default ""
198
+ * @public
199
+ */
200
+ askJouleLink: string;
201
+ /**
202
+ * Defines the position of the Ask Joule item within the contact section.
203
+ * Can be "start" (before phone/email/chat) or "end" (after phone/email/chat).
204
+ *
205
+ * @default "start"
206
+ * @public
207
+ */
208
+ askJoulePosition: UDExFooterAskJoulePosition;
192
209
  /**
193
210
  * List of the Social links and their icons
194
211
  *
@@ -277,6 +294,7 @@ declare class UDExFooter extends UI5Element {
277
294
  get contactUsAccessibleName(): string;
278
295
  get contactUsAccessibleLabel(): string;
279
296
  get chatWithUsAccessibleName(): string;
297
+ get askJouleAccessibleName(): string;
280
298
  get _quickLinksTitle(): string;
281
299
  get _trendingTitle(): string;
282
300
  get _aboutSapTitle(): string;
@@ -303,6 +321,7 @@ declare class UDExFooter extends UI5Element {
303
321
  _onContactPhoneLocalNumbersClick(e: Event): void;
304
322
  _onContactEmailClick(e: MouseEvent): void;
305
323
  _onContactChatClick(e: MouseEvent): void;
324
+ _onAskJouleClick(e: MouseEvent): void;
306
325
  _onQuickLinksClick(e: MouseEvent): void;
307
326
  _onTrendingClick(e: MouseEvent): void;
308
327
  _onAboutSapClick(e: MouseEvent): void;
package/dist/Footer.js CHANGED
@@ -22,10 +22,11 @@ import UDExAccordion from "./Accordion.js";
22
22
  import UDExLink from "./Link.js";
23
23
  import UDExDivider from "./Divider.js";
24
24
  import UDExSocialMediaButton from "./SocialMediaButton.js";
25
+ import UDExFooterAskJoulePosition from "./types/FooterAskJoulePosition.js";
25
26
  import { BreakpointUtils } from "./utils/Breakpoints.js";
26
27
  import parseArrayFromString from "./utils/parseArrayFromString.js";
27
28
  import FooterTemplate from "./FooterTemplate.js";
28
- import { ABOUT_SAP, CHAT_WITH_US, CONTACT_US, EMAIL, LOCAL_COUNTRY_NAMES, PHONE_NUMBER, QUICK_LINKS, SEE_COMPLETE_LIST, SITE_INFORMATION, TRENDING, COPYRIGHT, PUBLIC_SECURITY_NETWORK_NUMBER, ICP_NUMBER, BACK_TO_TOP, } from "./generated/i18n/i18n-defaults.js";
29
+ import { ABOUT_SAP, ASK_JOULE, CHAT_WITH_US, CONTACT_US, EMAIL, LOCAL_COUNTRY_NAMES, PHONE_NUMBER, QUICK_LINKS, SEE_COMPLETE_LIST, SITE_INFORMATION, TRENDING, COPYRIGHT, PUBLIC_SECURITY_NETWORK_NUMBER, ICP_NUMBER, BACK_TO_TOP, } from "./generated/i18n/i18n-defaults.js";
29
30
  import translate from "./utils/translate.js";
30
31
  // Styles
31
32
  import FooterCss from "./generated/themes/Footer.css.js";
@@ -115,6 +116,21 @@ let UDExFooter = UDExFooter_1 = class UDExFooter extends UI5Element {
115
116
  * @public
116
117
  */
117
118
  this.chatWithUsLink = "";
119
+ /**
120
+ * Defines the Ask Joule link's href
121
+ *
122
+ * @default ""
123
+ * @public
124
+ */
125
+ this.askJouleLink = "";
126
+ /**
127
+ * Defines the position of the Ask Joule item within the contact section.
128
+ * Can be "start" (before phone/email/chat) or "end" (after phone/email/chat).
129
+ *
130
+ * @default "start"
131
+ * @public
132
+ */
133
+ this.askJoulePosition = UDExFooterAskJoulePosition.Start;
118
134
  /**
119
135
  * List of the Social links and their icons
120
136
  *
@@ -179,7 +195,7 @@ let UDExFooter = UDExFooter_1 = class UDExFooter extends UI5Element {
179
195
  return parseArrayFromString(this.socialLinks);
180
196
  }
181
197
  get isContactContainerVisible() {
182
- return !!this.contactNumbersArray.length || !!this.contactUsLink || !!this.chatWithUsLink;
198
+ return !!this.contactNumbersArray.length || !!this.contactUsLink || !!this.chatWithUsLink || !!this.askJouleLink;
183
199
  }
184
200
  get phoneNumberAccessibleName() {
185
201
  return `${translate(UDExFooter_1, PHONE_NUMBER)} `;
@@ -196,6 +212,9 @@ let UDExFooter = UDExFooter_1 = class UDExFooter extends UI5Element {
196
212
  get chatWithUsAccessibleName() {
197
213
  return translate(UDExFooter_1, CHAT_WITH_US);
198
214
  }
215
+ get askJouleAccessibleName() {
216
+ return translate(UDExFooter_1, ASK_JOULE);
217
+ }
199
218
  get _quickLinksTitle() {
200
219
  return this.quickLinksTitle || translate(UDExFooter_1, QUICK_LINKS);
201
220
  }
@@ -276,6 +295,9 @@ let UDExFooter = UDExFooter_1 = class UDExFooter extends UI5Element {
276
295
  _onContactChatClick(e) {
277
296
  this.fireFooterBaseEvent(e, "contact-chat-click");
278
297
  }
298
+ _onAskJouleClick(e) {
299
+ this.fireFooterBaseEvent(e, "ask-joule-click");
300
+ }
279
301
  _onQuickLinksClick(e) {
280
302
  this.fireFooterDetailedClickEvent(e, "quick-links-click");
281
303
  }
@@ -295,7 +317,8 @@ let UDExFooter = UDExFooter_1 = class UDExFooter extends UI5Element {
295
317
  this.fireDecoratorEvent(eventName, { originalEvent: e });
296
318
  }
297
319
  fireFooterDetailedClickEvent(e, eventName) {
298
- const sourceNode = e.composedPath()[0];
320
+ const target = e.composedPath()[0];
321
+ const sourceNode = (target.closest("a") ?? target);
299
322
  const { innerText, dataset: { id, name } } = sourceNode;
300
323
  this.fireDecoratorEvent(eventName, {
301
324
  ...(!!id?.length && { id }),
@@ -359,6 +382,12 @@ __decorate([
359
382
  __decorate([
360
383
  property({ type: String })
361
384
  ], UDExFooter.prototype, "chatWithUsLink", void 0);
385
+ __decorate([
386
+ property({ type: String })
387
+ ], UDExFooter.prototype, "askJouleLink", void 0);
388
+ __decorate([
389
+ property({ type: String })
390
+ ], UDExFooter.prototype, "askJoulePosition", void 0);
362
391
  __decorate([
363
392
  property({ type: String })
364
393
  ], UDExFooter.prototype, "socialLinks", void 0);
@@ -452,6 +481,14 @@ UDExFooter = UDExFooter_1 = __decorate([
452
481
  */
453
482
  ,
454
483
  event("contact-chat-click", { bubbles: true })
484
+ /**
485
+ * Triggered on click interaction with "Ask Joule" link
486
+ * @public
487
+ * @param { MouseEvent | Event } originalEvent
488
+ * @allowPreventDefault
489
+ */
490
+ ,
491
+ event("ask-joule-click", { bubbles: true })
455
492
  /**
456
493
  * Triggered on click interaction with a link within "Quick Links" category
457
494
  * @public