@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapudex/web-components",
3
- "version": "0.117.1",
3
+ "version": "0.138.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/"
6
6
  },
@@ -30,17 +30,17 @@
30
30
  "dependencies": {
31
31
  "@types/vimeo__player": "^2.18.3",
32
32
  "@types/youtube": "^0.1.0",
33
- "@ui5/webcomponents": "1.24.12",
34
- "@ui5/webcomponents-base": "1.24.12",
35
- "@ui5/webcomponents-fiori": "1.24.12",
36
- "@ui5/webcomponents-icons": "1.24.12",
37
- "@ui5/webcomponents-theming": "1.24.12",
33
+ "@ui5/webcomponents": "1.24.17",
34
+ "@ui5/webcomponents-base": "1.24.17",
35
+ "@ui5/webcomponents-fiori": "1.24.17",
36
+ "@ui5/webcomponents-icons": "1.24.17",
37
+ "@ui5/webcomponents-theming": "1.24.17",
38
38
  "@vimeo/player": "^2.24.0",
39
- "video.js": "8.19.2"
39
+ "video.js": "8.22.0"
40
40
  },
41
41
  "devDependencies": {
42
- "@ui5/webcomponents-tools": "1.24.12",
43
- "chromedriver": "^131.0.1",
42
+ "@ui5/webcomponents-tools": "1.24.17",
43
+ "chromedriver": "132.0.2",
44
44
  "cross-env": "^7.0.3",
45
45
  "typescript": "^4.9.4",
46
46
  "wdio-chromedriver-service": "^8.1.1",
package/src/Accordion.ts CHANGED
@@ -28,7 +28,7 @@ import { COLLAPSE_ALL, EXPAND_ALL } from "./generated/i18n/i18n-defaults.js";
28
28
  * For the <code>udex-accordion</code>
29
29
  * <h3>ES6 Module Import</h3>
30
30
  *
31
- * <code>import @udex/web-components/dist/Accordion.js";</code>
31
+ * <code>import "@udex/web-components/dist/Accordion.js";</code>
32
32
  *
33
33
  * @constructor
34
34
  * @author SAP SE
@@ -2,15 +2,12 @@
2
2
  aria-expanded="{{expanded}}"
3
3
  role="listitem"
4
4
  @keydown={{keydownHandler}}>
5
- <div class="udex-accordion-item__header-wrapper"
6
- aria-level="2"
7
- role="heading">
5
+ <div class="udex-accordion-item__header-wrapper">
8
6
  <div role="button"
9
7
  class="udex-accordion-item__header"
10
8
  tabindex="0"
11
9
  aria-expanded="false"
12
10
  aria-controls="udex-accordion-item__{{_id}}-content"
13
- aria-labelledby="{{ariaLabelledby}}"
14
11
  @focus={{focusHandler}}
15
12
  @click={{itemClickHandler}}>
16
13
  <div class="udex-accordion-item__icon-wrapper">
@@ -29,7 +29,7 @@ type ToggleAllEvent = {
29
29
  * For the <code>udex-accordion-item</code>
30
30
  * <h3>ES6 Module Import</h3>
31
31
  *
32
- * <code>import @udex/web-components/dist/AccordionItem.js";</code>
32
+ * <code>import "@udex/web-components/dist/AccordionItem.js";</code>
33
33
  *
34
34
  * @constructor
35
35
  * @author SAP SE
@@ -62,6 +62,8 @@ class UDExAccordionItem extends UI5Element {
62
62
 
63
63
  /**
64
64
  * Defines the title of the accordion item component.
65
+ * TODO: With transition to UI5 2.x, change "title" attribute name.
66
+ * Title property is also valid HTML attribute that results in showing hover tooltip and is read by screen readers.
65
67
  *
66
68
  * @default ""
67
69
  * @public
@@ -167,10 +169,6 @@ class UDExAccordionItem extends UI5Element {
167
169
  return classes;
168
170
  }
169
171
 
170
- get ariaLabelledby() {
171
- return `${this._id}-header-title`;
172
- }
173
-
174
172
  onAfterRendering() {
175
173
  this._el = this.shadowRoot?.querySelector(".udex-accordion-item") || null;
176
174
  const accordion = this.shadowRoot?.querySelector<HTMLElement>(
@@ -193,6 +191,9 @@ class UDExAccordionItem extends UI5Element {
193
191
  }
194
192
 
195
193
  this?.parentElement?.addEventListener("ui5-toggle-items", this.toggleAllHandler.bind(this));
194
+ // This should be removed with transition to UI5 2.x, we changed "title" attribute name.
195
+ // Fix was provided to avoid reading "title" property by screen readers, which results reading title twice.
196
+ this.setAttribute("aria-hidden", "true");
196
197
  }
197
198
  }
198
199
 
package/src/Avatar.ts CHANGED
@@ -200,6 +200,26 @@ class UDExAvatar extends UI5Element {
200
200
  }
201
201
  }
202
202
 
203
+ /**
204
+ * Returns the effective avatar size.
205
+ * @default "S"
206
+ * @private
207
+ */
208
+ get effectiveSize(): AvatarSize {
209
+ // we read the attribute, because the "size" property will always have a default value
210
+ return this.getAttribute("size") as AvatarSize || this.size;
211
+ }
212
+
213
+ /**
214
+ * Returns the effective background color.
215
+ * @default "Blue"
216
+ * @private
217
+ */
218
+ get еffectiveBackgroundColor(): AvatarColorScheme {
219
+ // we read the attribute, because the "background-color" property will always have a default value
220
+ return this.getAttribute("color-scheme") as AvatarColorScheme || this.colorScheme;
221
+ }
222
+
203
223
  get getUI5AvatarColorScheme(): string {
204
224
  return udexToUi5ColorSchemeMap[this.colorScheme];
205
225
  }
@@ -223,7 +243,10 @@ class UDExAvatar extends UI5Element {
223
243
  }
224
244
 
225
245
  get avatarAccessibleName(): string {
226
- return `${this.accessibleName ? this.accessibleName : UDExAvatar.i18nBundle.getText(AVATAR_TEXT)} ${this.disabled ? UDExAvatar.i18nBundle.getText(DISABLED) : ""} ${this.showAttentionBadge ? UDExAvatar.i18nBundle.getText(ATTENTION_BADGE) : ""}`;
246
+ let accName = `${this.accessibleName ? this.accessibleName : `${UDExAvatar.i18nBundle.getText(AVATAR_TEXT)} ${this.initials}`}`;
247
+ accName += ` ${this.disabled ? UDExAvatar.i18nBundle.getText(DISABLED) : ""}`;
248
+ accName += ` ${this.showAttentionBadge ? UDExAvatar.i18nBundle.getText(ATTENTION_BADGE) : ""}`;
249
+ return accName;
227
250
  }
228
251
  }
229
252
 
@@ -0,0 +1,135 @@
1
+ import AvatarGroup, { IAvatarGroupItem } from "@ui5/webcomponents/dist/AvatarGroup.js";
2
+ import AvatarGroupType from "@ui5/webcomponents/dist/types/AvatarGroupType.js";
3
+ import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
4
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
5
+ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
6
+
7
+ // Styles
8
+ import UI5AvatarGroupCss from "@ui5/webcomponents/dist/generated/themes/AvatarGroup.css.js";
9
+
10
+ import UDExAvatar, { AvatarColorScheme, AvatarSize } from "./Avatar.js";
11
+
12
+ const avatarOffsets = {
13
+ [AvatarSize.XS]: {
14
+ [AvatarGroupType.Individual]: "0.0625rem",
15
+ [AvatarGroupType.Group]: "-0.75rem",
16
+ },
17
+ [AvatarSize.S]: {
18
+ [AvatarGroupType.Individual]: "0.125rem",
19
+ [AvatarGroupType.Group]: "-1.25rem",
20
+ },
21
+ [AvatarSize.M]: {
22
+ [AvatarGroupType.Individual]: "0.125rem",
23
+ [AvatarGroupType.Group]: "-1.625rem",
24
+ },
25
+ [AvatarSize.L]: {
26
+ [AvatarGroupType.Individual]: "0.125rem",
27
+ [AvatarGroupType.Group]: "-2rem",
28
+ },
29
+ [AvatarSize.XL]: {
30
+ [AvatarGroupType.Individual]: "0.25rem",
31
+ [AvatarGroupType.Group]: "-2.75rem",
32
+ },
33
+ };
34
+
35
+ /**
36
+ * @class
37
+ *
38
+ * <h3 class="comment-api-title">Overview</h3>
39
+ *
40
+ *
41
+ * <h3>Usage</h3>
42
+ *
43
+ * For the <code>udex-avatar-group</code>
44
+ * <h3>ES6 Module Import</h3>
45
+ *
46
+ * <code>import "@udex/web-components/dist/AvatarGroup.js";</code>
47
+ *
48
+ * @constructor
49
+ * @author SAP SE
50
+ * @extends AvatarGroup
51
+ * @public
52
+ */
53
+ @customElement({
54
+ tag: "udex-avatar-group",
55
+ renderer: litRender,
56
+ styles: [UI5AvatarGroupCss],
57
+ dependencies: [UDExAvatar],
58
+ })
59
+
60
+ class UDExAvatarGroup extends AvatarGroup {
61
+ constructor() {
62
+ super();
63
+
64
+ this._itemNavigation = new ItemNavigation(this, {
65
+ getItemsCallback: () => {
66
+ return this._isGroup
67
+ ? []
68
+ : this.items.slice(0, this._hiddenStartIndex).map(
69
+ item => item.shadowRoot?.firstElementChild as IAvatarGroupItem,
70
+ );
71
+ },
72
+ });
73
+ }
74
+ onEnterDOM(): void {
75
+ super.onEnterDOM();
76
+ const container: HTMLElement = this.shadowRoot?.querySelector(".ui5-avatar-group-items") as HTMLElement;
77
+ container?.addEventListener("mouseenter", this._onHover.bind(this, true));
78
+ container?.addEventListener("mouseleave", this._onHover.bind(this, false));
79
+ }
80
+
81
+ onExitDOM(): void {
82
+ super.onExitDOM();
83
+ const container: HTMLElement = this.shadowRoot?.querySelector(".ui5-avatar-group-items") as HTMLElement;
84
+ container?.removeEventListener("mouseenter", this._onHover.bind(this, true));
85
+ container?.removeEventListener("mouseleave", this._onHover.bind(this, false));
86
+ }
87
+
88
+ _onHover(hover: boolean) {
89
+ if (this._isGroup) {
90
+ this.items.every(avatar => {
91
+ avatar.toggleAttribute("hover", hover);
92
+ return !avatar.hidden;
93
+ });
94
+ }
95
+ }
96
+
97
+ _onfocusin(e: FocusEvent) {
98
+ const targetItem = this._isGroup
99
+ ? e.currentTarget
100
+ : (e.target as HTMLElement).shadowRoot?.firstElementChild;
101
+ this._itemNavigation.setCurrentItem(targetItem as IAvatarGroupItem);
102
+ }
103
+
104
+ _prepareAvatars() {
105
+ this._colorIndex = 0;
106
+ const visibleColors = Object.values(AvatarColorScheme);
107
+ let avatarInitials = "";
108
+
109
+ this.items.forEach((avatar, index) => {
110
+ if (++this._colorIndex > visibleColors.length - 3) {
111
+ this._colorIndex = 1;
112
+ }
113
+ avatar.interactive = !this._isGroup;
114
+ avatar.toggleAttribute("ui5-avatar", true);
115
+ avatarInitials += this._isGroup && avatar.hasAttribute("initials") && !avatar.shadowRoot?.firstElementChild?.hasAttribute("_has-image")
116
+ ? `${avatar.getAttribute("initials")} ` : "";
117
+
118
+ if (!avatar.getAttribute("color-scheme")) {
119
+ avatar.setAttribute("color-scheme", visibleColors[this._colorIndex]);
120
+ }
121
+
122
+ if (index !== this._itemsCount - 1 || this._customOverflowButton) {
123
+ avatar.style.marginInlineEnd = avatarOffsets[avatar.effectiveSize][this.type];
124
+ }
125
+ });
126
+
127
+ if (avatarInitials) {
128
+ this.shadowRoot?.querySelector(".ui5-avatar-group-items")?.setAttribute("aria-label", `${avatarInitials}${this._ariaLabelText}`);
129
+ }
130
+ }
131
+ }
132
+
133
+ UDExAvatarGroup.define();
134
+
135
+ export default UDExAvatarGroup;
package/src/Checkbox.ts CHANGED
@@ -17,7 +17,7 @@ import CheckboxCss from "./generated/themes/Checkbox.css.js";
17
17
  * For the <code>udex-checkbox</code>
18
18
  * <h3>ES6 Module Import</h3>
19
19
  *
20
- * <code>import @udex/web-components/dist/Checkbox.js";</code>
20
+ * <code>import "@udex/web-components/dist/Checkbox.js";</code>
21
21
  *
22
22
  * @constructor
23
23
  * @author SAP SE
@@ -16,47 +16,51 @@
16
16
  {{> trigger}}
17
17
  {{searchableList}}
18
18
  </udex-dropdown>
19
+ {{#if supportingText}}
20
+ <udex-status-message
21
+ ?disabled="{{disabled}}"
22
+ supporting-text="{{supportingText}}"
23
+ value-state="{{valueState}}">
24
+ </udex-status-message>
25
+ {{/if}}
19
26
  </div>
20
27
 
21
28
  {{#*inline "trigger"}}
22
29
  <div
23
30
  class="{{countrySelectorTriggerClasses}}"
24
31
  ?disabled="{{isOpenerDisabled}}"
25
- value="{{selectedCountryName}}"
26
32
  slot="trigger">
27
- {{#if showFlagImages}}
28
- <img
33
+ {{#if showFlagImages}}
34
+ <img
29
35
  class="udex-country-selector__image"
30
36
  design="Default"
31
- icon="decline"
32
- tooltip="Reset Button"
33
- aria-label="{{selectedCountryName}}"
37
+ aria-label="{{flagAriaLabel}}"
34
38
  style="background-position-x: {{selectedCountryFlagX}}; background-position-y: {{selectedCountryFlagY}}">
35
- {{/if}}
39
+ {{/if}}
36
40
  <udex-text-field
37
- label="{{label}}"
41
+ label="{{effectiveAriaLabel}}"
38
42
  id="udexTextField"
39
43
  class="udex-country-selector__text"
40
- value-state="Standard"
44
+ value="{{selectedCountryName}}"
45
+ value-state="{{valueState}}"
41
46
  direction="left"
42
47
  aria-label="{{effectiveAriaLabel}}"
48
+ accessible-name="{{supportingText}}"
43
49
  accessible-name-ref="{{accessibleNameRef}}"
44
50
  aria-controls="{{ariaControls}}"
45
51
  role="combobox"
46
52
  aria-haspopup="true"
47
53
  aria-expanded="{{_open}}"
54
+ ?active="{{_open}}"
48
55
  ?required="{{required}}"
49
56
  ?disabled="{{disabled}}"
50
57
  ?readonly="{{readonly}}"
51
58
  ?displayonly="{{displayonly}}"
52
59
  @click-trigger="{{handleKeyDown}}"
60
+ @mousedown="{{handleInputMouseDown}}"
61
+ icon="{{triggerIcon}}"
62
+ accessible-icon-name="{{effectiveAriaLabel}}"
53
63
  maxlength="0">
54
64
  </udex-text-field>
55
- {{#unless displayonly}}
56
- <ui5-icon
57
- class="udex-country-selector__icon"
58
- name="navigation-down-arrow">
59
- </ui5-icon>
60
- {{/unless}}
61
65
  </div>
62
66
  {{/inline}}
@@ -8,6 +8,9 @@ import { isEnter, isSpace } from "@ui5/webcomponents-base/dist/Keys.js";
8
8
  import event from "@ui5/webcomponents-base/dist/decorators/event.js";
9
9
  import Button from "@ui5/webcomponents/dist/Button.js";
10
10
  import ResizeHandler, { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
11
+ import TextField from "./TextField.js";
12
+ import ValueState from "./types/common.js";
13
+ import StatusMessage from "./StatusMessage.js";
11
14
  import { COUNTRY_SELECT } from "./generated/i18n/i18n-defaults.js";
12
15
  import CountrySelectorTemplate from "./generated/templates/CountrySelectorTemplate.lit.js";
13
16
  import SearchableListBaseTemplate from "./generated/templates/SearchableListBaseTemplate.lit.js";
@@ -22,7 +25,6 @@ import { Country, CountryListDB } from "./data/CountryListISO3166.js";
22
25
  import UDExSearchableListBase from "./SearchableListBase.js";
23
26
  import UDExListItem from "./ListItem.js";
24
27
  import "@ui5/webcomponents-icons/dist/navigation-down-arrow.js";
25
- import TextField from "./TextField.js";
26
28
 
27
29
  /**
28
30
  * @class
@@ -35,7 +37,7 @@ import TextField from "./TextField.js";
35
37
  * For the <code>udex-country-selector</code>
36
38
  * <h3>ES6 Module Import</h3>
37
39
  *
38
- * <code>import @udex/web-components/dist/CountrySelector.js";</code>
40
+ * <code>import "@udex/web-components/dist/CountrySelector.js";</code>
39
41
  *
40
42
  * @constructor
41
43
  * @author SAP SE
@@ -55,6 +57,7 @@ import TextField from "./TextField.js";
55
57
  UDExDropdown,
56
58
  TextField,
57
59
  Button,
60
+ StatusMessage,
58
61
  ],
59
62
  })
60
63
 
@@ -229,6 +232,24 @@ class CountrySelector extends UDExSearchableListBase {
229
232
  @property({ type: String })
230
233
  searchPlaceholder!: string;
231
234
 
235
+ /**
236
+ * Defines the value state of the component.
237
+ *
238
+ * @default "Standard"
239
+ * @public
240
+ */
241
+ @property({ type: ValueState, defaultValue: ValueState.Standard })
242
+ valueState!: `${ValueState}`;
243
+
244
+ /**
245
+ * Defines supporting text under the country selector.
246
+ *
247
+ * @default ""
248
+ * @public
249
+ */
250
+ @property({ type: String, defaultValue: "" })
251
+ supportingText!: string;
252
+
232
253
  /**
233
254
  *
234
255
  * @public
@@ -240,7 +261,7 @@ class CountrySelector extends UDExSearchableListBase {
240
261
  _open?: boolean = false;
241
262
 
242
263
  countryList: Country[] = CountryListDB;
243
- selectedCountry!: Country;
264
+ selectedCountry!: Country | undefined;
244
265
 
245
266
  _dropdown!: UDExDropdown;
246
267
  _search!: Search;
@@ -275,7 +296,7 @@ class CountrySelector extends UDExSearchableListBase {
275
296
  }
276
297
 
277
298
  if (!this.selectedCountry) {
278
- this.selectedCountry = this.countryList.find(country => country.iso.toUpperCase() === this.preselectedCountry.toUpperCase()) || this.countryList[0];
299
+ this.selectedCountry = this.countryList.find(country => country.iso.toUpperCase() === this.preselectedCountry.toUpperCase());
279
300
  }
280
301
 
281
302
  this.prepareCountrySelectorItems();
@@ -338,6 +359,14 @@ class CountrySelector extends UDExSearchableListBase {
338
359
  return this.getCountryLabel(this.selectedCountry?.countryName, this.selectedCountry?.localName);
339
360
  }
340
361
 
362
+ get flagAriaLabel():string {
363
+ return this.getCountryLabel(this.selectedCountry?.countryName, this.selectedCountry?.localName) || "None";
364
+ }
365
+
366
+ get triggerIcon(): string {
367
+ return this._open ? "navigation-up-arrow" : "navigation-down-arrow";
368
+ }
369
+
341
370
  get countrySelectorClasses() {
342
371
  const baseClass = "udex-country-selector__dropdown";
343
372
  return this.hideFlagImages ? `${baseClass} ${baseClass}--hide-flag` : baseClass;
@@ -374,8 +403,8 @@ class CountrySelector extends UDExSearchableListBase {
374
403
  return this.hideFlagImages ? undefined : `<span class="udex-country-selector-item__image" style="background-position:${country.flagX}">`;
375
404
  }
376
405
 
377
- getCountryLabel(countryName: string, localName?: string) {
378
- return localName ? `${countryName} (${localName})` : countryName;
406
+ getCountryLabel(countryName?: string, localName?: string): string | null {
407
+ return localName ? `${countryName} (${localName})` : countryName || null;
379
408
  }
380
409
 
381
410
  handleCloseSearch() {
@@ -386,7 +415,7 @@ class CountrySelector extends UDExSearchableListBase {
386
415
  this.onItemPress(e);
387
416
  const target = e.target as HTMLElement;
388
417
  const item: any = this.getItemFromList(target?.getAttribute("data-token-id") as string);
389
- this.selectedCountry = this.countryList.find(country => country.iso === item._id) || this.countryList[0];
418
+ this.selectedCountry = this.countryList.find(country => country.iso === item._id);
390
419
  this._dropdown.onClose();
391
420
  }
392
421
 
@@ -411,6 +440,10 @@ class CountrySelector extends UDExSearchableListBase {
411
440
  }
412
441
  }
413
442
 
443
+ handleInputMouseDown(e: CustomEvent) {
444
+ e.preventDefault();
445
+ }
446
+
414
447
  onValueSearch(searchValue: string) {
415
448
  this._shouldFilterItems = true;
416
449
  this._filteredItems = this.filterItems(this.getProcessedItems(), searchValue);
@@ -442,7 +475,7 @@ class CountrySelector extends UDExSearchableListBase {
442
475
  prepareCountrySelectorItems(): void {
443
476
  this.items.length = 0;
444
477
  this.countryList.forEach(country => {
445
- const selected = country.iso.toUpperCase() === this.selectedCountry.iso.toUpperCase();
478
+ const selected = country.iso.toUpperCase() === this.selectedCountry?.iso.toUpperCase();
446
479
  this.items.push({
447
480
  label: this.getCountryLabel(country.countryName, country.localName),
448
481
  innerHTML: this.getItemTemplate(country),
@@ -465,7 +498,7 @@ class CountrySelector extends UDExSearchableListBase {
465
498
  }
466
499
 
467
500
  get effectiveAriaLabel(): string {
468
- return this.accessibleName || CountrySelector.i18nBundle.getText(COUNTRY_SELECT);
501
+ return this.label || this.accessibleName || CountrySelector.i18nBundle.getText(COUNTRY_SELECT);
469
502
  }
470
503
  }
471
504
 
@@ -1,30 +1,28 @@
1
1
  <div
2
- class="udex-date-picker__container"
3
- >
2
+ class="udex-date-picker__container">
4
3
  <udex-text-field
5
4
  @click="{{handleInputClick}}"
6
5
  @mousedown="{{handleInputMouseDown}}"
7
6
  @keydown="{{handleInputKeyDown}}"
8
7
  class="udex-date-picker__input udex-date-picker__trigger"
9
8
  label="{{label}}"
10
- accessible-name="{{accessibleName}}"
9
+ accessible-name="{{dateAccessibleName}}"
11
10
  accessible-name-ref="{{accessibleNameRef}}"
12
11
  accessible-icon-name="{{accessibleIconName}}"
13
- aria-haspopup="grid"
12
+ _aria-has-popup="grid"
14
13
  ?disabled="{{disabled}}"
15
14
  ?required="{{required}}"
16
15
  ?readonly="{{readonly}}"
17
16
  value="{{value}}"
18
17
  icon="appointment-2"
19
- tabindex="0"
20
18
  value-state="{{valueState}}"
21
19
  >
22
20
  </udex-text-field>
23
21
  {{#if supportingText}}
24
- <udex-status-message
25
- ?disabled="{{disabled}}"
26
- supporting-text="{{supportingText}}"
27
- value-state="{{valueState}}">
22
+ <udex-status-message
23
+ ?disabled="{{disabled}}"
24
+ supporting-text="{{supportingText}}"
25
+ value-state="{{valueState}}">
28
26
  </udex-status-message>
29
27
  {{/if}}
30
28
  </div>
package/src/DatePicker.ts CHANGED
@@ -10,7 +10,7 @@ import "@ui5/webcomponents/dist/Icon.js";
10
10
  import "@ui5/webcomponents-icons/dist/appointment-2.js";
11
11
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
12
12
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
13
- import { CALENDAR_ICON } from "./generated/i18n/i18n-defaults.js";
13
+ import { CALENDAR_ICON, DATEPICKER_DATE_DESCRIPTION } from "./generated/i18n/i18n-defaults.js";
14
14
 
15
15
  // Template
16
16
  import DatePickerTemplate from "./generated/templates/DatePickerTemplate.lit.js";
@@ -223,16 +223,16 @@ class UDExDatePicker extends UI5Element {
223
223
 
224
224
  static i18nBundle: I18nBundle;
225
225
 
226
- static async onDefine() {
226
+ static async onDefine(): Promise<void> {
227
227
  UDExDatePicker.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
228
228
  }
229
229
 
230
- async _getCalendar() {
230
+ async _getCalendar(): Promise<Calendar> {
231
231
  const staticAreaItem = await this.getStaticAreaItemDomRef();
232
232
  return staticAreaItem!.querySelector<Calendar>("#ui5-calendar")!;
233
233
  }
234
234
 
235
- async _getResponsePopover() {
235
+ async _getResponsePopover(): Promise<UDExDropdown> {
236
236
  const staticAreaItem = await this.getStaticAreaItemDomRef();
237
237
  return staticAreaItem!.querySelector<UDExDropdown>(`#udex-${this.__id!}-calendar__popover`)!;
238
238
  }
@@ -241,24 +241,24 @@ class UDExDatePicker extends UI5Element {
241
241
  * Getter for the interactive element that opens the overflow
242
242
  * @private
243
243
  */
244
- get _dropdownTrigger() {
244
+ get _dropdownTrigger(): UDExTextField {
245
245
  return this.shadowRoot!.querySelector<UDExTextField>(".udex-date-picker__trigger")!;
246
246
  }
247
247
 
248
- _afterDropdownClose() {
248
+ _afterDropdownClose(): void {
249
249
  this._dropdownTrigger.active = false;
250
250
  this._dropdownTrigger.shadowRoot?.querySelector("input")?.focus();
251
251
  }
252
252
 
253
- _afterDropdownOpen() {
253
+ _afterDropdownOpen(): void {
254
254
  this._dropdownTrigger.active = true;
255
255
  }
256
256
 
257
- _closeRespPopover() {
257
+ _closeRespPopover(): void {
258
258
  this.responsivePopover && this.responsivePopover.onClose();
259
259
  }
260
260
 
261
- async _openRespPopover() {
261
+ async _openRespPopover(): Promise<void> {
262
262
  this._dropdownTrigger.active = true;
263
263
  this.responsivePopover = await this._getResponsePopover();
264
264
  this.responsivePopover?.onOpen(this._dropdownTrigger);
@@ -337,9 +337,13 @@ class UDExDatePicker extends UI5Element {
337
337
  return [];
338
338
  }
339
339
 
340
- get accessibleIconName() {
340
+ get accessibleIconName(): string {
341
341
  return UDExDatePicker.i18nBundle.getText(CALENDAR_ICON);
342
342
  }
343
+
344
+ get dateAccessibleName(): string {
345
+ return this.accessibleName || UDExDatePicker.i18nBundle.getText(DATEPICKER_DATE_DESCRIPTION);
346
+ }
343
347
  }
344
348
 
345
349
  UDExDatePicker.define();
package/src/Dropdown.hbs CHANGED
@@ -2,17 +2,23 @@
2
2
  {{#if hasTriggerSlot}}
3
3
  <div
4
4
  class="udex-dropdown__opener"
5
+ role="{{triggerAccessibleRole}}"
6
+ aria-label="{{triggerAccessibleName}}"
7
+ aria-expanded="{{open}}"
5
8
  aria-haspopup="true"
6
- aria-controls="udex-dropdown"
9
+ aria-controls="{{this._id}}_udex-dropdown"
10
+ id="{{this._id}}-trigger"
7
11
  @click="{{onTriggerClick}}">
8
12
  <slot slot="trigger" name="trigger"></slot>
9
13
  </div>
10
14
  {{/if}}
11
15
  <ui5-popover
12
- id="udex-dropdown"
16
+ id="{{this._id}}_udex-dropdown"
13
17
  class="udex-dropdown__pane"
14
18
  ?allow-target-overlap="{{disableAllowTargetOverlap}}"
15
19
  hide-arrow
20
+ .open="{{open}}"
21
+ opener="{{this._id}}-trigger"
16
22
  placement-type="{{placementType}}"
17
23
  horizontal-align="{{horizontalAlign}}"
18
24
  accessible-name="{{accessibleName}}"