@sapudex/web-components 0.117.1 → 0.138.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 (536) hide show
  1. package/bundle.esm.js +5 -0
  2. package/config/wdio.conf.js +19 -8
  3. package/dist/Accordion.d.ts +1 -1
  4. package/dist/Accordion.js +1 -1
  5. package/dist/Accordion.js.map +1 -1
  6. package/dist/AccordionItem.d.ts +3 -2
  7. package/dist/AccordionItem.js +4 -4
  8. package/dist/AccordionItem.js.map +1 -1
  9. package/dist/Avatar.d.ts +12 -0
  10. package/dist/Avatar.js +22 -1
  11. package/dist/Avatar.js.map +1 -1
  12. package/dist/AvatarGroup.d.ts +28 -0
  13. package/dist/AvatarGroup.js +126 -0
  14. package/dist/AvatarGroup.js.map +1 -0
  15. package/dist/Checkbox.d.ts +1 -1
  16. package/dist/Checkbox.js +1 -1
  17. package/dist/Checkbox.js.map +1 -1
  18. package/dist/CountrySelector.d.ts +24 -6
  19. package/dist/CountrySelector.js +25 -7
  20. package/dist/CountrySelector.js.map +1 -1
  21. package/dist/DatePicker.d.ts +1 -0
  22. package/dist/DatePicker.js +4 -1
  23. package/dist/DatePicker.js.map +1 -1
  24. package/dist/Dropdown.d.ts +12 -2
  25. package/dist/Dropdown.js +18 -6
  26. package/dist/Dropdown.js.map +1 -1
  27. package/dist/FilterMenu.d.ts +26 -6
  28. package/dist/FilterMenu.js +61 -21
  29. package/dist/FilterMenu.js.map +1 -1
  30. package/dist/Footer.d.ts +36 -1
  31. package/dist/Footer.js +35 -37
  32. package/dist/Footer.js.map +1 -1
  33. package/dist/HeroBanner.js +3 -0
  34. package/dist/HeroBanner.js.map +1 -1
  35. package/dist/Link.d.ts +1 -1
  36. package/dist/Link.js +1 -1
  37. package/dist/Link.js.map +1 -1
  38. package/dist/List.d.ts +1 -1
  39. package/dist/List.js +17 -1
  40. package/dist/List.js.map +1 -1
  41. package/dist/ListGroupHeader.d.ts +2 -2
  42. package/dist/ListGroupHeader.js +2 -2
  43. package/dist/ListGroupHeader.js.map +1 -1
  44. package/dist/ListItem.d.ts +3 -3
  45. package/dist/ListItem.js +6 -7
  46. package/dist/ListItem.js.map +1 -1
  47. package/dist/ListSelectAll.d.ts +1 -1
  48. package/dist/ListSelectAll.js +1 -1
  49. package/dist/ListSelectAll.js.map +1 -1
  50. package/dist/MastheadItem.d.ts +10 -1
  51. package/dist/MastheadItem.js +29 -18
  52. package/dist/MastheadItem.js.map +1 -1
  53. package/dist/MastheadMenu.d.ts +5 -0
  54. package/dist/MastheadMenu.js +24 -0
  55. package/dist/MastheadMenu.js.map +1 -1
  56. package/dist/MastheadMenuItem.d.ts +2 -3
  57. package/dist/MastheadMenuItem.js +2 -17
  58. package/dist/MastheadMenuItem.js.map +1 -1
  59. package/dist/MastheadMobileMenu.d.ts +25 -5
  60. package/dist/MastheadMobileMenu.js +135 -21
  61. package/dist/MastheadMobileMenu.js.map +1 -1
  62. package/dist/MastheadProfileMenu.d.ts +13 -4
  63. package/dist/MastheadProfileMenu.js +40 -9
  64. package/dist/MastheadProfileMenu.js.map +1 -1
  65. package/dist/MastheadShell.d.ts +11 -0
  66. package/dist/MastheadShell.js +52 -8
  67. package/dist/MastheadShell.js.map +1 -1
  68. package/dist/MediaPlayer.d.ts +3 -3
  69. package/dist/MediaPlayer.js +115 -25
  70. package/dist/MediaPlayer.js.map +1 -1
  71. package/dist/MessageStrip.js +1 -1
  72. package/dist/MessageStrip.js.map +1 -1
  73. package/dist/Pagination.d.ts +3 -0
  74. package/dist/Pagination.js +16 -4
  75. package/dist/Pagination.js.map +1 -1
  76. package/dist/PasswordField.d.ts +14 -4
  77. package/dist/PasswordField.js +24 -15
  78. package/dist/PasswordField.js.map +1 -1
  79. package/dist/PhoneNumberField.d.ts +32 -0
  80. package/dist/PhoneNumberField.js +51 -2
  81. package/dist/PhoneNumberField.js.map +1 -1
  82. package/dist/RatingBar.d.ts +53 -0
  83. package/dist/RatingBar.js +96 -0
  84. package/dist/RatingBar.js.map +1 -0
  85. package/dist/Review.d.ts +71 -0
  86. package/dist/Review.js +108 -0
  87. package/dist/Review.js.map +1 -0
  88. package/dist/ReviewItem.d.ts +105 -0
  89. package/dist/ReviewItem.js +157 -0
  90. package/dist/ReviewItem.js.map +1 -0
  91. package/dist/Search.d.ts +64 -2
  92. package/dist/Search.js +62 -8
  93. package/dist/Search.js.map +1 -1
  94. package/dist/SearchableListBase.d.ts +1 -1
  95. package/dist/SearchableListBase.js +1 -1
  96. package/dist/SearchableListBase.js.map +1 -1
  97. package/dist/SecondaryNavigation.d.ts +9 -8
  98. package/dist/SecondaryNavigation.js +59 -46
  99. package/dist/SecondaryNavigation.js.map +1 -1
  100. package/dist/SecondaryNavigationItem.d.ts +1 -1
  101. package/dist/SecondaryNavigationItem.js +15 -5
  102. package/dist/SecondaryNavigationItem.js.map +1 -1
  103. package/dist/SecondaryNavigationItemBase.d.ts +16 -2
  104. package/dist/SecondaryNavigationItemBase.js +27 -1
  105. package/dist/SecondaryNavigationItemBase.js.map +1 -1
  106. package/dist/SecondaryNavigationSubItem.d.ts +2 -1
  107. package/dist/SecondaryNavigationSubItem.js +5 -2
  108. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  109. package/dist/SelectBox.d.ts +33 -9
  110. package/dist/SelectBox.js +121 -60
  111. package/dist/SelectBox.js.map +1 -1
  112. package/dist/StatusBadge.d.ts +5 -5
  113. package/dist/StatusBadge.js.map +1 -1
  114. package/dist/Switch.d.ts +20 -0
  115. package/dist/Switch.js +22 -0
  116. package/dist/Switch.js.map +1 -1
  117. package/dist/Tab.d.ts +9 -1
  118. package/dist/Tab.js +4 -1
  119. package/dist/Tab.js.map +1 -1
  120. package/dist/TabNavigation.d.ts +21 -21
  121. package/dist/TabNavigation.js +83 -102
  122. package/dist/TabNavigation.js.map +1 -1
  123. package/dist/Tag.d.ts +22 -7
  124. package/dist/Tag.js +52 -21
  125. package/dist/Tag.js.map +1 -1
  126. package/dist/TagGroup.d.ts +94 -0
  127. package/dist/TagGroup.js +174 -0
  128. package/dist/TagGroup.js.map +1 -0
  129. package/dist/TextArea.d.ts +14 -1
  130. package/dist/TextArea.js +18 -0
  131. package/dist/TextArea.js.map +1 -1
  132. package/dist/TextField.d.ts +32 -13
  133. package/dist/TextField.js +32 -2
  134. package/dist/TextField.js.map +1 -1
  135. package/dist/Tooltip.d.ts +3 -3
  136. package/dist/Tooltip.js +4 -4
  137. package/dist/Tooltip.js.map +1 -1
  138. package/dist/assets/bundle.esm-bb1c7413.js +316 -0
  139. package/dist/assets/messagebundle_en-c677773a.js +1 -0
  140. package/dist/assets/parameters-bundle.css-c897ae23.js +2 -0
  141. package/dist/assets/video.es-60bfb78c.js +228 -0
  142. package/dist/css/themes/AccordionItem.css +1 -1
  143. package/dist/css/themes/Avatar.css +1 -1
  144. package/dist/css/themes/Badge.css +1 -1
  145. package/dist/css/themes/CountrySelector.css +1 -1
  146. package/dist/css/themes/Divider.css +1 -1
  147. package/dist/css/themes/FilterMenu.css +1 -1
  148. package/dist/css/themes/Footer.css +1 -1
  149. package/dist/css/themes/HeroBanner.css +1 -1
  150. package/dist/css/themes/ListItem.css +1 -1
  151. package/dist/css/themes/MastheadItem.css +1 -1
  152. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  153. package/dist/css/themes/MastheadShell.css +1 -1
  154. package/dist/css/themes/Modal.css +1 -1
  155. package/dist/css/themes/Pagination.css +1 -1
  156. package/dist/css/themes/PhoneNumberField.css +1 -1
  157. package/dist/css/themes/RatingBar.css +1 -0
  158. package/dist/css/themes/RatingIndicator.css +1 -1
  159. package/dist/css/themes/Review.css +1 -0
  160. package/dist/css/themes/ReviewItem.css +1 -0
  161. package/dist/css/themes/Search.css +1 -1
  162. package/dist/css/themes/SecondaryNavigation.css +1 -1
  163. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  164. package/dist/css/themes/SecondaryNavigationSubItem.css +1 -1
  165. package/dist/css/themes/SelectBox.css +1 -1
  166. package/dist/css/themes/Slider.css +1 -1
  167. package/dist/css/themes/StepInput.css +1 -1
  168. package/dist/css/themes/TabNavigation.css +1 -1
  169. package/dist/css/themes/Tag.css +1 -1
  170. package/dist/css/themes/TagGroup.css +1 -0
  171. package/dist/css/themes/TextArea.css +1 -1
  172. package/dist/css/themes/TextField.css +1 -1
  173. package/dist/css/themes/Toast.css +1 -1
  174. package/dist/css/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +1 -1
  175. package/dist/custom-elements-internal.json +1435 -444
  176. package/dist/custom-elements.json +1267 -358
  177. package/dist/data/CountryListISO3166.js +162 -162
  178. package/dist/data/CountryListISO3166.js.map +1 -1
  179. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  180. package/dist/generated/assets/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.json +1 -1
  181. package/dist/generated/i18n/i18n-defaults.d.ts +11 -1
  182. package/dist/generated/i18n/i18n-defaults.js +18 -8
  183. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  184. package/dist/generated/templates/AccordionItemTemplate.lit.js +1 -1
  185. package/dist/generated/templates/AccordionItemTemplate.lit.js.map +1 -1
  186. package/dist/generated/templates/CountrySelectorTemplate.lit.js +3 -3
  187. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  188. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  189. package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
  190. package/dist/generated/templates/DropdownTemplate.lit.js +2 -2
  191. package/dist/generated/templates/DropdownTemplate.lit.js.map +1 -1
  192. package/dist/generated/templates/FilterMenuTemplate.lit.js +1 -1
  193. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  194. package/dist/generated/templates/FooterTemplate.lit.js +26 -28
  195. package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
  196. package/dist/generated/templates/HeroBannerTemplate.lit.js +7 -7
  197. package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
  198. package/dist/generated/templates/ListItemTemplate.lit.js +6 -6
  199. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  200. package/dist/generated/templates/ListSelectAllTemplate.lit.js +1 -1
  201. package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +1 -1
  202. package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
  203. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  204. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +1 -1
  205. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
  206. package/dist/generated/templates/MastheadMenuTemplate.lit.js +2 -2
  207. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  208. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +16 -12
  209. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  210. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +2 -2
  211. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
  212. package/dist/generated/templates/MastheadShellTemplate.lit.js +8 -8
  213. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  214. package/dist/generated/templates/MediaPlayerTemplate.lit.js +2 -2
  215. package/dist/generated/templates/MediaPlayerTemplate.lit.js.map +1 -1
  216. package/dist/generated/templates/PaginationTemplate.lit.js +1 -1
  217. package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
  218. package/dist/generated/templates/PasswordFieldTemplate.lit.js +1 -2
  219. package/dist/generated/templates/PasswordFieldTemplate.lit.js.map +1 -1
  220. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +6 -3
  221. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +1 -1
  222. package/dist/generated/templates/RatingBarTemplate.lit.d.ts +4 -0
  223. package/dist/generated/templates/RatingBarTemplate.lit.js +6 -0
  224. package/dist/generated/templates/RatingBarTemplate.lit.js.map +1 -0
  225. package/dist/generated/templates/ReviewItemTemplate.lit.d.ts +4 -0
  226. package/dist/generated/templates/ReviewItemTemplate.lit.js +8 -0
  227. package/dist/generated/templates/ReviewItemTemplate.lit.js.map +1 -0
  228. package/dist/generated/templates/ReviewTemplate.lit.d.ts +4 -0
  229. package/dist/generated/templates/ReviewTemplate.lit.js +10 -0
  230. package/dist/generated/templates/ReviewTemplate.lit.js.map +1 -0
  231. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +1 -1
  232. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
  233. package/dist/generated/templates/SearchTemplate.lit.js +7 -7
  234. package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
  235. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +3 -3
  236. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
  237. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +5 -4
  238. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -1
  239. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +7 -6
  240. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  241. package/dist/generated/templates/SelectBoxTemplate.lit.js +2 -2
  242. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  243. package/dist/generated/templates/SwitchTemplate.lit.js +2 -2
  244. package/dist/generated/templates/SwitchTemplate.lit.js.map +1 -1
  245. package/dist/generated/templates/TabHeaderTemplate.lit.js +2 -2
  246. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
  247. package/dist/generated/templates/TabInOverflowTemplate.lit.js +6 -6
  248. package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +1 -1
  249. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js +1 -1
  250. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js.map +1 -1
  251. package/dist/generated/templates/TabNavigationTemplate.lit.js +4 -2
  252. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
  253. package/dist/generated/templates/TagGroupTemplate.lit.d.ts +4 -0
  254. package/dist/generated/templates/TagGroupTemplate.lit.js +8 -0
  255. package/dist/generated/templates/TagGroupTemplate.lit.js.map +1 -0
  256. package/dist/generated/templates/TagTemplate.lit.js +13 -3
  257. package/dist/generated/templates/TagTemplate.lit.js.map +1 -1
  258. package/dist/generated/templates/TextAreaTemplate.lit.js +1 -1
  259. package/dist/generated/templates/TextAreaTemplate.lit.js.map +1 -1
  260. package/dist/generated/templates/TextFieldTemplate.lit.js +2 -2
  261. package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
  262. package/dist/generated/templates/TooltipTemplate.lit.js +1 -1
  263. package/dist/generated/templates/TooltipTemplate.lit.js.map +1 -1
  264. package/dist/generated/themes/AccordionItem.css.js +1 -1
  265. package/dist/generated/themes/AccordionItem.css.js.map +1 -1
  266. package/dist/generated/themes/Avatar.css.js +1 -1
  267. package/dist/generated/themes/Avatar.css.js.map +1 -1
  268. package/dist/generated/themes/Badge.css.js +1 -1
  269. package/dist/generated/themes/Badge.css.js.map +1 -1
  270. package/dist/generated/themes/CountrySelector.css.js +1 -1
  271. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  272. package/dist/generated/themes/Divider.css.js +1 -1
  273. package/dist/generated/themes/Divider.css.js.map +1 -1
  274. package/dist/generated/themes/FilterMenu.css.js +1 -1
  275. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  276. package/dist/generated/themes/Footer.css.js +1 -1
  277. package/dist/generated/themes/Footer.css.js.map +1 -1
  278. package/dist/generated/themes/HeroBanner.css.js +1 -1
  279. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  280. package/dist/generated/themes/ListItem.css.js +1 -1
  281. package/dist/generated/themes/ListItem.css.js.map +1 -1
  282. package/dist/generated/themes/MastheadItem.css.js +1 -1
  283. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  284. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  285. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  286. package/dist/generated/themes/MastheadShell.css.js +1 -1
  287. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  288. package/dist/generated/themes/Modal.css.js +1 -1
  289. package/dist/generated/themes/Modal.css.js.map +1 -1
  290. package/dist/generated/themes/Pagination.css.js +1 -1
  291. package/dist/generated/themes/Pagination.css.js.map +1 -1
  292. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  293. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  294. package/dist/generated/themes/RatingBar.css.js +9 -0
  295. package/dist/generated/themes/RatingBar.css.js.map +1 -0
  296. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  297. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  298. package/dist/generated/themes/Review.css.d.ts +3 -0
  299. package/dist/generated/themes/Review.css.js +9 -0
  300. package/dist/generated/themes/Review.css.js.map +1 -0
  301. package/dist/generated/themes/ReviewItem.css.d.ts +3 -0
  302. package/dist/generated/themes/ReviewItem.css.js +9 -0
  303. package/dist/generated/themes/ReviewItem.css.js.map +1 -0
  304. package/dist/generated/themes/Search.css.js +1 -1
  305. package/dist/generated/themes/Search.css.js.map +1 -1
  306. package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
  307. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  308. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  309. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  310. package/dist/generated/themes/SecondaryNavigationSubItem.css.js +1 -1
  311. package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -1
  312. package/dist/generated/themes/SelectBox.css.js +1 -1
  313. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  314. package/dist/generated/themes/Slider.css.js +1 -1
  315. package/dist/generated/themes/Slider.css.js.map +1 -1
  316. package/dist/generated/themes/StepInput.css.js +1 -1
  317. package/dist/generated/themes/StepInput.css.js.map +1 -1
  318. package/dist/generated/themes/TabNavigation.css.js +1 -1
  319. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  320. package/dist/generated/themes/Tag.css.js +1 -1
  321. package/dist/generated/themes/Tag.css.js.map +1 -1
  322. package/dist/generated/themes/TagGroup.css.d.ts +3 -0
  323. package/dist/generated/themes/TagGroup.css.js +9 -0
  324. package/dist/generated/themes/TagGroup.css.js.map +1 -0
  325. package/dist/generated/themes/TextArea.css.js +1 -1
  326. package/dist/generated/themes/TextArea.css.js.map +1 -1
  327. package/dist/generated/themes/TextField.css.js +1 -1
  328. package/dist/generated/themes/TextField.css.js.map +1 -1
  329. package/dist/generated/themes/Toast.css.js +1 -1
  330. package/dist/generated/themes/Toast.css.js.map +1 -1
  331. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js +1 -1
  332. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js.map +1 -1
  333. package/dist/i18n/messagebundle.properties +35 -7
  334. package/dist/i18n/messagebundle_en.properties +17 -7
  335. package/dist/vscode.html-custom-data.json +260 -95
  336. package/dist/web-types.json +605 -183
  337. package/package.json +9 -9
  338. package/src/Accordion.ts +1 -1
  339. package/src/AccordionItem.hbs +1 -4
  340. package/src/AccordionItem.ts +6 -5
  341. package/src/Avatar.ts +24 -1
  342. package/src/AvatarGroup.ts +135 -0
  343. package/src/Checkbox.ts +1 -1
  344. package/src/CountrySelector.hbs +19 -15
  345. package/src/CountrySelector.ts +42 -9
  346. package/src/DatePicker.hbs +7 -9
  347. package/src/DatePicker.ts +14 -10
  348. package/src/Dropdown.hbs +8 -2
  349. package/src/Dropdown.ts +27 -6
  350. package/src/FilterMenu.hbs +58 -56
  351. package/src/FilterMenu.ts +101 -39
  352. package/src/Footer.hbs +21 -37
  353. package/src/Footer.ts +74 -52
  354. package/src/HeroBanner.hbs +22 -15
  355. package/src/HeroBanner.ts +3 -0
  356. package/src/Link.ts +1 -1
  357. package/src/List.ts +43 -23
  358. package/src/ListGroupHeader.ts +2 -2
  359. package/src/ListItem.hbs +4 -2
  360. package/src/ListItem.ts +8 -10
  361. package/src/ListSelectAll.hbs +1 -1
  362. package/src/ListSelectAll.ts +1 -1
  363. package/src/MastheadItem.hbs +7 -5
  364. package/src/MastheadItem.ts +44 -11
  365. package/src/MastheadMenu.hbs +4 -2
  366. package/src/MastheadMenu.ts +30 -0
  367. package/src/MastheadMenuItem.hbs +0 -2
  368. package/src/MastheadMenuItem.ts +2 -16
  369. package/src/MastheadMobileMenu.hbs +36 -10
  370. package/src/MastheadMobileMenu.ts +162 -22
  371. package/src/MastheadProfileMenu.hbs +6 -2
  372. package/src/MastheadProfileMenu.ts +66 -20
  373. package/src/MastheadShell.hbs +14 -4
  374. package/src/MastheadShell.ts +67 -8
  375. package/src/MediaPlayer.hbs +1 -3
  376. package/src/MediaPlayer.ts +122 -26
  377. package/src/MessageStrip.ts +1 -1
  378. package/src/Pagination.hbs +4 -2
  379. package/src/Pagination.ts +19 -4
  380. package/src/PasswordField.hbs +6 -17
  381. package/src/PasswordField.ts +31 -23
  382. package/src/PhoneNumberField.hbs +26 -6
  383. package/src/PhoneNumberField.ts +77 -2
  384. package/src/RatingBar.hbs +11 -0
  385. package/src/RatingBar.ts +113 -0
  386. package/src/Review.hbs +44 -0
  387. package/src/Review.ts +140 -0
  388. package/src/ReviewItem.hbs +20 -0
  389. package/src/ReviewItem.ts +227 -0
  390. package/src/Search.hbs +19 -14
  391. package/src/Search.ts +113 -6
  392. package/src/SearchSuggestions.hbs +1 -0
  393. package/src/SearchableListBase.ts +1 -1
  394. package/src/SecondaryNavigation.hbs +14 -8
  395. package/src/SecondaryNavigation.ts +76 -56
  396. package/src/SecondaryNavigationItem.hbs +3 -2
  397. package/src/SecondaryNavigationItem.ts +15 -5
  398. package/src/SecondaryNavigationItemBase.ts +41 -3
  399. package/src/SecondaryNavigationSubItem.hbs +13 -10
  400. package/src/SecondaryNavigationSubItem.ts +6 -2
  401. package/src/SelectBox.hbs +84 -83
  402. package/src/SelectBox.ts +155 -72
  403. package/src/StatusBadge.ts +2 -2
  404. package/src/Switch.hbs +3 -3
  405. package/src/Switch.ts +25 -0
  406. package/src/Tab.ts +11 -1
  407. package/src/TabHeader.hbs +3 -1
  408. package/src/TabInOverflow.hbs +19 -6
  409. package/src/TabNavigation.hbs +22 -12
  410. package/src/TabNavigation.ts +93 -117
  411. package/src/TabNavigationPopover.hbs +1 -0
  412. package/src/Tag.hbs +76 -26
  413. package/src/Tag.ts +77 -36
  414. package/src/TagGroup.hbs +48 -0
  415. package/src/TagGroup.ts +222 -0
  416. package/src/TextArea.hbs +36 -34
  417. package/src/TextArea.ts +28 -0
  418. package/src/TextField.hbs +45 -39
  419. package/src/TextField.ts +73 -17
  420. package/src/Tooltip.hbs +2 -2
  421. package/src/Tooltip.ts +5 -5
  422. package/src/data/CountryListISO3166.ts +162 -162
  423. package/src/generated/i18n/i18n-defaults.ts +2 -2
  424. package/src/generated/templates/AccordionItemTemplate.lit.ts +1 -1
  425. package/src/generated/templates/CountrySelectorTemplate.lit.ts +3 -3
  426. package/src/generated/templates/DatePickerTemplate.lit.ts +1 -1
  427. package/src/generated/templates/DropdownTemplate.lit.ts +2 -2
  428. package/src/generated/templates/FilterMenuTemplate.lit.ts +1 -1
  429. package/src/generated/templates/FooterTemplate.lit.ts +26 -28
  430. package/src/generated/templates/HeroBannerTemplate.lit.ts +7 -7
  431. package/src/generated/templates/ListItemTemplate.lit.ts +6 -6
  432. package/src/generated/templates/ListSelectAllTemplate.lit.ts +1 -1
  433. package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
  434. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +1 -1
  435. package/src/generated/templates/MastheadMenuTemplate.lit.ts +2 -2
  436. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +16 -12
  437. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +2 -2
  438. package/src/generated/templates/MastheadShellTemplate.lit.ts +8 -8
  439. package/src/generated/templates/MediaPlayerTemplate.lit.ts +2 -2
  440. package/src/generated/templates/PaginationTemplate.lit.ts +1 -1
  441. package/src/generated/templates/PasswordFieldTemplate.lit.ts +1 -2
  442. package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +6 -3
  443. package/src/generated/templates/RatingBarTemplate.lit.ts +11 -0
  444. package/src/generated/templates/ReviewItemTemplate.lit.ts +13 -0
  445. package/src/generated/templates/ReviewTemplate.lit.ts +15 -0
  446. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +1 -1
  447. package/src/generated/templates/SearchTemplate.lit.ts +7 -7
  448. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +3 -3
  449. package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +5 -4
  450. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +7 -6
  451. package/src/generated/templates/SelectBoxTemplate.lit.ts +2 -2
  452. package/src/generated/templates/SwitchTemplate.lit.ts +2 -2
  453. package/src/generated/templates/TabHeaderTemplate.lit.ts +2 -2
  454. package/src/generated/templates/TabInOverflowTemplate.lit.ts +6 -6
  455. package/src/generated/templates/TabNavigationPopoverTemplate.lit.ts +1 -1
  456. package/src/generated/templates/TabNavigationTemplate.lit.ts +4 -2
  457. package/src/generated/templates/TagGroupTemplate.lit.ts +13 -0
  458. package/src/generated/templates/TagTemplate.lit.ts +13 -3
  459. package/src/generated/templates/TextAreaTemplate.lit.ts +1 -1
  460. package/src/generated/templates/TextFieldTemplate.lit.ts +2 -2
  461. package/src/generated/templates/TooltipTemplate.lit.ts +1 -1
  462. package/src/generated/themes/AccordionItem.css.ts +1 -1
  463. package/src/generated/themes/Avatar.css.ts +1 -1
  464. package/src/generated/themes/Badge.css.ts +1 -1
  465. package/src/generated/themes/CountrySelector.css.ts +1 -1
  466. package/src/generated/themes/Divider.css.ts +1 -1
  467. package/src/generated/themes/FilterMenu.css.ts +1 -1
  468. package/src/generated/themes/Footer.css.ts +1 -1
  469. package/src/generated/themes/HeroBanner.css.ts +1 -1
  470. package/src/generated/themes/ListItem.css.ts +1 -1
  471. package/src/generated/themes/MastheadItem.css.ts +1 -1
  472. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  473. package/src/generated/themes/MastheadShell.css.ts +1 -1
  474. package/src/generated/themes/Modal.css.ts +1 -1
  475. package/src/generated/themes/Pagination.css.ts +1 -1
  476. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  477. package/src/generated/themes/RatingBar.css.ts +13 -0
  478. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  479. package/src/generated/themes/Review.css.ts +13 -0
  480. package/src/generated/themes/ReviewItem.css.ts +13 -0
  481. package/src/generated/themes/Search.css.ts +1 -1
  482. package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
  483. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  484. package/src/generated/themes/SecondaryNavigationSubItem.css.ts +1 -1
  485. package/src/generated/themes/SelectBox.css.ts +1 -1
  486. package/src/generated/themes/Slider.css.ts +1 -1
  487. package/src/generated/themes/StepInput.css.ts +1 -1
  488. package/src/generated/themes/TabNavigation.css.ts +1 -1
  489. package/src/generated/themes/Tag.css.ts +1 -1
  490. package/src/generated/themes/TagGroup.css.ts +13 -0
  491. package/src/generated/themes/TextArea.css.ts +1 -1
  492. package/src/generated/themes/TextField.css.ts +1 -1
  493. package/src/generated/themes/Toast.css.ts +1 -1
  494. package/src/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.ts +1 -1
  495. package/src/i18n/messagebundle.properties +35 -7
  496. package/src/i18n/messagebundle_en.properties +17 -7
  497. package/src/themes/AccordionItem.css +6 -4
  498. package/src/themes/Avatar.css +24 -7
  499. package/src/themes/Badge.css +1 -1
  500. package/src/themes/CountrySelector.css +49 -26
  501. package/src/themes/Divider.css +6 -2
  502. package/src/themes/FilterMenu.css +52 -15
  503. package/src/themes/Footer.css +93 -168
  504. package/src/themes/HeroBanner.css +52 -24
  505. package/src/themes/ListItem.css +4 -0
  506. package/src/themes/MastheadItem.css +12 -2
  507. package/src/themes/MastheadMobileMenu.css +4 -0
  508. package/src/themes/MastheadShell.css +25 -29
  509. package/src/themes/Modal.css +6 -0
  510. package/src/themes/Pagination.css +7 -0
  511. package/src/themes/PhoneNumberField.css +15 -1
  512. package/src/themes/RatingBar.css +52 -0
  513. package/src/themes/Review.css +196 -0
  514. package/src/themes/ReviewItem.css +121 -0
  515. package/src/themes/Search.css +46 -25
  516. package/src/themes/SecondaryNavigation.css +41 -13
  517. package/src/themes/SecondaryNavigationItem.css +6 -4
  518. package/src/themes/SecondaryNavigationSubItem.css +5 -5
  519. package/src/themes/SelectBox.css +51 -24
  520. package/src/themes/StepInput.css +5 -2
  521. package/src/themes/TabNavigation.css +7 -1
  522. package/src/themes/Tag.css +200 -148
  523. package/src/themes/TagGroup.css +90 -0
  524. package/src/themes/TextArea.css +13 -0
  525. package/src/themes/TextField.css +97 -60
  526. package/src/themes/Toast.css +4 -0
  527. package/dist/assets/bundle.esm-f65ae7da.js +0 -315
  528. package/dist/assets/messagebundle_en-7249941b.js +0 -1
  529. package/dist/assets/parameters-bundle.css-76ef62fa.js +0 -2
  530. package/dist/assets/video.es-17aecf95.js +0 -219
  531. package/dist/css/themes/PasswordField.css +0 -1
  532. package/dist/generated/themes/PasswordField.css.js +0 -9
  533. package/dist/generated/themes/PasswordField.css.js.map +0 -1
  534. package/src/generated/themes/PasswordField.css.ts +0 -13
  535. package/src/themes/PasswordField.css +0 -29
  536. /package/dist/generated/themes/{PasswordField.css.d.ts → RatingBar.css.d.ts} +0 -0
package/src/Search.hbs CHANGED
@@ -2,6 +2,8 @@
2
2
  {{#if isShowSearchHomePrefix}}
3
3
  <div class="udex-search__prefix">
4
4
  <button type="button"
5
+ role="combobox"
6
+ aria-expanded="{{_prefixDropdownExpanded}}"
5
7
  aria-haspopup="true"
6
8
  aria-controls="udex-search-prefix"
7
9
  class="udex-search__prefix-button"
@@ -14,7 +16,7 @@
14
16
  class="udex-search__prefix-popover"
15
17
  hide-arrow
16
18
  placement-type="Bottom"
17
- horizontal-align="Left"
19
+ horizontal-align="Left"
18
20
  style="{{prefixPopoverStyles}}"
19
21
  @after-close="{{handleAfterClosePrefixPopover}}">
20
22
  <slot></slot>
@@ -29,10 +31,8 @@
29
31
  name="search"
30
32
  class="udex-search__field"
31
33
  autocomplete="off"
32
- role="combobox"
33
- aria-controls="{{getAriaControls}}"
34
- aria-expanded="false"
35
- aria-haspopup="{{showSuggestedPopover}}"
34
+ aria-autocomplete="list"
35
+ aria-haspopup="{{getAriaHasPopup}}"
36
36
  aria-label="Search"
37
37
  placeholder="{{label}}"
38
38
  .value="{{value}}"
@@ -55,11 +55,9 @@
55
55
  name="search"
56
56
  class="udex-search__field"
57
57
  autocomplete="off"
58
- role="combobox"
58
+ aria-autocomplete="list"
59
59
  aria-label="{{accInfo.ariaLabel}}"
60
- aria-controls="{{getAriaControls}}"
61
- aria-expanded="false"
62
- aria-haspopup="{{showSuggestedPopover}}"
60
+ aria-haspopup="{{getAriaHasPopup}}"
63
61
  .value="{{value}}"
64
62
  @input="{{handleSearchChange}}"
65
63
  @keydown="{{handleKeyDown}}"
@@ -75,11 +73,17 @@
75
73
  id="reset-button"
76
74
  class="udex-search__button udex-search__reset-button"
77
75
  design="Default"
78
- icon="decline"
79
- tooltip="Reset Button"
76
+ tooltip="{{tooltipInfo.tooltipResetButton}}"
80
77
  @click="{{onReset}}"
81
78
  @keydown="{{handleKeyDownReset}}"
82
- ></ui5-button>
79
+ >
80
+ <ui5-icon
81
+ class="udex-search__button-icon"
82
+ accessible-name="{{accInfo.accessibleNameResetIcon}}"
83
+ accessible-role="presentation"
84
+ name="decline">
85
+ </ui5-icon>
86
+ </ui5-button>
83
87
  {{/if}}
84
88
  {{#if isVoiceButton}}
85
89
  <ui5-button
@@ -87,7 +91,7 @@
87
91
  class="udex-search__button udex-search__voice-button {{voiceActiveClass}}"
88
92
  design="Default"
89
93
  icon="microphone"
90
- tooltip="Voice Button"
94
+ tooltip="{{tooltipInfo.tooltipVoiceButton}}"
91
95
  @click="{{onVoice}}"
92
96
  ></ui5-button>
93
97
  {{/if}}
@@ -95,6 +99,7 @@
95
99
  {{#if nonInteractiveSubmitButton}}
96
100
  <ui5-icon
97
101
  class="udex-search__icon"
102
+ accessible-name="{{accInfo.accessibleNameSearchIcon}}"
98
103
  name="search">
99
104
  </ui5-icon>
100
105
  {{else}}
@@ -103,7 +108,7 @@
103
108
  class="udex-search__button udex-search__submit-button {{searchButtonActiveClass}}"
104
109
  design="Default"
105
110
  icon="search"
106
- tooltip="Submit Button"
111
+ tooltip="{{tooltipInfo.tooltipSubmitButton}}"
107
112
  @click="{{onSubmit}}"
108
113
  ></ui5-button>
109
114
  {{/if}}
package/src/Search.ts CHANGED
@@ -16,7 +16,9 @@ import {
16
16
  isUp,
17
17
  isDown,
18
18
  isEscape,
19
+ isSpace,
19
20
  } from "@ui5/webcomponents-base/dist/Keys.js";
21
+ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
20
22
  import List from "./List.js";
21
23
  import ListItemBase from "./ListItemBase.js";
22
24
  import "@ui5/webcomponents/dist/Icon.js";
@@ -30,6 +32,11 @@ import {
30
32
  RECOMMENDED_TEXT,
31
33
  AVAILABLE_VALUES,
32
34
  NO_MATCHES_FOUND,
35
+ ACCESSIBLE_NAME_RESET_ICON,
36
+ ACCESSIBLE_NAME_SEARCH_ICON,
37
+ TOOLTIP_RESET_BUTTON,
38
+ TOOLTIP_VOICE_BUTTON,
39
+ TOOLTIP_SUBMIT_BUTTON,
33
40
  } from "./generated/i18n/i18n-defaults.js";
34
41
  import type SearchInputSuggestion from "./features/SearchSuggestionsPopover.js";
35
42
 
@@ -92,7 +99,7 @@ export enum Mode {
92
99
  * For the <code>udex-search</code>
93
100
  * <h3>ES6 Module Import</h3>
94
101
  *
95
- * <code>import @udex/web-components/dist/Search.js";</code>
102
+ * <code>import "@udex/web-components/dist/Search.js";</code>
96
103
  *
97
104
  * @constructor
98
105
  * @author SAP SE
@@ -316,6 +323,51 @@ class UDExSearch extends UI5Element {
316
323
  @property()
317
324
  accessibleName!: string;
318
325
 
326
+ /**
327
+ * Defines the accessible ARIA name of the reset icon.
328
+ *
329
+ * @default "Clear"
330
+ * @public
331
+ */
332
+ @property({ type: String })
333
+ accessibleNameResetIcon!: string;
334
+
335
+ /**
336
+ * Defines the accessible ARIA name of the search icon (applied just when "nonInteractiveSubmitButton" is active).
337
+ *
338
+ * @default "Search"
339
+ * @public
340
+ */
341
+ @property({ type: String })
342
+ accessibleNameSearchIcon!: string;
343
+
344
+ /**
345
+ * Defines the tooltip of the clear button.
346
+ *
347
+ * @default "Clear"
348
+ * @public
349
+ */
350
+ @property({ type: String })
351
+ tooltipResetButton!: string;
352
+
353
+ /**
354
+ * Defines the tooltip of the voice button.
355
+ *
356
+ * @default "Voice"
357
+ * @public
358
+ */
359
+ @property({ type: String })
360
+ tooltipVoiceButton!: string;
361
+
362
+ /**
363
+ * Defines the tooltip of the submit button.
364
+ *
365
+ * @default "Search"
366
+ * @public
367
+ */
368
+ @property({ type: String })
369
+ tooltipSubmitButton!: string;
370
+
319
371
  /**
320
372
  * Defines the text if the suggestion list doesn't return results.
321
373
  *
@@ -423,6 +475,29 @@ class UDExSearch extends UI5Element {
423
475
  @slot({ type: HTMLElement, "default": true })
424
476
  dropdownPrefix!: Array<List>;
425
477
 
478
+ /**
479
+ * Defines the open button icon
480
+ *
481
+ * @private
482
+ */
483
+ @property({ type: Boolean, noAttribute: true })
484
+ _prefixDropdownExpanded!: boolean;
485
+
486
+ /**
487
+ * Defines the active (focus)
488
+ * @default false
489
+ * @private
490
+ */
491
+ @property({ type: Boolean })
492
+ active!: boolean;
493
+ /**
494
+ * Defines is it the touch of the input field (only for mobile devices).
495
+ * @default false
496
+ * @private
497
+ */
498
+ @property({ type: Boolean })
499
+ _isTouched!: boolean;
500
+
426
501
  constructor() {
427
502
  super();
428
503
  this._handleResizeBound = this._handleResize.bind(this);
@@ -648,6 +723,7 @@ class UDExSearch extends UI5Element {
648
723
  const dropdown = this.getPrefixPopover();
649
724
  const button = this.getPrefixButton();
650
725
 
726
+ this._prefixDropdownExpanded = true;
651
727
  dropdown.showAt(this.getPrefixButton());
652
728
  dropdown.style.width = `${button.offsetWidth + 1}px`;
653
729
  button.classList.add("udex-search__prefix-button--active");
@@ -669,6 +745,7 @@ class UDExSearch extends UI5Element {
669
745
  const dropdown = this.getPrefixPopover();
670
746
 
671
747
  dropdown.close();
748
+ this._prefixDropdownExpanded = false;
672
749
  this.handleAfterClosePrefixPopover();
673
750
  }
674
751
 
@@ -682,6 +759,9 @@ class UDExSearch extends UI5Element {
682
759
  }
683
760
 
684
761
  handleInputClick(): void {
762
+ if (!isDesktop()) {
763
+ this._isTouched = true;
764
+ }
685
765
  if (this.showPopoverWhenClickedIntoInput) {
686
766
  this.onOpenPopover();
687
767
  }
@@ -699,7 +779,7 @@ class UDExSearch extends UI5Element {
699
779
 
700
780
  handleAriaExpanded() {
701
781
  const value = this.open.toString();
702
- this.shadowRoot?.querySelector("[udex-id='search-input']")?.setAttribute("aria-expanded", value);
782
+ this.getSearchInput()?.setAttribute("aria-expanded", value);
703
783
  }
704
784
 
705
785
  onOpenPopover(): void {
@@ -822,6 +902,7 @@ class UDExSearch extends UI5Element {
822
902
  }
823
903
 
824
904
  handleBlur(): void {
905
+ this._isTouched = false;
825
906
  if (this.value) {
826
907
  this.labelActiveClass = this._labelActiveClassName;
827
908
  } else {
@@ -917,6 +998,7 @@ class UDExSearch extends UI5Element {
917
998
  }
918
999
 
919
1000
  handleFocus(): void {
1001
+ this.active = true;
920
1002
  this.isFocusedOnTextfield = true;
921
1003
  this.focusClasses = this._focusActiveClassName;
922
1004
  this.labelActiveClass = (this.value || !this.labelAnimationDisabled) ? this._labelActiveClassName : "";
@@ -924,24 +1006,39 @@ class UDExSearch extends UI5Element {
924
1006
  }
925
1007
 
926
1008
  handleFocusout(): void {
1009
+ this.active = false;
927
1010
  this.isFocusedOnTextfield = false;
928
1011
  this.focusClasses = "";
929
1012
  }
930
1013
 
931
1014
  onReset(e: MouseEvent): void {
932
1015
  e.stopPropagation();
1016
+ this.handleReset();
1017
+ }
1018
+
1019
+ handleReset(): void {
933
1020
  this.value = "";
934
1021
  this.showResetButton = false;
935
1022
  this.onClosePopover();
936
- this.handleBlur();
937
1023
  this.fireEvent("handle-value-reset");
938
1024
  this.Suggestion?.resetFocusState();
1025
+ this.focus();
939
1026
  }
940
1027
 
941
1028
  handleKeyDownReset(e: KeyboardEvent) {
942
1029
  if (isTabPrevious(e) && this.open) {
943
1030
  this.Suggestion?.handlePrevTabReset(e);
944
1031
  }
1032
+ if (isEnter(e) || isSpace(e)) {
1033
+ e.preventDefault();
1034
+ e.stopPropagation();
1035
+ this.handleReset();
1036
+ this.getSearchInput()?.focus();
1037
+ }
1038
+ }
1039
+
1040
+ private getSearchInput(): HTMLInputElement {
1041
+ return this.shadowRoot?.querySelector("[id='search-input']") as HTMLInputElement;
945
1042
  }
946
1043
 
947
1044
  onVoice(e: MouseEvent): void {
@@ -965,7 +1062,7 @@ class UDExSearch extends UI5Element {
965
1062
  onSpeechStart(): void {
966
1063
  this.speechRecognition.onstart = () => {
967
1064
  this.voiceActiveClass = this._voiceActiveClassName;
968
- (this.shadowRoot?.querySelector("[id='search-input']") as HTMLInputElement)?.focus();
1065
+ this.getSearchInput()?.focus();
969
1066
  };
970
1067
  }
971
1068
 
@@ -1039,8 +1136,8 @@ class UDExSearch extends UI5Element {
1039
1136
  return !!(this.suggestedList?.length || this.recommendedList?.length);
1040
1137
  }
1041
1138
 
1042
- get getAriaControls(): string {
1043
- return this.hasPopoverContent ? this.getSuggestionsPopoverId : "";
1139
+ get getAriaHasPopup(): string {
1140
+ return this.showSuggestedPopover ? "dialog" : "false";
1044
1141
  }
1045
1142
 
1046
1143
  get getSuggestionsPopoverId(): string {
@@ -1098,6 +1195,16 @@ class UDExSearch extends UI5Element {
1098
1195
  get accInfo() {
1099
1196
  return {
1100
1197
  "ariaLabel": this.accessibleName || undefined,
1198
+ "accessibleNameResetIcon": this.accessibleNameResetIcon || UDExSearch.i18nBundle.getText(ACCESSIBLE_NAME_RESET_ICON) as string,
1199
+ "accessibleNameSearchIcon": this.accessibleNameSearchIcon || UDExSearch.i18nBundle.getText(ACCESSIBLE_NAME_SEARCH_ICON) as string,
1200
+ };
1201
+ }
1202
+
1203
+ get tooltipInfo() {
1204
+ return {
1205
+ "tooltipResetButton": this.tooltipResetButton || UDExSearch.i18nBundle.getText(TOOLTIP_RESET_BUTTON) as string,
1206
+ "tooltipVoiceButton": this.tooltipVoiceButton || UDExSearch.i18nBundle.getText(TOOLTIP_VOICE_BUTTON) as string,
1207
+ "tooltipSubmitButton": this.tooltipSubmitButton || UDExSearch.i18nBundle.getText(TOOLTIP_SUBMIT_BUTTON) as string,
1101
1208
  };
1102
1209
  }
1103
1210
 
@@ -7,6 +7,7 @@
7
7
  style="{{popoverStyles}}"
8
8
  id="{{getSuggestionsPopoverId}}"
9
9
  aria-orientation="vertical"
10
+ accessible-role="Dialog"
10
11
  accessible-name="{{suggestionsAccessibleName}}">
11
12
  {{#if showNoResultMessage}}
12
13
  <span class="udex-search-suggestions__message">{{noResultMessage}}</span>
@@ -16,7 +16,7 @@ import { NO_MATCHES_FOUND } from "./generated/i18n/i18n-defaults.js";
16
16
  * @class
17
17
  *
18
18
  * A class to serve as a foundation
19
- * for the <code>UDExFilterMenu</code> and <code>UDExSelectBox</code> classes.
19
+ * for the <code>UDExFilterMenu</code> , <code>UDExSelectBox</code> and <code>UDExCountrySelector/code> classes.
20
20
  *
21
21
  * @constructor
22
22
  * @author SAP SE
@@ -1,17 +1,19 @@
1
- <div class="udex-secondary-navigation__root">
1
+ <div class="{{rootClass}}">
2
2
  {{#if hasBreadcrumbsSlot}}
3
3
  <div class="udex-secondary-navigation__breadcrumbs">
4
4
  <slot name="breadcrumbs"></slot>
5
5
  </div>
6
6
  {{/if}}
7
7
  <div class="udex-secondary-navigation__holder">
8
- <div class="udex-secondary-navigation__heading">
9
- {{#if titleHref.length}}
10
- <a class="udex-secondary-navigation__title" href="{{titleHref}}">{{title}}</a>
11
- {{else}}
12
- <span class="udex-secondary-navigation__title">{{title}}</span>
13
- {{/if}}
14
- </div>
8
+ {{#if title.length}}
9
+ <div class="udex-secondary-navigation__heading">
10
+ {{#if titleHref.length}}
11
+ <a class="udex-secondary-navigation__title" href="{{titleHref}}">{{title}}</a>
12
+ {{else}}
13
+ <span class="udex-secondary-navigation__title">{{title}}</span>
14
+ {{/if}}
15
+ </div>
16
+ {{/if}}
15
17
  <div class="udex-secondary-navigation__wrap">
16
18
  <ul
17
19
  role="menubar"
@@ -22,9 +24,11 @@
22
24
  role="none"
23
25
  class="udex-secondary-navigation__list-item">
24
26
  <udex-secondary-navigation-item
27
+ index="{{@index}}"
25
28
  ?active="{{this.active}}"
26
29
  path="{{this.path}}"
27
30
  label="{{this.title}}"
31
+ mobile-link-title="{{this.mobileLinkTitle}}"
28
32
  target="{{this.target}}"
29
33
  .subItems="{{this.items}}"
30
34
  @ui5-sub-item-click="{{../handleSubItemClick}}"
@@ -37,6 +41,7 @@
37
41
  role="none"
38
42
  class="udex-secondary-navigation__list-item">
39
43
  <udex-secondary-navigation-item
44
+ index="{{visibleItems.length}}"
40
45
  @ui5-sub-item-click="{{../handleSubItemClick}}"
41
46
  @ui5-nav-item-click="{{../handleItemClick}}"
42
47
  label="{{this.moreButtonText}}"
@@ -55,6 +60,7 @@
55
60
  role="button"
56
61
  aria-label="{{mobileMenuOpenerAriaLabel}}"
57
62
  label="{{title}}"
63
+ mobile-link-title="{{title}}"
58
64
  @ui5-sub-item-click="{{handleSubItemClick}}"
59
65
  .subItems="{{this.parsedItems}}">
60
66
  {{#if hasMobileButtonsSlot}}
@@ -24,21 +24,15 @@ import SecondaryNavigationTemplate from "./generated/templates/SecondaryNavigati
24
24
  import SecondaryNavigationCss from "./generated/themes/SecondaryNavigation.css.js";
25
25
 
26
26
  const canvasContentFont: string = "16px / 17.6px '72 Brand Variable'";
27
- const breakpointSizeS: number = 979;
27
+ const rootClass = "udex-secondary-navigation__root";
28
+ export const breakpointSizeS: number = 979;
28
29
 
29
- export type SecondaryNavigationItemClickDetail = {
30
+ export type ItemClickDetail = {
30
31
  originalEvent: Event,
31
- clickedItem: UDExSecondaryNavigationItem;
32
+ clickedItem: NavItem;
32
33
  clickedIndex: number;
33
34
  };
34
35
 
35
- export type SecondaryNavigationSubItemClickDetail = {
36
- originalEvent: Event,
37
- clickedItem: {
38
- items: Array<NavItem>
39
- };
40
- }
41
-
42
36
  /**
43
37
  * @class
44
38
  *
@@ -70,13 +64,13 @@ export type SecondaryNavigationSubItemClickDetail = {
70
64
  * @allowPreventDefault
71
65
  * @public
72
66
  */
73
- @event<SecondaryNavigationItemClickDetail>("item-click", {
67
+ @event<ItemClickDetail>("item-click", {
74
68
  detail: {
75
69
  originalEvent: {
76
70
  type: Event,
77
71
  },
78
72
  clickedItem: {
79
- type: HTMLElement,
73
+ type: Object,
80
74
  },
81
75
  clickedIndex: {
82
76
  type: Integer,
@@ -84,23 +78,6 @@ export type SecondaryNavigationSubItemClickDetail = {
84
78
  },
85
79
  })
86
80
 
87
- /**
88
- * Fires when sub item is clicked
89
- *
90
- * @allowPreventDefault
91
- * @public
92
- */
93
- @event<SecondaryNavigationSubItemClickDetail>("sub-item-click", {
94
- detail: {
95
- originalEvent: {
96
- type: Event,
97
- },
98
- clickedItem: {
99
- type: HTMLElement,
100
- },
101
- },
102
- })
103
-
104
81
  class UDExSecondaryNavigation extends UI5Element {
105
82
  /**
106
83
  * Defines an aria label for the mobile menu opener
@@ -216,7 +193,7 @@ class UDExSecondaryNavigation extends UI5Element {
216
193
  }
217
194
 
218
195
  reflowItems(): void {
219
- const availableWidth = this.rootHolder.offsetWidth - this.heading?.offsetWidth - (this.optionalButtons?.offsetWidth || 0);
196
+ const availableWidth = this.rootHolder.offsetWidth - (this.heading?.offsetWidth || 0) - (this.optionalButtons?.offsetWidth || 0);
220
197
  const moreButtonWidth = this.getMoreButtonWidth();
221
198
  const itemsGap = 20;
222
199
  const widths = this.parsedItems.map(item => this.getItemWidth(item));
@@ -272,32 +249,42 @@ class UDExSecondaryNavigation extends UI5Element {
272
249
  }
273
250
 
274
251
  getItemWidth(item: NavItem): number {
275
- const canvas = document.createElement("canvas");
276
- const context = canvas.getContext("2d")!;
252
+ const context = this.getCanvasContext();
277
253
  context.font = canvasContentFont;
278
254
 
279
255
  return Math.ceil(context.measureText(item.title).width);
280
256
  }
281
257
 
282
258
  getMoreButtonWidth(): number {
283
- const canvas = document.createElement("canvas");
284
- const context = canvas.getContext("2d")!;
259
+ const context = this.getCanvasContext();
285
260
  context.font = canvasContentFont;
286
261
 
287
262
  return Math.ceil(context.measureText(this.moreButtonText).width);
288
263
  }
289
264
 
265
+ getCanvasContext(): CanvasRenderingContext2D {
266
+ const canvas = document.createElement("canvas");
267
+ return canvas.getContext("2d")!;
268
+ }
269
+
290
270
  getCurrentIndex(item: UDExSecondaryNavigationItem): number {
291
271
  return this.domNavItems.indexOf(item);
292
272
  }
293
273
 
294
274
  handleItemClick(e: CustomEvent): void {
295
275
  const clickedItem = e.detail.item as UDExSecondaryNavigationItem;
296
- const prevented = !this.fireEvent("item-click", {
297
- originalEvent: e,
298
- clickedItem,
299
- clickedIndex: this.getCurrentIndex(clickedItem),
300
- }, true);
276
+ const {
277
+ path, target, title, active, subItems, _id, mobileLinkTitle,
278
+ } = clickedItem;
279
+
280
+ const prevented = !this.fireEventItemClick(e, {
281
+ path,
282
+ target,
283
+ title,
284
+ active,
285
+ mobileLinkTitle,
286
+ items: subItems,
287
+ });
301
288
 
302
289
  if (prevented) {
303
290
  e.preventDefault();
@@ -305,9 +292,9 @@ class UDExSecondaryNavigation extends UI5Element {
305
292
  }
306
293
 
307
294
  this._clickedNavItem = clickedItem;
308
- this.closePrevDropdown(clickedItem._id);
295
+ this.closePrevDropdown(_id);
309
296
 
310
- if (!clickedItem.hasNestedItems) {
297
+ if (!subItems.length) {
311
298
  this.setActiveItem(this.parsedItems, clickedItem);
312
299
  }
313
300
  }
@@ -315,10 +302,7 @@ class UDExSecondaryNavigation extends UI5Element {
315
302
  handleSubItemClick(e: CustomEvent): void {
316
303
  const item = e.detail.item as UDExSecondaryNavigationSubItem;
317
304
  const { items } = item as NavItem;
318
- const prevented = !this.fireEvent("sub-item-click", {
319
- originalEvent: e,
320
- clickedItem: item,
321
- }, true);
305
+ const prevented = !this.fireEventItemClick(e, item);
322
306
 
323
307
  if (prevented) {
324
308
  e.preventDefault();
@@ -335,10 +319,30 @@ class UDExSecondaryNavigation extends UI5Element {
335
319
  }
336
320
  }
337
321
 
322
+ fireEventItemClick(
323
+ e: CustomEvent,
324
+ {
325
+ items, target, path, title, active, mobileLinkTitle,
326
+ }: NavItem,
327
+ ): boolean {
328
+ return this.fireEvent("item-click", {
329
+ originalEvent: e,
330
+ clickedItem: {
331
+ mobileLinkTitle: mobileLinkTitle || "",
332
+ path: path || "",
333
+ active: active || false,
334
+ items: items || [],
335
+ target,
336
+ title,
337
+ },
338
+ clickedIndex: e.detail.index,
339
+ }, true);
340
+ }
341
+
338
342
  setActiveItem(navItems: Array<NavItem>, clickedItem: UDExSecondaryNavigationItemBase): void {
339
343
  const updateNav = (items: Array<NavItem>, { title, path }: UDExSecondaryNavigationItemBase) => {
340
344
  items.forEach(item => {
341
- if (item.title === title && item.path === path) {
345
+ if (item.title === title && (item.path === path || !item.path)) {
342
346
  item.active = true;
343
347
  return;
344
348
  }
@@ -355,17 +359,29 @@ class UDExSecondaryNavigation extends UI5Element {
355
359
  }
356
360
 
357
361
  handleOutsideClick(): void {
358
- document.addEventListener("click", (e: MouseEvent) => {
359
- if (this.isMobileScreen && e.target !== this) {
360
- this.mobileNav?.closeDropdown();
361
- return;
362
- }
362
+ document.addEventListener("mousedown", this.outsideClickListener);
363
+ }
363
364
 
364
- const isClickedNavItem = e.composedPath().includes(this._clickedNavItem);
365
- if (this.isDesktopScreen && !isClickedNavItem && this._clickedNavItem) {
366
- this._clickedNavItem.closeDropdown();
367
- }
368
- });
365
+ outsideClickListener = (e: MouseEvent): void => {
366
+ if (this.isMobileScreen && e.target !== this) {
367
+ this.closeMobileDropdown();
368
+ return;
369
+ }
370
+
371
+ if (this.isDesktopScreen) {
372
+ this.handleDesktopDropdown(e);
373
+ }
374
+ };
375
+
376
+ closeMobileDropdown(): void {
377
+ this.mobileNav?.closeDropdown();
378
+ }
379
+
380
+ handleDesktopDropdown(e: MouseEvent): void {
381
+ const isClickedNavItem = e.composedPath().includes(this._clickedNavItem);
382
+ if (!isClickedNavItem && this._clickedNavItem) {
383
+ this._clickedNavItem.closeDropdown();
384
+ }
369
385
  }
370
386
 
371
387
  closePrevDropdown(clickedItemId: string): void {
@@ -417,6 +433,10 @@ class UDExSecondaryNavigation extends UI5Element {
417
433
  return !!this.getSlottedNodes("breadcrumbs").length && this.isDesktopScreen;
418
434
  }
419
435
 
436
+ get rootClass(): string {
437
+ return `${rootClass} ${this.hasBreadcrumbsSlot ? "" : `${rootClass}_centered`}`.trim();
438
+ }
439
+
420
440
  get hasDesktopButtonsSlot(): boolean {
421
441
  return this.hasButtons && this.isDesktopScreen;
422
442
  }
@@ -7,7 +7,7 @@
7
7
  target="{{target}}"
8
8
  @keydown="{{handleItemLinkKeyDown}}"
9
9
  @click="{{onItemClick}}">
10
- {{label}}
10
+ {{itemLabel}}
11
11
  </a>
12
12
  {{else}}
13
13
  <button
@@ -20,7 +20,7 @@
20
20
  @keydown="{{handleItemButtonKeyDown}}"
21
21
  @click="{{onItemClick}}">
22
22
  <span class="udex-secondary-navigation__item-text-wrap">
23
- {{label}}
23
+ {{itemLabel}}
24
24
  {{#if _subTitle}}
25
25
  <span
26
26
  class="udex-secondary-navigation__item-sub-title">
@@ -49,6 +49,7 @@
49
49
  @ui5-back-item-click="{{../onBackClick}}"
50
50
  is-back="{{this.isBack}}"
51
51
  label="{{this.title}}"
52
+ mobile-link-title="{{this.mobileLinkTitle}}"
52
53
  .nestedItems="{{this.items}}"
53
54
  path="{{this.path}}"
54
55
  target="{{this.target}}"