@sapudex/web-components 2.5.0 → 2.7.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 (542) hide show
  1. package/cypress/specs/Accordion.cy.tsx +18 -10
  2. package/cypress/specs/Divider.cy.tsx +16 -0
  3. package/cypress/support/component-imports.instrumented.ts +2 -0
  4. package/cypress/support/component-imports.src.ts +4 -2
  5. package/dist/Accordion.d.ts +6 -5
  6. package/dist/Accordion.js +21 -20
  7. package/dist/Accordion.js.map +1 -1
  8. package/dist/AccordionItem.d.ts +1 -3
  9. package/dist/AccordionItem.js +17 -19
  10. package/dist/AccordionItem.js.map +1 -1
  11. package/dist/AccordionItemTemplate.d.ts +2 -0
  12. package/dist/AccordionItemTemplate.js +14 -0
  13. package/dist/AccordionItemTemplate.js.map +1 -0
  14. package/dist/AccordionTemplate.d.ts +2 -0
  15. package/dist/AccordionTemplate.js +11 -0
  16. package/dist/AccordionTemplate.js.map +1 -0
  17. package/dist/AssetsVariables.js +5 -1
  18. package/dist/AssetsVariables.js.map +1 -1
  19. package/dist/Avatar.d.ts +2 -1
  20. package/dist/Avatar.js +7 -9
  21. package/dist/Avatar.js.map +1 -1
  22. package/dist/AvatarTemplate.d.ts +2 -0
  23. package/dist/AvatarTemplate.js +6 -0
  24. package/dist/AvatarTemplate.js.map +1 -0
  25. package/dist/Badge.d.ts +1 -2
  26. package/dist/Badge.js +6 -9
  27. package/dist/Badge.js.map +1 -1
  28. package/dist/BadgeTemplate.d.ts +2 -0
  29. package/dist/BadgeTemplate.js +8 -0
  30. package/dist/BadgeTemplate.js.map +1 -0
  31. package/dist/Carousel.d.ts +16 -4
  32. package/dist/Carousel.js +21 -11
  33. package/dist/Carousel.js.map +1 -1
  34. package/dist/CarouselTemplate.d.ts +2 -0
  35. package/dist/CarouselTemplate.js +15 -0
  36. package/dist/CarouselTemplate.js.map +1 -0
  37. package/dist/ContactItemTemplate.js +2 -1
  38. package/dist/ContactItemTemplate.js.map +1 -1
  39. package/dist/CountrySelector.d.ts +1 -1
  40. package/dist/CountrySelector.js +6 -7
  41. package/dist/CountrySelector.js.map +1 -1
  42. package/dist/Divider.d.ts +10 -2
  43. package/dist/Divider.js +11 -4
  44. package/dist/Divider.js.map +1 -1
  45. package/dist/DividerTemplate.d.ts +2 -0
  46. package/dist/DividerTemplate.js +5 -0
  47. package/dist/DividerTemplate.js.map +1 -0
  48. package/dist/Dropdown.js +2 -1
  49. package/dist/Dropdown.js.map +1 -1
  50. package/dist/FilterMenu.d.ts +0 -7
  51. package/dist/FilterMenu.js +12 -12
  52. package/dist/FilterMenu.js.map +1 -1
  53. package/dist/List.js +1 -1
  54. package/dist/List.js.map +1 -1
  55. package/dist/MastheadCountrySelector.d.ts +8 -0
  56. package/dist/MastheadCountrySelector.js +28 -2
  57. package/dist/MastheadCountrySelector.js.map +1 -1
  58. package/dist/MastheadMenu.d.ts +1 -0
  59. package/dist/MastheadMenu.js +7 -3
  60. package/dist/MastheadMenu.js.map +1 -1
  61. package/dist/MastheadMobileMenu.d.ts +4 -0
  62. package/dist/MastheadMobileMenu.js +17 -3
  63. package/dist/MastheadMobileMenu.js.map +1 -1
  64. package/dist/MastheadProfileMenu.d.ts +8 -0
  65. package/dist/MastheadProfileMenu.js +26 -1
  66. package/dist/MastheadProfileMenu.js.map +1 -1
  67. package/dist/MastheadShell.d.ts +17 -0
  68. package/dist/MastheadShell.js +53 -15
  69. package/dist/MastheadShell.js.map +1 -1
  70. package/dist/Modal.js +2 -2
  71. package/dist/Modal.js.map +1 -1
  72. package/dist/Search.js +5 -4
  73. package/dist/Search.js.map +1 -1
  74. package/dist/SearchableListBase.d.ts +24 -2
  75. package/dist/SearchableListBase.js +50 -4
  76. package/dist/SearchableListBase.js.map +1 -1
  77. package/dist/SecondaryNavigation.js +1 -1
  78. package/dist/SecondaryNavigation.js.map +1 -1
  79. package/dist/SecondaryNavigationItem.js +1 -2
  80. package/dist/SecondaryNavigationItem.js.map +1 -1
  81. package/dist/SegmentedButton.js +6 -4
  82. package/dist/SegmentedButton.js.map +1 -1
  83. package/dist/SelectBox.d.ts +0 -7
  84. package/dist/SelectBox.js +10 -13
  85. package/dist/SelectBox.js.map +1 -1
  86. package/dist/TabNavigation.d.ts +5 -0
  87. package/dist/TabNavigation.js +8 -0
  88. package/dist/TabNavigation.js.map +1 -1
  89. package/dist/Table.js +1 -1
  90. package/dist/Table.js.map +1 -1
  91. package/dist/TextArea.js +1 -1
  92. package/dist/TextArea.js.map +1 -1
  93. package/dist/assets/InputSuggestions-09hxh-NH.js +2 -0
  94. package/dist/assets/{ListItemStandardExpandableTextTemplate-ClcY2jB2.js → ListItemStandardExpandableTextTemplate-3ixkeBt3.js} +3 -3
  95. package/dist/assets/bundle-S1uYREqT.css +1 -0
  96. package/dist/assets/bundle.esm-e2aCupGE.js +475 -0
  97. package/dist/assets/messagebundle_en-CKeTZNW3.js +1 -0
  98. package/dist/assets/parameters-bundle.css-B168-DcZ.js +2 -0
  99. package/dist/assets/parameters-bundle.css-B4OkERQ9.js +2 -0
  100. package/dist/assets/parameters-bundle.css-D1Mp0DP7.js +2 -0
  101. package/dist/assets/parameters-bundle.css-DPQMdjrz.js +2 -0
  102. package/dist/assets/parameters-bundle.css-DW-8EaO7.js +2 -0
  103. package/dist/assets/parameters-bundle.css-DpI130zX.js +2 -0
  104. package/dist/assets/parameters-bundle.css-DsEtCihj.js +2 -0
  105. package/dist/assets/parameters-bundle.css-y5CBgtzD.js +2 -0
  106. package/dist/css/themes/CountrySelector.css +1 -1
  107. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  108. package/dist/css/themes/MastheadItem.css +1 -1
  109. package/dist/css/themes/MastheadMenuItem.css +1 -1
  110. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  111. package/dist/css/themes/MastheadShell.css +1 -1
  112. package/dist/css/themes/RatingIndicator.css +1 -1
  113. package/dist/css/themes/Search.css +1 -1
  114. package/dist/css/themes/SearchableList.css +1 -1
  115. package/dist/css/themes/SegmentedButtonItem.css +1 -1
  116. package/dist/css/themes/Slider.css +1 -1
  117. package/dist/css/themes/TextArea.css +1 -1
  118. package/dist/custom-elements-internal.json +219 -41
  119. package/dist/custom-elements.json +211 -41
  120. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  121. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  122. package/dist/generated/i18n/i18n-defaults.js +2 -1
  123. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  124. package/dist/generated/json-imports/Themes-fetch.js +1 -1
  125. package/dist/generated/json-imports/Themes-fetch.js.map +1 -1
  126. package/dist/generated/json-imports/Themes-node.js +1 -1
  127. package/dist/generated/json-imports/Themes-node.js.map +1 -1
  128. package/dist/generated/json-imports/Themes.js +1 -1
  129. package/dist/generated/json-imports/Themes.js.map +1 -1
  130. package/dist/generated/json-imports/i18n-fetch.js +1 -1
  131. package/dist/generated/json-imports/i18n-fetch.js.map +1 -1
  132. package/dist/generated/json-imports/i18n-node.js +1 -1
  133. package/dist/generated/json-imports/i18n-node.js.map +1 -1
  134. package/dist/generated/json-imports/i18n.js +1 -1
  135. package/dist/generated/json-imports/i18n.js.map +1 -1
  136. package/dist/generated/templates/HeroBannerTemplate.lit.js +1 -1
  137. package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
  138. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +3 -3
  139. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
  140. package/dist/generated/templates/MastheadMenuTemplate.lit.js +3 -3
  141. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  142. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +2 -2
  143. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  144. package/dist/generated/templates/MastheadShellTemplate.lit.js +1 -1
  145. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  146. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +2 -2
  147. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  148. package/dist/generated/templates/SelectBoxTemplate.lit.js +1 -1
  149. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  150. package/dist/generated/themes/Accordion.css.js +2 -2
  151. package/dist/generated/themes/Accordion.css.js.map +1 -1
  152. package/dist/generated/themes/AccordionItem.css.js +2 -2
  153. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  154. package/dist/generated/themes/Avatar.css.js +2 -2
  155. package/dist/generated/themes/Avatar.css.js.map +1 -1
  156. package/dist/generated/themes/Badge.css.js +2 -2
  157. package/dist/generated/themes/Badge.css.js.map +1 -1
  158. package/dist/generated/themes/Breadcrumbs.css.js +2 -2
  159. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  160. package/dist/generated/themes/BreadcrumbsPopover.css.js +2 -2
  161. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  162. package/dist/generated/themes/Button.css.js +2 -2
  163. package/dist/generated/themes/Button.css.js.map +1 -1
  164. package/dist/generated/themes/Carousel.css.js +2 -2
  165. package/dist/generated/themes/Carousel.css.js.map +1 -1
  166. package/dist/generated/themes/Checkbox.css.js +2 -2
  167. package/dist/generated/themes/Checkbox.css.js.map +1 -1
  168. package/dist/generated/themes/Contact.css.js +2 -2
  169. package/dist/generated/themes/Contact.css.js.map +1 -1
  170. package/dist/generated/themes/ContactItem.css.js +2 -2
  171. package/dist/generated/themes/ContactItem.css.js.map +1 -1
  172. package/dist/generated/themes/ControlButton.css.js +2 -2
  173. package/dist/generated/themes/ControlButton.css.js.map +1 -1
  174. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  175. package/dist/generated/themes/CountrySelector.css.js +3 -3
  176. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  177. package/dist/generated/themes/DatePicker.css.js +2 -2
  178. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  179. package/dist/generated/themes/DatePickerPopover.css.js +2 -2
  180. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  181. package/dist/generated/themes/Divider.css.js +2 -2
  182. package/dist/generated/themes/Divider.css.js.map +1 -1
  183. package/dist/generated/themes/Dropdown.css.js +2 -2
  184. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  185. package/dist/generated/themes/EventRibbon.css.js +2 -2
  186. package/dist/generated/themes/EventRibbon.css.js.map +1 -1
  187. package/dist/generated/themes/FilterMenu.css.js +2 -2
  188. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  189. package/dist/generated/themes/Footer.css.js +2 -2
  190. package/dist/generated/themes/Footer.css.js.map +1 -1
  191. package/dist/generated/themes/HeroBanner.css.js +2 -2
  192. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  193. package/dist/generated/themes/InputGroup.css.js +2 -2
  194. package/dist/generated/themes/InputGroup.css.js.map +1 -1
  195. package/dist/generated/themes/Link.css.js +2 -2
  196. package/dist/generated/themes/Link.css.js.map +1 -1
  197. package/dist/generated/themes/List.css.js +2 -2
  198. package/dist/generated/themes/List.css.js.map +1 -1
  199. package/dist/generated/themes/ListGroupHeader.css.js +2 -2
  200. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  201. package/dist/generated/themes/ListItem.css.js +2 -2
  202. package/dist/generated/themes/ListItem.css.js.map +1 -1
  203. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  204. package/dist/generated/themes/MastheadCountrySelector.css.js +3 -3
  205. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  206. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  207. package/dist/generated/themes/MastheadItem.css.js +3 -3
  208. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  209. package/dist/generated/themes/MastheadMenu.css.js +2 -2
  210. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  211. package/dist/generated/themes/MastheadMenuItem.css.d.ts +1 -1
  212. package/dist/generated/themes/MastheadMenuItem.css.js +3 -3
  213. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  214. package/dist/generated/themes/MastheadMobileMenu.css.d.ts +1 -1
  215. package/dist/generated/themes/MastheadMobileMenu.css.js +3 -3
  216. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  217. package/dist/generated/themes/MastheadProfileMenu.css.js +2 -2
  218. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  219. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  220. package/dist/generated/themes/MastheadShell.css.js +3 -3
  221. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  222. package/dist/generated/themes/MediaPlayer.css.js +2 -2
  223. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  224. package/dist/generated/themes/MediaPlayerYoutube.css.js +2 -2
  225. package/dist/generated/themes/MediaPlayerYoutube.css.js.map +1 -1
  226. package/dist/generated/themes/MessageStrip.css.js +2 -2
  227. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  228. package/dist/generated/themes/Modal.css.js +2 -2
  229. package/dist/generated/themes/Modal.css.js.map +1 -1
  230. package/dist/generated/themes/Pagination.css.js +2 -2
  231. package/dist/generated/themes/Pagination.css.js.map +1 -1
  232. package/dist/generated/themes/PhoneNumberField.css.js +2 -2
  233. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  234. package/dist/generated/themes/ProgressBar.css.js +2 -2
  235. package/dist/generated/themes/ProgressBar.css.js.map +1 -1
  236. package/dist/generated/themes/Quote.css.js +2 -2
  237. package/dist/generated/themes/Quote.css.js.map +1 -1
  238. package/dist/generated/themes/RadioButton.css.js +2 -2
  239. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  240. package/dist/generated/themes/RatingBar.css.js +2 -2
  241. package/dist/generated/themes/RatingBar.css.js.map +1 -1
  242. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  243. package/dist/generated/themes/RatingIndicator.css.js +3 -3
  244. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  245. package/dist/generated/themes/Review.css.js +2 -2
  246. package/dist/generated/themes/Review.css.js.map +1 -1
  247. package/dist/generated/themes/ReviewItem.css.js +2 -2
  248. package/dist/generated/themes/ReviewItem.css.js.map +1 -1
  249. package/dist/generated/themes/Search.css.d.ts +1 -1
  250. package/dist/generated/themes/Search.css.js +3 -3
  251. package/dist/generated/themes/Search.css.js.map +1 -1
  252. package/dist/generated/themes/SearchSuggestions.css.js +2 -2
  253. package/dist/generated/themes/SearchSuggestions.css.js.map +1 -1
  254. package/dist/generated/themes/SearchableList.css.d.ts +1 -1
  255. package/dist/generated/themes/SearchableList.css.js +3 -3
  256. package/dist/generated/themes/SearchableList.css.js.map +1 -1
  257. package/dist/generated/themes/SecondaryNavigation.css.js +2 -2
  258. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  259. package/dist/generated/themes/SecondaryNavigationItem.css.js +2 -2
  260. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  261. package/dist/generated/themes/SecondaryNavigationSubItem.css.js +2 -2
  262. package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -1
  263. package/dist/generated/themes/SegmentedButton.css.js +2 -2
  264. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  265. package/dist/generated/themes/SegmentedButtonItem.css.d.ts +1 -1
  266. package/dist/generated/themes/SegmentedButtonItem.css.js +3 -3
  267. package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
  268. package/dist/generated/themes/SelectBox.css.js +2 -2
  269. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  270. package/dist/generated/themes/SideNavigation.css.js +2 -2
  271. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  272. package/dist/generated/themes/SideNavigationGroup.css.js +2 -2
  273. package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
  274. package/dist/generated/themes/SideNavigationItem.css.js +2 -2
  275. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  276. package/dist/generated/themes/SideNavigationMobile.css.js +2 -2
  277. package/dist/generated/themes/SideNavigationMobile.css.js.map +1 -1
  278. package/dist/generated/themes/SideNavigationMobileDropdown.css.js +2 -2
  279. package/dist/generated/themes/SideNavigationMobileDropdown.css.js.map +1 -1
  280. package/dist/generated/themes/SideNavigationSubItem.css.js +2 -2
  281. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  282. package/dist/generated/themes/Slider.css.d.ts +1 -1
  283. package/dist/generated/themes/Slider.css.js +3 -3
  284. package/dist/generated/themes/Slider.css.js.map +1 -1
  285. package/dist/generated/themes/StatusBadge.css.js +2 -2
  286. package/dist/generated/themes/StatusBadge.css.js.map +1 -1
  287. package/dist/generated/themes/StatusMessage.css.js +2 -2
  288. package/dist/generated/themes/StatusMessage.css.js.map +1 -1
  289. package/dist/generated/themes/StepInput.css.js +2 -2
  290. package/dist/generated/themes/StepInput.css.js.map +1 -1
  291. package/dist/generated/themes/Switch.css.js +2 -2
  292. package/dist/generated/themes/Switch.css.js.map +1 -1
  293. package/dist/generated/themes/TabInOverflow.css.js +2 -2
  294. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  295. package/dist/generated/themes/TabNavigation.css.js +2 -2
  296. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  297. package/dist/generated/themes/Table.css.js +2 -2
  298. package/dist/generated/themes/Table.css.js.map +1 -1
  299. package/dist/generated/themes/TableCell.css.js +2 -2
  300. package/dist/generated/themes/TableCell.css.js.map +1 -1
  301. package/dist/generated/themes/TableCellBase.css.js +2 -2
  302. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  303. package/dist/generated/themes/TableGroupRow.css.js +2 -2
  304. package/dist/generated/themes/TableGroupRow.css.js.map +1 -1
  305. package/dist/generated/themes/TableHeaderCell.css.js +2 -2
  306. package/dist/generated/themes/TableHeaderCell.css.js.map +1 -1
  307. package/dist/generated/themes/TableRowBase.css.js +2 -2
  308. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  309. package/dist/generated/themes/Tag.css.js +2 -2
  310. package/dist/generated/themes/Tag.css.js.map +1 -1
  311. package/dist/generated/themes/TagGroup.css.js +2 -2
  312. package/dist/generated/themes/TagGroup.css.js.map +1 -1
  313. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  314. package/dist/generated/themes/TextArea.css.js +3 -3
  315. package/dist/generated/themes/TextArea.css.js.map +1 -1
  316. package/dist/generated/themes/TextField.css.js +2 -2
  317. package/dist/generated/themes/TextField.css.js.map +1 -1
  318. package/dist/generated/themes/Tile.css.js +2 -2
  319. package/dist/generated/themes/Tile.css.js.map +1 -1
  320. package/dist/generated/themes/Toast.css.js +2 -2
  321. package/dist/generated/themes/Toast.css.js.map +1 -1
  322. package/dist/generated/themes/Tooltip.css.js +2 -2
  323. package/dist/generated/themes/Tooltip.css.js.map +1 -1
  324. package/dist/generated/themes/TruncatedText.css.js +2 -2
  325. package/dist/generated/themes/TruncatedText.css.js.map +1 -1
  326. package/dist/generated/themes/Upload.css.js +2 -2
  327. package/dist/generated/themes/Upload.css.js.map +1 -1
  328. package/dist/generated/themes/UploadItem.css.js +2 -2
  329. package/dist/generated/themes/UploadItem.css.js.map +1 -1
  330. package/dist/generated/themes/Wizard.css.js +2 -2
  331. package/dist/generated/themes/Wizard.css.js.map +1 -1
  332. package/dist/generated/themes/WizardTab.css.js +2 -2
  333. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  334. package/dist/messagebundle.properties +3 -0
  335. package/dist/messagebundle_en.properties +1 -0
  336. package/dist/types/SearchableListBase.d.ts +5 -0
  337. package/dist/types/SearchableListBase.js +6 -0
  338. package/dist/types/SearchableListBase.js.map +1 -1
  339. package/dist/utils/getEffectiveScrollbarStyle.d.ts +4 -0
  340. package/dist/utils/getEffectiveScrollbarStyle.js +45 -0
  341. package/dist/utils/getEffectiveScrollbarStyle.js.map +1 -0
  342. package/dist/vscode.html-custom-data.json +40 -15
  343. package/dist/web-types.json +73 -27
  344. package/package.json +7 -7
  345. package/src/Accordion.ts +38 -31
  346. package/src/AccordionItem.ts +23 -27
  347. package/src/AccordionItemTemplate.tsx +54 -0
  348. package/src/AccordionTemplate.tsx +37 -0
  349. package/src/AssetsVariables.ts +5 -1
  350. package/src/Avatar.ts +9 -11
  351. package/src/AvatarTemplate.tsx +22 -0
  352. package/src/Badge.ts +8 -12
  353. package/src/BadgeTemplate.tsx +22 -0
  354. package/src/Carousel.ts +30 -24
  355. package/src/CarouselTemplate.tsx +56 -0
  356. package/src/ContactItemTemplate.tsx +2 -1
  357. package/src/CountrySelector.ts +9 -10
  358. package/src/Divider.ts +13 -5
  359. package/src/DividerTemplate.tsx +11 -0
  360. package/src/Dropdown.ts +2 -1
  361. package/src/FilterMenu.ts +15 -18
  362. package/src/HeroBanner.hbs +1 -0
  363. package/src/List.ts +1 -1
  364. package/src/MastheadCountrySelector.hbs +6 -10
  365. package/src/MastheadCountrySelector.ts +33 -0
  366. package/src/MastheadMenu.hbs +3 -3
  367. package/src/MastheadMenu.ts +10 -3
  368. package/src/MastheadMobileMenu.hbs +1 -3
  369. package/src/MastheadMobileMenu.ts +23 -3
  370. package/src/MastheadProfileMenu.ts +35 -1
  371. package/src/MastheadShell.hbs +29 -29
  372. package/src/MastheadShell.ts +65 -16
  373. package/src/Modal.ts +2 -2
  374. package/src/Search.hbs +1 -1
  375. package/src/Search.ts +5 -4
  376. package/src/SearchableListBase.hbs +7 -1
  377. package/src/SearchableListBase.ts +65 -9
  378. package/src/SecondaryNavigation.ts +1 -1
  379. package/src/SecondaryNavigationItem.ts +1 -2
  380. package/src/SegmentedButton.ts +7 -4
  381. package/src/SelectBox.hbs +1 -0
  382. package/src/SelectBox.ts +13 -19
  383. package/src/TabNavigation.ts +13 -0
  384. package/src/Table.ts +1 -1
  385. package/src/TextArea.ts +1 -1
  386. package/src/generated/i18n/i18n-defaults.ts +2 -2
  387. package/src/generated/json-imports/Themes-fetch.ts +1 -1
  388. package/src/generated/json-imports/Themes-node.ts +1 -1
  389. package/src/generated/json-imports/Themes.ts +1 -1
  390. package/src/generated/json-imports/i18n-fetch.ts +1 -1
  391. package/src/generated/json-imports/i18n-node.ts +1 -1
  392. package/src/generated/json-imports/i18n.ts +1 -1
  393. package/src/generated/templates/HeroBannerTemplate.lit.ts +1 -1
  394. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +3 -3
  395. package/src/generated/templates/MastheadMenuTemplate.lit.ts +3 -3
  396. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +2 -2
  397. package/src/generated/templates/MastheadShellTemplate.lit.ts +1 -1
  398. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +2 -2
  399. package/src/generated/templates/SelectBoxTemplate.lit.ts +1 -1
  400. package/src/generated/themes/Accordion.css.ts +2 -2
  401. package/src/generated/themes/AccordionItem.css.ts +2 -2
  402. package/src/generated/themes/Avatar.css.ts +2 -2
  403. package/src/generated/themes/Badge.css.ts +2 -2
  404. package/src/generated/themes/Breadcrumbs.css.ts +2 -2
  405. package/src/generated/themes/BreadcrumbsPopover.css.ts +2 -2
  406. package/src/generated/themes/Button.css.ts +2 -2
  407. package/src/generated/themes/Carousel.css.ts +2 -2
  408. package/src/generated/themes/Checkbox.css.ts +2 -2
  409. package/src/generated/themes/Contact.css.ts +2 -2
  410. package/src/generated/themes/ContactItem.css.ts +2 -2
  411. package/src/generated/themes/ControlButton.css.ts +2 -2
  412. package/src/generated/themes/CountrySelector.css.ts +3 -3
  413. package/src/generated/themes/DatePicker.css.ts +2 -2
  414. package/src/generated/themes/DatePickerPopover.css.ts +2 -2
  415. package/src/generated/themes/Divider.css.ts +2 -2
  416. package/src/generated/themes/Dropdown.css.ts +2 -2
  417. package/src/generated/themes/EventRibbon.css.ts +2 -2
  418. package/src/generated/themes/FilterMenu.css.ts +2 -2
  419. package/src/generated/themes/Footer.css.ts +2 -2
  420. package/src/generated/themes/HeroBanner.css.ts +2 -2
  421. package/src/generated/themes/InputGroup.css.ts +2 -2
  422. package/src/generated/themes/Link.css.ts +2 -2
  423. package/src/generated/themes/List.css.ts +2 -2
  424. package/src/generated/themes/ListGroupHeader.css.ts +2 -2
  425. package/src/generated/themes/ListItem.css.ts +2 -2
  426. package/src/generated/themes/MastheadCountrySelector.css.ts +3 -3
  427. package/src/generated/themes/MastheadItem.css.ts +3 -3
  428. package/src/generated/themes/MastheadMenu.css.ts +2 -2
  429. package/src/generated/themes/MastheadMenuItem.css.ts +3 -3
  430. package/src/generated/themes/MastheadMobileMenu.css.ts +3 -3
  431. package/src/generated/themes/MastheadProfileMenu.css.ts +2 -2
  432. package/src/generated/themes/MastheadShell.css.ts +3 -3
  433. package/src/generated/themes/MediaPlayer.css.ts +2 -2
  434. package/src/generated/themes/MediaPlayerYoutube.css.ts +2 -2
  435. package/src/generated/themes/MessageStrip.css.ts +2 -2
  436. package/src/generated/themes/Modal.css.ts +2 -2
  437. package/src/generated/themes/Pagination.css.ts +2 -2
  438. package/src/generated/themes/PhoneNumberField.css.ts +2 -2
  439. package/src/generated/themes/ProgressBar.css.ts +2 -2
  440. package/src/generated/themes/Quote.css.ts +2 -2
  441. package/src/generated/themes/RadioButton.css.ts +2 -2
  442. package/src/generated/themes/RatingBar.css.ts +2 -2
  443. package/src/generated/themes/RatingIndicator.css.ts +3 -3
  444. package/src/generated/themes/Review.css.ts +2 -2
  445. package/src/generated/themes/ReviewItem.css.ts +2 -2
  446. package/src/generated/themes/Search.css.ts +3 -3
  447. package/src/generated/themes/SearchSuggestions.css.ts +2 -2
  448. package/src/generated/themes/SearchableList.css.ts +3 -3
  449. package/src/generated/themes/SecondaryNavigation.css.ts +2 -2
  450. package/src/generated/themes/SecondaryNavigationItem.css.ts +2 -2
  451. package/src/generated/themes/SecondaryNavigationSubItem.css.ts +2 -2
  452. package/src/generated/themes/SegmentedButton.css.ts +2 -2
  453. package/src/generated/themes/SegmentedButtonItem.css.ts +3 -3
  454. package/src/generated/themes/SelectBox.css.ts +2 -2
  455. package/src/generated/themes/SideNavigation.css.ts +2 -2
  456. package/src/generated/themes/SideNavigationGroup.css.ts +2 -2
  457. package/src/generated/themes/SideNavigationItem.css.ts +2 -2
  458. package/src/generated/themes/SideNavigationMobile.css.ts +2 -2
  459. package/src/generated/themes/SideNavigationMobileDropdown.css.ts +2 -2
  460. package/src/generated/themes/SideNavigationSubItem.css.ts +2 -2
  461. package/src/generated/themes/Slider.css.ts +3 -3
  462. package/src/generated/themes/StatusBadge.css.ts +2 -2
  463. package/src/generated/themes/StatusMessage.css.ts +2 -2
  464. package/src/generated/themes/StepInput.css.ts +2 -2
  465. package/src/generated/themes/Switch.css.ts +2 -2
  466. package/src/generated/themes/TabInOverflow.css.ts +2 -2
  467. package/src/generated/themes/TabNavigation.css.ts +2 -2
  468. package/src/generated/themes/Table.css.ts +2 -2
  469. package/src/generated/themes/TableCell.css.ts +2 -2
  470. package/src/generated/themes/TableCellBase.css.ts +2 -2
  471. package/src/generated/themes/TableGroupRow.css.ts +2 -2
  472. package/src/generated/themes/TableHeaderCell.css.ts +2 -2
  473. package/src/generated/themes/TableRowBase.css.ts +2 -2
  474. package/src/generated/themes/Tag.css.ts +2 -2
  475. package/src/generated/themes/TagGroup.css.ts +2 -2
  476. package/src/generated/themes/TextArea.css.ts +3 -3
  477. package/src/generated/themes/TextField.css.ts +2 -2
  478. package/src/generated/themes/Tile.css.ts +2 -2
  479. package/src/generated/themes/Toast.css.ts +2 -2
  480. package/src/generated/themes/Tooltip.css.ts +2 -2
  481. package/src/generated/themes/TruncatedText.css.ts +2 -2
  482. package/src/generated/themes/Upload.css.ts +2 -2
  483. package/src/generated/themes/UploadItem.css.ts +2 -2
  484. package/src/generated/themes/Wizard.css.ts +2 -2
  485. package/src/generated/themes/WizardTab.css.ts +2 -2
  486. package/src/i18n/messagebundle.properties +3 -0
  487. package/src/i18n/messagebundle_en.properties +1 -0
  488. package/src/themes/CountrySelector.css +11 -0
  489. package/src/themes/List.css +1 -0
  490. package/src/themes/MastheadCountrySelector.css +11 -0
  491. package/src/themes/MastheadItem.css +5 -6
  492. package/src/themes/MastheadMenuItem.css +7 -0
  493. package/src/themes/MastheadMobileMenu.css +1 -0
  494. package/src/themes/MastheadShell.css +8 -4
  495. package/src/themes/Search.css +3 -1
  496. package/src/themes/SearchableList.css +15 -0
  497. package/src/themes/SegmentedButtonItem.css +2 -2
  498. package/src/themes/TextArea.css +0 -7
  499. package/src/types/SearchableListBase.ts +6 -0
  500. package/src/utils/getEffectiveScrollbarStyle.ts +48 -0
  501. package/dist/assets/InputSuggestions-RQHqFxZ9.js +0 -2
  502. package/dist/assets/bundle-C9ZlnwwH.css +0 -1
  503. package/dist/assets/bundle.esm-DGH8Pvav.js +0 -399
  504. package/dist/assets/messagebundle_en-DXEe5nWA.js +0 -1
  505. package/dist/assets/parameters-bundle.css-1GGBOW8m.js +0 -2
  506. package/dist/assets/parameters-bundle.css-A9eeRg2R.js +0 -2
  507. package/dist/assets/parameters-bundle.css-COBI_9-U.js +0 -2
  508. package/dist/assets/parameters-bundle.css-CgAoZ-Ir.js +0 -2
  509. package/dist/assets/parameters-bundle.css-DuFHHRNK.js +0 -2
  510. package/dist/assets/parameters-bundle.css-Pf68NO0T.js +0 -2
  511. package/dist/assets/parameters-bundle.css-aX_t_-9o.js +0 -2
  512. package/dist/assets/parameters-bundle.css-rNSryFKH.js +0 -2
  513. package/dist/generated/templates/AccordionItemTemplate.lit.d.ts +0 -3
  514. package/dist/generated/templates/AccordionItemTemplate.lit.js +0 -8
  515. package/dist/generated/templates/AccordionItemTemplate.lit.js.map +0 -1
  516. package/dist/generated/templates/AccordionTemplate.lit.d.ts +0 -3
  517. package/dist/generated/templates/AccordionTemplate.lit.js +0 -10
  518. package/dist/generated/templates/AccordionTemplate.lit.js.map +0 -1
  519. package/dist/generated/templates/AvatarTemplate.lit.d.ts +0 -3
  520. package/dist/generated/templates/AvatarTemplate.lit.js +0 -9
  521. package/dist/generated/templates/AvatarTemplate.lit.js.map +0 -1
  522. package/dist/generated/templates/BadgeTemplate.lit.d.ts +0 -3
  523. package/dist/generated/templates/BadgeTemplate.lit.js +0 -9
  524. package/dist/generated/templates/BadgeTemplate.lit.js.map +0 -1
  525. package/dist/generated/templates/CarouselTemplate.lit.d.ts +0 -3
  526. package/dist/generated/templates/CarouselTemplate.lit.js +0 -10
  527. package/dist/generated/templates/CarouselTemplate.lit.js.map +0 -1
  528. package/dist/generated/templates/DividerTemplate.lit.d.ts +0 -3
  529. package/dist/generated/templates/DividerTemplate.lit.js +0 -7
  530. package/dist/generated/templates/DividerTemplate.lit.js.map +0 -1
  531. package/src/Accordion.hbs +0 -25
  532. package/src/AccordionItem.hbs +0 -37
  533. package/src/Avatar.hbs +0 -19
  534. package/src/Badge.hbs +0 -16
  535. package/src/Carousel.hbs +0 -45
  536. package/src/Divider.hbs +0 -1
  537. package/src/generated/templates/AccordionItemTemplate.lit.ts +0 -12
  538. package/src/generated/templates/AccordionTemplate.lit.ts +0 -14
  539. package/src/generated/templates/AvatarTemplate.lit.ts +0 -13
  540. package/src/generated/templates/BadgeTemplate.lit.ts +0 -13
  541. package/src/generated/templates/CarouselTemplate.lit.ts +0 -14
  542. package/src/generated/templates/DividerTemplate.lit.ts +0 -11
@@ -4,6 +4,8 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
5
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
6
6
  import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
7
+ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
8
+ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
9
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
8
10
  import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
9
11
  import {
@@ -15,6 +17,7 @@ import MastheadCountrySelectorTemplate from "./generated/templates/MastheadCount
15
17
  import AnalyticsName from "./types/AnalyticsName.js";
16
18
  import { BreakpointUtils } from "./utils/Breakpoints.js";
17
19
  import type UDExMastheadShell from "./MastheadShell.js";
20
+ import { NO_MATCHES_FOUND, RESULT_RETURNED } from "./generated/i18n/i18n-defaults.js";
18
21
 
19
22
  // Styles
20
23
  import MastheadCountrySelectorCss from "./generated/themes/MastheadCountrySelector.css.js";
@@ -193,7 +196,12 @@ class UDExMastheadCountrySelector extends UI5Element {
193
196
  _activeCountries!: Array<Country>;
194
197
  _shouldFocusBackBtn!: boolean;
195
198
  _shouldFocusRegionByIndex!: boolean;
199
+ _accSearchResultInfo?: string;
196
200
  _activeRegionIndex!: number;
201
+ _mastheadShell!: UDExMastheadShell;
202
+
203
+ @i18n("@sapudex/web-components")
204
+ static i18nBundle: I18nBundle;
197
205
 
198
206
  constructor() {
199
207
  super();
@@ -201,6 +209,7 @@ class UDExMastheadCountrySelector extends UI5Element {
201
209
  }
202
210
 
203
211
  onAfterRendering(): void {
212
+ this._mastheadShell = this.mastheadShell;
204
213
  this.handleFocusItem();
205
214
  this.setTabIndexForItems();
206
215
  this.handleDirection();
@@ -222,6 +231,13 @@ class UDExMastheadCountrySelector extends UI5Element {
222
231
  this.fireEventRegionItemClick(e);
223
232
  }
224
233
 
234
+ handleCountryClick(e: CustomEvent): void {
235
+ this.fireEventCountryItemClick(e);
236
+ if (this._mastheadShell && this.isMobile) {
237
+ this.closeMenu();
238
+ }
239
+ }
240
+
225
241
  handleKeyDown(e: KeyboardEvent): void {
226
242
  const item = e.target as UDExMastheadMenuItem;
227
243
 
@@ -291,6 +307,10 @@ class UDExMastheadCountrySelector extends UI5Element {
291
307
  this.setActiveCountries(this._activeRegion.countries.filter(country => country.displayTitle.toLowerCase().includes(searchTerm)));
292
308
  }
293
309
 
310
+ this._accSearchResultInfo = this._activeCountries.length
311
+ ? `${this._activeCountries.length} ${this.resultReturnedText}`
312
+ : this.noMatchesFoundText;
313
+
294
314
  this._shouldFocusBackBtn = false;
295
315
  this.fireDecoratorEvent("country-selector-search", {
296
316
  value: e.detail.value,
@@ -468,6 +488,19 @@ class UDExMastheadCountrySelector extends UI5Element {
468
488
  });
469
489
  }
470
490
 
491
+ closeMenu():void {
492
+ this._mastheadShell.closeMobileMenu();
493
+ this._mastheadShell.mobileBtn?.focus();
494
+ }
495
+
496
+ get noMatchesFoundText(): string {
497
+ return UDExMastheadCountrySelector.i18nBundle.getText(NO_MATCHES_FOUND);
498
+ }
499
+
500
+ get resultReturnedText(): string {
501
+ return UDExMastheadCountrySelector.i18nBundle.getText(RESULT_RETURNED);
502
+ }
503
+
471
504
  get items(): Array<UDExMastheadMenuItem> {
472
505
  const items = this.shadowRoot?.querySelectorAll<UDExMastheadMenuItem>(".udex-masthead-country-selector__item");
473
506
  return items ? Array.from(items) : [];
@@ -42,7 +42,9 @@
42
42
  category="{{this.category}}">
43
43
  {{#each this.items}}
44
44
  <li>
45
- {{#if this.url}}
45
+ {{#if this.isDivider}}
46
+ <udex-divider class="udex-masthead-menu__item-divider"></udex-divider>
47
+ {{else}}
46
48
  <udex-masthead-menu-item
47
49
  part="menu-item"
48
50
  exportparts="menu-item"
@@ -53,8 +55,6 @@
53
55
  label="{{this.title}}"
54
56
  exportparts="badge">
55
57
  </udex-masthead-menu-item>
56
- {{else}}
57
- <udex-divider class="udex-masthead-menu__item-divider"></udex-divider>
58
58
  {{/if}}
59
59
  </li>
60
60
  {{/each}}
@@ -24,6 +24,7 @@ export type Item = {
24
24
  title: string;
25
25
  url: string;
26
26
  externalLink: boolean;
27
+ isDivider?: boolean;
27
28
  };
28
29
 
29
30
  export type SubMenuLinkItem = {
@@ -178,10 +179,16 @@ class UDExMastheadMenu extends UI5Element {
178
179
  get itemsList(): Array<MenuItem> {
179
180
  let id = 1;
180
181
  const parsedItems: Array<MenuItem> = parseArrayFromString(this.subItems);
182
+
181
183
  return parsedItems.map((mainItem: MenuItem) => {
182
- mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((category: SubMenuLinkItem) => {
183
- category.categoryId = `${id++}`;
184
- return category;
184
+ mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((subMenu: SubMenuLinkItem) => {
185
+ subMenu.categoryId = `${id++}`;
186
+ subMenu.items = subMenu.items.map((item: Item) => ({
187
+ ...item,
188
+ ...(item.title === "-" && { isDivider: true }),
189
+ }));
190
+
191
+ return subMenu;
185
192
  });
186
193
 
187
194
  return mainItem;
@@ -102,8 +102,7 @@
102
102
  first-level-btn
103
103
  first-level
104
104
  has-border
105
- icon-end
106
- first-level>
105
+ icon-end>
107
106
  </udex-masthead-menu-item>
108
107
  {{else}}
109
108
  <udex-masthead-menu-item
@@ -139,7 +138,6 @@
139
138
  <udex-masthead-menu-item
140
139
  part="menu-item"
141
140
  @click="{{../handleMenuCategoryClick}}"
142
- url="{{this.url}}"
143
141
  id="{{@index}}"
144
142
  label="{{this.category}}"
145
143
  aria-has-popup="true"
@@ -15,10 +15,14 @@ import UDExMastheadMenuItem, { UDExItemType } from "./MastheadMenuItem.js";
15
15
  import { OVERVIEW } from "./generated/i18n/i18n-defaults.js";
16
16
  import AnalyticsName from "./types/AnalyticsName.js";
17
17
  import MastheadMobileMenuTemplate from "./generated/templates/MastheadMobileMenuTemplate.lit.js";
18
+ import type UDExMastheadShell from "./MastheadShell.js";
18
19
 
19
20
  // Styles
20
21
  import MastheadMobileMenuCss from "./generated/themes/MastheadMobileMenu.css.js";
21
22
 
23
+ const INDEX_OFFSET_WITH_OVERVIEW = 2;
24
+ const INDEX_OFFSET_WITHOUT_OVERVIEW = 1;
25
+
22
26
  type UDExMastheadMobileMenuItemClickEventDetail = {
23
27
  originalEvent: PointerEvent | KeyboardEvent,
24
28
  item: UDExMastheadMenuItem,
@@ -130,8 +134,10 @@ class UDExMastheadMobileMenu extends UI5Element {
130
134
  _shouldFocusExploreBtn!: boolean;
131
135
  _focusedItemIndex!: number;
132
136
  _navItem?: UDExMastheadMenuItem;
137
+ _mastheadShell!: UDExMastheadShell;
133
138
 
134
139
  onAfterRendering() {
140
+ this._mastheadShell = this.mastheadShell;
135
141
  this.handleMenuMode();
136
142
  this.setTabIndexForItems();
137
143
  this.handleFocusItem();
@@ -171,7 +177,7 @@ class UDExMastheadMobileMenu extends UI5Element {
171
177
  handleBackToCategories(e: PointerEvent) {
172
178
  e.stopPropagation();
173
179
  this.showCategories();
174
- this.setFocusItemByIndex(this._category.index + 1);
180
+ this.setFocusItemByIndex(this._category.index);
175
181
  this.fireMobileItemEvent(e);
176
182
  }
177
183
 
@@ -280,7 +286,7 @@ class UDExMastheadMobileMenu extends UI5Element {
280
286
 
281
287
  if (target.hasAttribute("is-back-to-categories")) {
282
288
  this.showCategories();
283
- this.setFocusItemByIndex(this._category.index + 1);
289
+ this.setFocusItemByIndex(this._category.index);
284
290
  this.fireMobileItemEvent(e);
285
291
  }
286
292
 
@@ -400,8 +406,9 @@ class UDExMastheadMobileMenu extends UI5Element {
400
406
 
401
407
  openCategoryItems(e: Event) {
402
408
  const item = e.target as UDExMastheadMenuItem;
409
+ const indexOffset = this._clickedItem.href ? INDEX_OFFSET_WITH_OVERVIEW : INDEX_OFFSET_WITHOUT_OVERVIEW;
403
410
  const index = Number(item.getAttribute("id"));
404
- this._category = { ...this._categories[index], index };
411
+ this._category = { ...this._categories[index], index: index + indexOffset };
405
412
  this._showCategories = false;
406
413
  this._showCategoryItems = true;
407
414
  }
@@ -432,6 +439,10 @@ class UDExMastheadMobileMenu extends UI5Element {
432
439
  };
433
440
 
434
441
  this.fireDecoratorEvent("item-click", eventDetail);
442
+
443
+ if (item.url && this._mastheadShell) {
444
+ this.closeMenu();
445
+ }
435
446
  }
436
447
 
437
448
  fireExploreSapMobileButton(e: PointerEvent | KeyboardEvent) {
@@ -526,6 +537,15 @@ class UDExMastheadMobileMenu extends UI5Element {
526
537
  return analyticsPath;
527
538
  }
528
539
 
540
+ closeMenu():void {
541
+ this._mastheadShell.closeMobileMenu();
542
+ this._mastheadShell.mobileBtn?.focus();
543
+ }
544
+
545
+ get mastheadShell(): UDExMastheadShell {
546
+ return document.querySelector<UDExMastheadShell>("[udex-masthead-shell]")!;
547
+ }
548
+
529
549
  get exploreBtnMenu(): UDExMastheadMenuItem {
530
550
  return this.shadowRoot!.querySelector<UDExMastheadMenuItem>(".udex-masthead-mobile-menu__explore-btn")!;
531
551
  }
@@ -12,6 +12,7 @@ import MastheadProfileMenuTemplate from "./generated/templates/MastheadProfileMe
12
12
  import type UDExMastheadMenuItem from "./MastheadMenuItem.js";
13
13
  import parseArrayFromString from "./utils/parseArrayFromString.js";
14
14
  import AnalyticsName from "./types/AnalyticsName.js";
15
+ import type UDExMastheadShell from "./MastheadShell.js";
15
16
 
16
17
  // Styles
17
18
  import MastheadProfileMenuCss from "./generated/themes/MastheadProfileMenu.css.js";
@@ -120,7 +121,27 @@ class UDExMastheadProfileMenu extends UI5Element {
120
121
  @i18n("@sapudex/web-components")
121
122
  static i18nBundle: I18nBundle;
122
123
 
124
+ _mastheadShell!: UDExMastheadShell;
125
+
126
+ onAfterRendering(): void {
127
+ this._mastheadShell = this.mastheadShell;
128
+ }
129
+
123
130
  handleUserLogoutItemClick(e: PointerEvent): void {
131
+ this.fireLogoutItemClick(e);
132
+ if (this.shouldCloseMenu) {
133
+ this.closeMenu();
134
+ }
135
+ }
136
+
137
+ handleProfileMenuItemClick(e: CustomEvent): void {
138
+ this.fireMenuItemClick(e);
139
+ if (this.shouldCloseMenu) {
140
+ this.closeMenu();
141
+ }
142
+ }
143
+
144
+ fireLogoutItemClick(e: PointerEvent): void {
124
145
  const item = e.target as UDExMastheadMenuItem;
125
146
 
126
147
  this.fireDecoratorEvent("logout", {
@@ -131,7 +152,7 @@ class UDExMastheadProfileMenu extends UI5Element {
131
152
  });
132
153
  }
133
154
 
134
- handleProfileMenuItemClick(e: CustomEvent): void {
155
+ fireMenuItemClick(e: CustomEvent): void {
135
156
  const { item, originalEvent } = e.detail;
136
157
 
137
158
  this.fireDecoratorEvent("profile-item-click", {
@@ -142,6 +163,15 @@ class UDExMastheadProfileMenu extends UI5Element {
142
163
  });
143
164
  }
144
165
 
166
+ closeMenu():void {
167
+ this._mastheadShell.closeMobileMenu();
168
+ this._mastheadShell.mobileBtn?.focus();
169
+ }
170
+
171
+ get shouldCloseMenu(): boolean {
172
+ return this._mastheadShell && this._mastheadShell.isMobileMenuMode;
173
+ }
174
+
145
175
  get linksList(): string {
146
176
  return this.links ? JSON.stringify([{
147
177
  subMenuLinkItems: JSON.parse(this.links),
@@ -163,6 +193,10 @@ class UDExMastheadProfileMenu extends UI5Element {
163
193
  get logoutText(): string {
164
194
  return UDExMastheadProfileMenu.i18nBundle.getText(LOGOUT);
165
195
  }
196
+
197
+ get mastheadShell(): UDExMastheadShell {
198
+ return document.querySelector<UDExMastheadShell>("[udex-masthead-shell]")!;
199
+ }
166
200
  }
167
201
 
168
202
  UDExMastheadProfileMenu.define();
@@ -52,7 +52,7 @@
52
52
  {{/if}}
53
53
  {{/if}}
54
54
 
55
- <div class="udex-masthead-shell__right-menu">
55
+ <div class="{{rightMenuClass}}">
56
56
  {{#if hasMobileMenuButtons}}
57
57
  <udex-masthead-item
58
58
  @ui5-item-click="{{handleOpenMobileMenu}}"
@@ -72,47 +72,47 @@
72
72
  </div>
73
73
  {{/if}}
74
74
  {{#if hasSearch}}
75
- <div class="udex-masthead-shell__search-icon udex-masthead-shell__item_icon">
76
- <udex-masthead-item
75
+ <div class="udex-masthead-shell__search-icon udex-masthead-shell__item_icon">
76
+ <udex-masthead-item
77
77
  class="udex-masthead-shell__search-btn"
78
78
  icon="search"
79
79
  part="search-button"
80
80
  @click="{{handleSearchClick}}"
81
81
  accessible-name="search">
82
- </udex-masthead-item>
83
- </div>
82
+ </udex-masthead-item>
83
+ </div>
84
84
  {{/if}}
85
85
  {{#if hasCart}}
86
- <div
87
- class="udex-masthead-shell__cart udex-masthead-shell__item_icon"
88
- @ui5-item-click="{{setSelectedItem}}"
89
- @click="{{handleCartClick}}">
90
- <slot name="cart"></slot>
91
- </div>
86
+ <div
87
+ class="udex-masthead-shell__cart udex-masthead-shell__item_icon"
88
+ @ui5-item-click="{{setSelectedItem}}"
89
+ @click="{{handleCartClick}}">
90
+ <slot name="cart"></slot>
91
+ </div>
92
92
  {{/if}}
93
93
  {{#if hasSupport}}
94
- <div
95
- class="udex-masthead-shell__support udex-masthead-shell__item_icon"
96
- @ui5-item-click="{{setSelectedItem}}"
97
- @click="{{handleSupportClick}}">
98
- <slot name="support"></slot>
99
- </div>
94
+ <div
95
+ class="udex-masthead-shell__support udex-masthead-shell__item_icon"
96
+ @ui5-item-click="{{setSelectedItem}}"
97
+ @click="{{handleSupportClick}}">
98
+ <slot name="support"></slot>
99
+ </div>
100
100
  {{/if}}
101
101
  {{#if hasProfile}}
102
- <div
103
- class="udex-masthead-shell__profile udex-masthead-shell__item_icon"
104
- @ui5-item-click="{{setSelectedItem}}"
105
- @click="{{handleProfileClick}}">
106
- <slot name="profile"></slot>
107
- </div>
102
+ <div
103
+ class="udex-masthead-shell__profile udex-masthead-shell__item_icon"
104
+ @ui5-item-click="{{setSelectedItem}}"
105
+ @click="{{handleProfileClick}}">
106
+ <slot name="profile"></slot>
107
+ </div>
108
108
  {{/if}}
109
109
  {{#if hasCountrySelector}}
110
- <div
111
- class="udex-masthead-shell__country-selector udex-masthead-shell__item_icon"
112
- @ui5-item-click="{{setSelectedItem}}"
113
- @click="{{handleCountrySelectorClick}}">
114
- <slot name="countrySelector"></slot>
115
- </div>
110
+ <div
111
+ class="udex-masthead-shell__country-selector udex-masthead-shell__item_icon"
112
+ @ui5-item-click="{{setSelectedItem}}"
113
+ @click="{{handleCountrySelectorClick}}">
114
+ <slot name="countrySelector"></slot>
115
+ </div>
116
116
  {{/if}}
117
117
  {{#if hasMobileMenuButtons}}
118
118
  <udex-masthead-item
@@ -46,6 +46,17 @@ type UDExMastheadShellAnalyticsNameEventDetail = {
46
46
  analyticsName: AnalyticsName,
47
47
  }
48
48
 
49
+ export enum UDExMastheadVariable {
50
+ mobileMenuHeight = "--udex-masthead-shell-mobile-menu-height",
51
+ itemButtonIconSize = "--udex-masthead-item-button-icon-size",
52
+ itemArrowIconSize = "--udex-masthead-item-arrow-icon-size",
53
+ rightMenuPadding = "--udex-masthead-right-menu-padding",
54
+ exploreMargin = "--udex-masthead-shell-explore-margin",
55
+ itemIconGap = "--udex-masthead-shell-item-icon-gap",
56
+ mastheadHeight = "--udex-masthead-shell-height",
57
+ itemGap = "--udex-masthead-shell-item-gap",
58
+ }
59
+
49
60
  /**
50
61
  * @class
51
62
  *
@@ -453,6 +464,7 @@ class UDExMastheadShell extends UI5Element {
453
464
  _handleResizeBound: ResizeObserverCallback;
454
465
  _rootHolder!: HTMLElement | null | undefined;
455
466
  _shouldHandleResize!: boolean;
467
+ _isVisible!: boolean;
456
468
 
457
469
  constructor() {
458
470
  super();
@@ -477,6 +489,8 @@ class UDExMastheadShell extends UI5Element {
477
489
  if (this._closeBtnClicked) {
478
490
  this.focusSearchBtn();
479
491
  }
492
+
493
+ this.updateVisibility();
480
494
  }
481
495
 
482
496
  onEnterDOM(): void {
@@ -526,6 +540,8 @@ class UDExMastheadShell extends UI5Element {
526
540
  } else {
527
541
  this.removeMobileMode();
528
542
  }
543
+
544
+ this._isVisible = true;
529
545
  }
530
546
  }
531
547
 
@@ -721,26 +737,40 @@ class UDExMastheadShell extends UI5Element {
721
737
  const itemsIcon = [...this.shadowRoot!.querySelectorAll<HTMLDivElement>(".udex-masthead-shell__item_icon")];
722
738
  const itemIconWidths = itemsIcon.length * this.getItemIconWidth();
723
739
  const itemIconGaps = itemsIcon.length * this.getItemIconGap();
724
- const exploreSAPWidth = this.hasExploreSAP ? this.getItemWidth(this.exploreSAP[0]) : 0;
740
+ const exploreItem = this.exploreSAP[0];
741
+ const exploreItemIconWidth = exploreItem.hasArrowDown ? this.getItemArrowIconWidth() : 0;
742
+ const exploreSAPWidth = this.hasExploreSAP ? this.getItemWidth(exploreItem) : 0;
725
743
  const rightMenuGaps = this.getRightMenuGap() + this.getExploreSapBtnGap() + itemIconGaps;
726
- return exploreSAPWidth + itemIconWidths + rightMenuGaps;
744
+ return exploreSAPWidth + exploreItemIconWidth + itemIconWidths + rightMenuGaps;
727
745
  }
728
746
 
729
- getItemIconWidth(): number {
747
+ getItemIconSize(cssVariableName: string): number {
730
748
  const item = this.querySelector("[udex-masthead-item]");
731
749
 
732
- if (!item) { return 0; }
750
+ if (!item) {
751
+ return 0;
752
+ }
733
753
 
734
754
  const style = window.getComputedStyle(item);
735
- const itemIconWidthVar = style.getPropertyValue("--udex-masthead-item-button-icon-size");
736
- return parseInt(itemIconWidthVar);
755
+ const iconSizeVar = style.getPropertyValue(cssVariableName);
756
+ return parseInt(iconSizeVar);
757
+ }
758
+
759
+ getItemIconWidth(): number {
760
+ return this.getItemIconSize(UDExMastheadVariable.itemButtonIconSize);
761
+ }
762
+
763
+ getItemArrowIconWidth(): number {
764
+ return this.getItemIconSize(UDExMastheadVariable.itemArrowIconSize);
737
765
  }
738
766
 
739
767
  getMainMenuWidth(): number {
740
768
  const mainItems = this.getSlottedNodes("menuItems");
741
- const gapItemVar = this.getRootVar("--udex-masthead-shell-item-gap");
769
+ const gapItemVar = this.getRootVar(UDExMastheadVariable.itemGap);
742
770
  return mainItems.reduce((accumulatedWidth, item, index) => {
743
- return accumulatedWidth + this.getItemWidth(item as UDExMastheadItem) + (index && parseInt(gapItemVar));
771
+ const mainItem = item as UDExMastheadItem;
772
+ const arrowIconWidth = mainItem.hasArrowDown ? this.getItemArrowIconWidth() : 0;
773
+ return accumulatedWidth + this.getItemWidth(mainItem) + (index && parseInt(gapItemVar) + arrowIconWidth);
744
774
  }, 0);
745
775
  }
746
776
 
@@ -760,17 +790,17 @@ class UDExMastheadShell extends UI5Element {
760
790
  }
761
791
 
762
792
  getItemIconGap(): number {
763
- const gapIconItemVar = this.getRootVar("--udex-masthead-shell-item-icon-gap");
793
+ const gapIconItemVar = this.getRootVar(UDExMastheadVariable.itemIconGap);
764
794
  return parseInt(gapIconItemVar);
765
795
  }
766
796
 
767
797
  getExploreSapBtnGap(): number {
768
- const exploreSapBtnGapVar = this.getRootVar("--udex-masthead-shell-explore-margin");
798
+ const exploreSapBtnGapVar = this.getRootVar(UDExMastheadVariable.exploreMargin);
769
799
  return this.hasExploreSAP ? parseInt(exploreSapBtnGapVar) : 0;
770
800
  }
771
801
 
772
802
  getRightMenuGap(): number {
773
- const rightMenuGapVar = this.getRootVar("--udex-masthead-right-menu-padding");
803
+ const rightMenuGapVar = this.getRootVar(UDExMastheadVariable.rightMenuPadding);
774
804
  return parseInt(rightMenuGapVar);
775
805
  }
776
806
 
@@ -803,9 +833,9 @@ class UDExMastheadShell extends UI5Element {
803
833
  }
804
834
 
805
835
  setMobileMenuHeight(): void {
806
- const mastheadHeight = parseInt(window.getComputedStyle(this).getPropertyValue("--udex-masthead-shell-height"));
836
+ const mastheadHeight = parseInt(window.getComputedStyle(this).getPropertyValue(UDExMastheadVariable.mastheadHeight));
807
837
  const mobileMenuHeight = `${window.innerHeight - mastheadHeight}px`;
808
- this.style.setProperty("--udex-masthead-shell-mobile-menu-height", mobileMenuHeight);
838
+ this.style.setProperty(UDExMastheadVariable.mobileMenuHeight, mobileMenuHeight);
809
839
  }
810
840
 
811
841
  removeMobileMode(): void {
@@ -815,6 +845,10 @@ class UDExMastheadShell extends UI5Element {
815
845
  });
816
846
  }
817
847
 
848
+ updateVisibility(): void {
849
+ this.style.opacity = this.isVisible ? "1" : "0";
850
+ }
851
+
818
852
  fireMastheadEvent(eventName: keyof this["eventDetails"], e?: PointerEvent): void {
819
853
  const eventDetails = {
820
854
  analyticsName: AnalyticsName.Header,
@@ -997,17 +1031,32 @@ class UDExMastheadShell extends UI5Element {
997
1031
  return this.showSearchByDefault || this._isSearchOpened;
998
1032
  }
999
1033
 
1034
+ get isVisible(): boolean {
1035
+ return this.isMobileMenuMode || !this.menuItems.length || this._isVisible;
1036
+ }
1037
+
1000
1038
  get shouldHandleMobileView(): boolean {
1001
- return !this.isAtMostBreakpointSizeM && !this.showSearchByDefault;
1039
+ return !this.isAtMostBreakpointSizeM && this.isMainMenuVisible;
1002
1040
  }
1003
1041
 
1004
1042
  get mainNavigationAriaLabel(): string {
1005
1043
  return UDExMastheadShell.i18nBundle.getText(MAIN_LINKS);
1006
1044
  }
1007
1045
 
1046
+ get isSimpleExploreMode(): boolean {
1047
+ return !this.hasSearch && !this.hasProfile && !this.hasCart && !this.hasSupport && !this.hasCountrySelector;
1048
+ }
1049
+
1050
+ get rightMenuClass(): string {
1051
+ const root = "udex-masthead-shell__right-menu";
1052
+ const simpleExploreClass = this.isSimpleExploreMode ? `${root}_simple-explore` : "";
1053
+ return `${root} ${simpleExploreClass}`.trim();
1054
+ }
1055
+
1008
1056
  get mainClass(): string {
1009
- const coBrandWithoutNavClass = (!!this.coBrandImage && !this.menuItems.length) ? "udex-masthead-shell_co-brand-without-nav" : "";
1010
- return `udex-masthead-shell ${coBrandWithoutNavClass}`.trim();
1057
+ const root = "udex-masthead-shell";
1058
+ const coBrandWithoutNavClass = (!!this.coBrandImage && !this.menuItems.length) ? `${root}_co-brand-without-nav` : "";
1059
+ return `${root} ${coBrandWithoutNavClass}`.trim();
1011
1060
  }
1012
1061
  }
1013
1062
 
package/src/Modal.ts CHANGED
@@ -5,10 +5,10 @@ import Dialog from "@ui5/webcomponents/dist/Dialog.js";
5
5
  import Popup from "@ui5/webcomponents/dist/Popup.js";
6
6
 
7
7
  // Styles
8
- import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
9
8
  import PopupsCommonCss from "@ui5/webcomponents/dist/generated/themes/PopupsCommon.css.js";
10
9
  import dialogCSS from "@ui5/webcomponents/dist/generated/themes/Dialog.css.js";
11
10
  import ModalCss from "./generated/themes/Modal.css.js";
11
+ import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
12
12
 
13
13
  export enum UDExModalType {
14
14
  default = "default",
@@ -32,10 +32,10 @@ export enum UDExModalType {
32
32
  renderer: jsxRenderer,
33
33
  styles: [
34
34
  Popup.styles,
35
- getEffectiveScrollbarStyle(),
36
35
  PopupsCommonCss,
37
36
  dialogCSS,
38
37
  ModalCss,
38
+ getEffectiveScrollbarStyle(),
39
39
  ],
40
40
  })
41
41
  class UDExModal extends Dialog {
package/src/Search.hbs CHANGED
@@ -18,7 +18,7 @@
18
18
  class="{{prefixPopoverClasses}}"
19
19
  hide-arrow
20
20
  placement="Bottom"
21
- horizontal-align="Start"
21
+ horizontal-align="Start"
22
22
  style="{{prefixPopoverStyles}}"
23
23
  @after-close="{{handleAfterClosePrefixPopover}}">
24
24
  <slot></slot>
package/src/Search.ts CHANGED
@@ -19,7 +19,6 @@ import {
19
19
  isSpace,
20
20
  } from "@ui5/webcomponents-base/dist/Keys.js";
21
21
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
22
- import Button from "@ui5/webcomponents/dist/Button.js";
23
22
  import Icon from "@ui5/webcomponents/dist/Icon.js";
24
23
  import List from "./List.js";
25
24
  import ControlButton from "./ControlButton.js";
@@ -45,13 +44,15 @@ import {
45
44
  OF,
46
45
  } from "./generated/i18n/i18n-defaults.js";
47
46
  import type SearchInputSuggestion from "./features/SearchSuggestionsPopover.js";
47
+ import retryUntilSuccessful from "./utils/retryUntilSuccessful.js";
48
+ import UDExButton from "./Button.js";
48
49
 
49
50
  import SearchTemplate from "./generated/templates/SearchTemplate.lit.js";
50
51
 
51
52
  // Styles
52
53
  import SearchCss from "./generated/themes/Search.css.js";
53
54
  import SearchSuggestionsCss from "./generated/themes/SearchSuggestions.css.js";
54
- import retryUntilSuccessful from "./utils/retryUntilSuccessful.js";
55
+ import getEffectiveScrollbarStyle from "./utils/getEffectiveScrollbarStyle.js";
55
56
 
56
57
  const SearchIcon: string = "sap-icon://search";
57
58
 
@@ -129,11 +130,11 @@ export type UDExSearchKeydownEventDetail = {
129
130
  @customElement({
130
131
  tag: "udex-search",
131
132
  renderer: litRender,
132
- styles: [SearchCss, SearchSuggestionsCss],
133
+ styles: [SearchCss, SearchSuggestionsCss, getEffectiveScrollbarStyle()],
133
134
  template: SearchTemplate,
134
135
  get dependencies() {
135
136
  const Suggestion = getFeature<typeof SearchInputSuggestion>("SearchInputSuggestion");
136
- return ([ControlButton, Button, Icon, List, Popover] as Array<typeof UI5Element>).concat(Suggestion ? [...Suggestion.dependencies] : []);
137
+ return ([ControlButton, UDExButton, Icon, List, Popover] as Array<typeof UI5Element>).concat(Suggestion ? [...Suggestion.dependencies] : []);
137
138
  },
138
139
  })
139
140
 
@@ -8,13 +8,19 @@
8
8
  non-interactive-submit-button
9
9
  show-submit-button>
10
10
  </udex-search>
11
+ <span
12
+ aria-live="polite"
13
+ aria-atomic="true"
14
+ class="hidden">
15
+ {{_accSearchResultInfo}}
16
+ </span>
11
17
  {{/if}}
12
18
  {{#if isListEmpty}}
13
19
  <div class="udex-no-result"><span>{{getNoResultText}}&lrm;</span></div>
14
20
  {{else if busy}}
15
21
  <ui5-busy-indicator
16
22
  class="udex-busy-indicator"
17
- size="Medium"
23
+ size="M"
18
24
  delay="{{busyDelay}}"
19
25
  active>
20
26
  </ui5-busy-indicator>