@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/SelectBox.ts CHANGED
@@ -15,13 +15,14 @@ import {
15
15
  isUp,
16
16
  isEscape,
17
17
  isBackSpace,
18
+ isShift,
18
19
  } from "@ui5/webcomponents-base/dist/Keys.js";
19
20
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
20
21
  import Tokenizer from "@ui5/webcomponents/dist/Tokenizer.js";
21
22
  import Icon from "@ui5/webcomponents/dist/Icon.js";
22
23
  import Token from "@ui5/webcomponents/dist/Token.js";
23
24
  import ResizeHandler, { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
24
- import UDExDropdown from "./Dropdown.js";
25
+ import ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
25
26
  import UDExList from "./List.js";
26
27
  import UDExListItem from "./ListItem.js";
27
28
  import UDExListGroupHeader from "./ListGroupHeader.js";
@@ -44,6 +45,7 @@ import SelectBoxCss from "./generated/themes/SelectBox.css.js";
44
45
  import TextFieldCss from "./generated/themes/TextField.css.js";
45
46
  import SearchableListCss from "./generated/themes/SearchableList.css.js";
46
47
  import UDExStatusMessage from "./StatusMessage.js";
48
+ import UDExControlButton from "./ControlButton.js";
47
49
 
48
50
  /**
49
51
  * @class
@@ -75,7 +77,6 @@ import UDExStatusMessage from "./StatusMessage.js";
75
77
  UDExListSelectAll,
76
78
  UDExSelectBoxItem,
77
79
  UDExList,
78
- UDExDropdown,
79
80
  UDExTooltip,
80
81
  UDExSearch,
81
82
  UDExButton,
@@ -84,6 +85,8 @@ import UDExStatusMessage from "./StatusMessage.js";
84
85
  Token,
85
86
  Icon,
86
87
  UDExStatusMessage,
88
+ UDExControlButton,
89
+ ResponsivePopover,
87
90
  ],
88
91
  })
89
92
 
@@ -220,20 +223,37 @@ class UDExSelectBox extends UDExSearchableListBase {
220
223
  @property({ type: String, noAttribute: true })
221
224
  _direction?: string;
222
225
 
226
+ /**
227
+ * @default false
228
+ * @private
229
+ */
223
230
  @property({ type: Boolean })
224
231
  _focused!: boolean;
225
232
 
233
+ /**
234
+ * @default false
235
+ * @private
236
+ */
226
237
  @property({ type: Boolean })
227
- _open?: boolean = false;
238
+ _open!: boolean;
228
239
 
240
+ /**
241
+ * @default false
242
+ * @private
243
+ */
229
244
  @property({ type: Boolean })
230
- _showTagsDropdownContent: boolean = false;
245
+ _showTagsDropdownContent!: boolean;
231
246
 
232
- _dropdown!: UDExDropdown;
247
+ _trigger!: HTMLElement;
248
+ _popover!: ResponsivePopover;
233
249
  _tokenizer!: Tokenizer;
234
250
  _search!: UDExSearch;
235
251
  _singleSelectedOption!: string;
236
252
  _truncatableTag!: UDExTag;
253
+ _tags!: Array<UDExTag>;
254
+ _inactiveTabIndex: number = -1;
255
+ _activeTabIndex: number = 0;
256
+ _openedByTrigger: boolean = true;
237
257
 
238
258
  _handleResizeBound: ResizeObserverCallback;
239
259
 
@@ -244,22 +264,24 @@ class UDExSelectBox extends UDExSearchableListBase {
244
264
  this._filteredItems = [];
245
265
  }
246
266
 
247
- onEnterDOM(): void {
267
+ onEnterDOM() {
248
268
  ResizeHandler.register(this, this._handleResizeBound);
249
269
  }
250
270
 
251
- onExitDOM(): void {
271
+ onExitDOM() {
252
272
  ResizeHandler.deregister(this, this._handleResizeBound);
253
273
  }
254
274
 
255
275
  onAfterRendering() {
256
- this._tokenizer = this.tokenizer;
257
- this._dropdown = this.dropdown;
258
- this._search = this.search;
276
+ this._tokenizer = this.getTokenizer();
277
+ this._popover = this.getPopover();
278
+ this._search = this.getSearch();
279
+ this._trigger = this.getTrigger();
280
+ this._tags = this.getTags();
259
281
  this.handleDirection();
260
-
261
282
  if (this._tokenizer?.tokens.length > 0) {
262
283
  this.handleOutsideClick();
284
+ this.resetTagsTabIndexes();
263
285
  }
264
286
  }
265
287
 
@@ -272,7 +294,7 @@ class UDExSelectBox extends UDExSearchableListBase {
272
294
  }
273
295
 
274
296
  _handleResize() {
275
- this._dropdown.style.setProperty("--udex-dropdown-pane-width", `${this.offsetWidth}px`);
297
+ this._popover.style.setProperty("--udex-dropdown-pane-width", `${this.offsetWidth}px`);
276
298
  }
277
299
 
278
300
  handleItemPress(e:CustomEvent) {
@@ -322,7 +344,11 @@ class UDExSelectBox extends UDExSearchableListBase {
322
344
  }
323
345
 
324
346
  handleDropdownBeforeOpen() {
325
- this._open = true;
347
+ if (this.height) {
348
+ const content = this._popover.shadowRoot!.querySelector("[part=content]") as HTMLElement;
349
+ content.style.maxHeight = this.height;
350
+ }
351
+ this.fireEvent("before-open");
326
352
  }
327
353
 
328
354
  handleDropdownAfterClose() {
@@ -364,13 +390,7 @@ class UDExSelectBox extends UDExSearchableListBase {
364
390
  handleTagPress(e: CustomEvent) {
365
391
  const tag = e.target as UDExTag;
366
392
  tag.selected = false;
367
-
368
- if (tag.isTruncatable && !this._tokenizer.expanded) {
369
- this._truncatableTag = tag;
370
- this._truncatableTag.selected = true;
371
- this._showTagsDropdownContent = true;
372
- this.openDropdown();
373
- }
393
+ this.toggleTruncatedPopover(tag);
374
394
  }
375
395
 
376
396
  handleUnselectTruncatableTag() {
@@ -381,11 +401,13 @@ class UDExSelectBox extends UDExSearchableListBase {
381
401
 
382
402
  handleKeydownTokenizer(e: KeyboardEvent) {
383
403
  e.stopPropagation();
404
+ this.getTagContent(this._tags[0]).tabIndex = this._inactiveTabIndex;
405
+
384
406
  const target = e.target as Token;
385
407
  const activeIndex = this._tokenizer.tokens?.indexOf(target);
386
408
  const tagsCount = this._tokenizer._tokensCount;
387
- const isTabPreviousFirstTag = isTabPrevious(e) && activeIndex === 0;
388
- const isTabNextLastTag = isTabNext(e) && this._tokenizer._tokensCount === activeIndex + 1;
409
+ const shouldNavigateTags = (isLeft(e) || isRight(e) || isBackSpace(e) || isDelete(e)) && tagsCount > 0;
410
+ this._tokenizer.expanded = shouldNavigateTags;
389
411
 
390
412
  if (isLeft(e) && activeIndex !== 0) {
391
413
  this.focusTag(activeIndex - 1);
@@ -397,35 +419,33 @@ class UDExSelectBox extends UDExSearchableListBase {
397
419
  this.scrollToTag(activeIndex + 1);
398
420
  }
399
421
 
400
- if (isTabNextLastTag || isTabPreviousFirstTag) {
401
- this._tokenizer.expanded = false;
402
- }
403
-
404
- if (isDown(e) || isUp(e)) {
422
+ if ((isDown(e) || isUp(e))) {
423
+ this._openedByTrigger = false;
405
424
  this.openDropdown();
406
425
  }
407
426
  }
408
427
 
409
428
  handleKeyDownTrigger(e: KeyboardEvent) {
410
- if (isSpace(e)) {
411
- e.preventDefault();
412
- }
413
-
414
429
  if (isSpace(e) || isEnter(e)) {
430
+ e.preventDefault();
431
+ e.stopPropagation();
432
+ this._showTagsDropdownContent = false;
433
+ this._openedByTrigger = true;
415
434
  this.openDropdown();
416
435
  }
417
-
418
- if (isTabNext(e) && this._tokenizer?._tokensCount > 0) {
419
- this._tokenizer.expanded = true;
420
- setTimeout(() => {
421
- this.focusTag(this._tokenizer._tokensCount - 1);
422
- });
423
- }
424
436
  }
425
437
 
426
438
  handleKeyDownTag(e: KeyboardEvent) {
427
- if (isSpace(e)) {
439
+ const tag = e.target as UDExTag;
440
+ if (isSpace(e) || isShift(e) || isEnter(e)) {
428
441
  e.preventDefault();
442
+ e.stopPropagation();
443
+ }
444
+
445
+ if (tag.isTruncatable && this.validTruncatableKey(e)) {
446
+ this.toggleTruncatedPopover(tag);
447
+ } else {
448
+ this._showTagsDropdownContent = false;
429
449
  }
430
450
 
431
451
  if (isDelete(e) || isBackSpace(e)) {
@@ -433,32 +453,37 @@ class UDExSelectBox extends UDExSearchableListBase {
433
453
  const target = e.target as Token;
434
454
  const tags = this._tokenizer.tokens;
435
455
  const deletedTagIndex = tags.indexOf(target);
436
- const nextTokenIndex = deletedTagIndex === tags.length - 1 ? deletedTagIndex - 1 : deletedTagIndex + 1;
456
+ let nextTokenIndex = deletedTagIndex + 1;
437
457
  if (this._tokenizer.tokens.length !== 1) {
438
- this.focusTag(nextTokenIndex);
458
+ if (deletedTagIndex === tags.length - 1) {
459
+ nextTokenIndex = deletedTagIndex - 1;
460
+ this.focusTag(nextTokenIndex);
461
+ } else {
462
+ this.focusTag(nextTokenIndex);
463
+ }
439
464
  this.scrollToTag(nextTokenIndex);
440
465
  } else {
441
- this.trigger.focus();
466
+ this._trigger.focus();
442
467
  }
443
468
  }
444
469
  }
445
470
 
446
471
  handleKeyDownDropdown(e: KeyboardEvent) {
447
472
  const isTabPrevPress = isTabPrevious(e) && !this._search;
473
+ const isTabNextPress = isTabNext(e);
474
+ const isEscapePress = isEscape(e);
475
+ const isSearchResetTrigger = e.target === this._search;
448
476
 
449
- if (isEscape(e)) {
450
- this.trigger.focus();
451
- }
452
-
453
- if (isTabNext(e) || isTabPrevPress) {
454
- this.closeDropdown();
477
+ if ((isTabNextPress && (!isSearchResetTrigger || this.isListEmpty)) || isTabPrevPress || isEscapePress) {
478
+ this.closeDropdown(e);
455
479
  }
456
480
  }
457
481
 
458
482
  handleKeyDownSearch(e: CustomEvent) {
459
483
  const keyEvent = e.detail as KeyboardEvent;
484
+
460
485
  if (isTabPrevious(keyEvent) || isEscape(keyEvent)) {
461
- this.closeDropdown();
486
+ this.closeDropdown(keyEvent);
462
487
  }
463
488
  }
464
489
 
@@ -471,12 +496,41 @@ class UDExSelectBox extends UDExSearchableListBase {
471
496
  }
472
497
 
473
498
  openDropdown() {
474
- this._dropdown.onOpen(this.trigger);
499
+ this._popover.showAt(this._trigger);
500
+ this._open = true;
501
+ if (this.showMultiSelectedOptions) {
502
+ this._tokenizer.expanded = true;
503
+ }
475
504
  }
476
505
 
477
- closeDropdown() {
478
- if (this._dropdown.open) {
479
- this._dropdown.onClose();
506
+ closeDropdown(e?: KeyboardEvent) {
507
+ if (this._popover.open) {
508
+ if (this._tokenizer) {
509
+ this._tokenizer.expanded = false;
510
+ }
511
+
512
+ if (e && (isEscape(e) || isTabPrevious(e))) {
513
+ e.preventDefault();
514
+ if (this._openedByTrigger) {
515
+ this._trigger.focus();
516
+ } else {
517
+ this.focusTag(0);
518
+ }
519
+ }
520
+ this._popover.close();
521
+ }
522
+ }
523
+
524
+ toggleTruncatedPopover(tag: UDExTag) {
525
+ if (!tag.isTruncatable) {
526
+ this._showTagsDropdownContent = false;
527
+ }
528
+
529
+ if (tag.isTruncatable && !this._open) {
530
+ this._truncatableTag = tag;
531
+ this._truncatableTag.selected = true;
532
+ this._showTagsDropdownContent = true;
533
+ this.openDropdown();
480
534
  }
481
535
  }
482
536
 
@@ -496,7 +550,7 @@ class UDExSelectBox extends UDExSearchableListBase {
496
550
  }
497
551
 
498
552
  handleOpenMultiSelect() {
499
- if (this._dropdown.open) {
553
+ if (this._popover.open) {
500
554
  this.closeDropdown();
501
555
  } else {
502
556
  this._showTagsDropdownContent = false;
@@ -505,7 +559,7 @@ class UDExSelectBox extends UDExSearchableListBase {
505
559
  }
506
560
 
507
561
  handleOpenSingleSelect() {
508
- if (this._dropdown.open) {
562
+ if (this._popover.open) {
509
563
  this.closeDropdown();
510
564
  } else {
511
565
  this.openDropdown();
@@ -524,6 +578,30 @@ class UDExSelectBox extends UDExSearchableListBase {
524
578
  return this.displayonly ? this.showMoreReadOnlyItems() : this.showMoreItems();
525
579
  }
526
580
 
581
+ getPopover(): ResponsivePopover {
582
+ return this.shadowRoot!.querySelector<ResponsivePopover>("[ui5-popover]")!;
583
+ }
584
+
585
+ getSearch(): UDExSearch {
586
+ return this.shadowRoot!.querySelector<UDExSearch>("udex-search")!;
587
+ }
588
+
589
+ getTrigger(): HTMLElement {
590
+ return this.shadowRoot!.querySelector(".udex-text-field__input")!;
591
+ }
592
+
593
+ getTokenizer(): Tokenizer {
594
+ return this.shadowRoot!.querySelector<Tokenizer>("[ui5-tokenizer]")!;
595
+ }
596
+
597
+ getTags(): Array<UDExTag> {
598
+ return Array.from(this.shadowRoot!.querySelectorAll<UDExTag>("udex-tag"));
599
+ }
600
+
601
+ getTagContent(tag: UDExTag): HTMLElement {
602
+ return tag.shadowRoot!.querySelector(".udex-tag")!;
603
+ }
604
+
527
605
  handleDirection() {
528
606
  const directionStyles: string = window
529
607
  .getComputedStyle(this)
@@ -536,6 +614,18 @@ class UDExSelectBox extends UDExSearchableListBase {
536
614
  }
537
615
  }
538
616
 
617
+ validTruncatableKey(e: KeyboardEvent): boolean {
618
+ return isSpace(e) || isEnter(e);
619
+ }
620
+
621
+ resetTagsTabIndexes() {
622
+ this._tags.forEach((tag, i) => { this.getTagContent(tag).tabIndex = i === 0 ? this._activeTabIndex : this._inactiveTabIndex; });
623
+ }
624
+
625
+ get allowTargetOverlap(): boolean {
626
+ return !this.disableTargetOverlap;
627
+ }
628
+
539
629
  get isDisabled(): boolean {
540
630
  return this.readonly || this.displayonly || this.disabled;
541
631
  }
@@ -556,22 +646,6 @@ class UDExSelectBox extends UDExSearchableListBase {
556
646
  return this.hasSelectedItems && this.modeMultiSelect;
557
647
  }
558
648
 
559
- get dropdown(): UDExDropdown {
560
- return this.shadowRoot!.querySelector<UDExDropdown>("udex-dropdown")!;
561
- }
562
-
563
- get search(): UDExSearch {
564
- return this.shadowRoot!.querySelector<UDExSearch>("udex-search")!;
565
- }
566
-
567
- get trigger(): UDExDropdown {
568
- return this.shadowRoot!.querySelector(".udex-text-field__input")!;
569
- }
570
-
571
- get tokenizer(): Tokenizer {
572
- return this.shadowRoot!.querySelector<Tokenizer>("[ui5-tokenizer]")!;
573
- }
574
-
575
649
  get labelClass(): string {
576
650
  const baseClass = "udex-text-field__label";
577
651
  const isActive = this._open || this._singleSelectedOption || this.hasSelectedItems;
@@ -592,6 +666,11 @@ class UDExSelectBox extends UDExSearchableListBase {
592
666
  if (this._showTagsDropdownContent && this._truncatableTag) {
593
667
  return false;
594
668
  }
669
+
670
+ if (this._tokenizer) {
671
+ return this._tokenizer.expanded;
672
+ }
673
+
595
674
  return this._open;
596
675
  }
597
676
 
@@ -605,7 +684,11 @@ class UDExSelectBox extends UDExSearchableListBase {
605
684
 
606
685
  get effectiveTabIndex(): string {
607
686
  const tabindex = this.getAttribute("tabindex");
608
- return this.disabled ? "-1" : tabindex || "0";
687
+ return this.disabled ? `${this._inactiveTabIndex}` : tabindex || `${this._inactiveTabIndex}`;
688
+ }
689
+
690
+ get triggerTabIndex(): string {
691
+ return this.disabled || this.readonly ? `${this._inactiveTabIndex}` : "";
609
692
  }
610
693
 
611
694
  get iconAccessibleNameText(): string {
@@ -82,13 +82,13 @@ class UDExStatusBadge extends UI5Element {
82
82
  @property({ type: BadgeSize, defaultValue: BadgeSize.S })
83
83
  size!: `${BadgeSize}`;
84
84
 
85
- /**
85
+ /**
86
86
  * Defines the text alternative of the component.
87
87
  *
88
88
  * @default ""
89
89
  * @public
90
90
  */
91
- @property({ type: String, defaultValue: "" })
91
+ @property({ type: String, defaultValue: "" })
92
92
  accessibleName!: string;
93
93
 
94
94
  static i18nBundle: I18nBundle;
package/src/Switch.hbs CHANGED
@@ -1,12 +1,12 @@
1
1
  <div class="udex-switch">
2
2
  {{#if label}}
3
- <label for="udex-switch__input" class="udex-switch__label">{{label}}</label>
3
+ <label id="{{this._id}}-switch__label" for="{{this._id}}-switch__input" class="udex-switch__label" part="label">{{label}}</label>
4
4
  {{/if}}
5
5
  <div
6
6
  class="udex-switch__container"
7
7
  role="switch"
8
8
  aria-label="{{accessibleName}}"
9
- aria-labelledby="{{accessibleNameRef}}"
9
+ aria-labelledby="{{ariaLabeledBy}}"
10
10
  aria-checked="{{checked}}"
11
11
  aria-disabled="{{disabled}}"
12
12
  tabindex="{{switchTabIndex}}"
@@ -32,6 +32,6 @@
32
32
  </div>
33
33
  </div>
34
34
 
35
- <input id="udex-switch__input" type="checkbox" ?checked="{{checked}}" class="udex-switch__input" />
35
+ <input id="{{this._id}}-switch__input" type="checkbox" ?checked="{{checked}}" class="udex-switch__input" />
36
36
  </div>
37
37
  </div>
package/src/Switch.ts CHANGED
@@ -22,6 +22,26 @@ export enum SwitchColor {
22
22
  Semantic = "Semantic",
23
23
  }
24
24
 
25
+ /**
26
+ * @class
27
+ *
28
+ * <h3 class="comment-api-title">Overview</h3>
29
+ *
30
+ *
31
+ * <h3>Usage</h3>
32
+ *
33
+ * For the <code>udex-switch</code>
34
+ * <h3>ES6 Module Import</h3>
35
+ *
36
+ * <code>import "@udex/web-components/dist/Switch.js";</code>
37
+ *
38
+ * @constructor
39
+ * @author SAP SE
40
+ * @extends UI5Element
41
+ * @tagname udex-switch
42
+ * @public
43
+ */
44
+
25
45
  @customElement({
26
46
  tag: "udex-switch",
27
47
  renderer: litRender,
@@ -29,6 +49,7 @@ export enum SwitchColor {
29
49
  template: SwitchTemplate,
30
50
  dependencies: [Icon],
31
51
  })
52
+
32
53
  /**
33
54
  * Fired when the component checked state changes.
34
55
  *
@@ -131,6 +152,10 @@ class UDExSwitch extends UI5Element {
131
152
  get isSemanticColor(): boolean {
132
153
  return this.color === SwitchColor.Semantic;
133
154
  }
155
+
156
+ get ariaLabeledBy(): string {
157
+ return this.accessibleNameRef || this.label ? `${this._id}-switch__label` : "";
158
+ }
134
159
  }
135
160
 
136
161
  UDExSwitch.define();
package/src/Tab.ts CHANGED
@@ -46,6 +46,7 @@ interface ITab extends UI5Element {
46
46
  _slotName: string;
47
47
  _selected?: boolean;
48
48
  _tabIndex: string;
49
+ _contentTabIndex: string;
49
50
  _iconWithoutBackground: boolean;
50
51
  _posinset?: number;
51
52
  _setsize?: number;
@@ -66,7 +67,7 @@ interface ITab extends UI5Element {
66
67
  * For the <code>udex-tab</code>
67
68
  * <h3>ES6 Module Import</h3>
68
69
  *
69
- * <code>import @udex/web-components/dist/Tab.js";</code>
70
+ * <code>import "@udex/web-components/dist/Tab.js";</code>
70
71
  *
71
72
  * @constructor
72
73
  * @author SAP SE
@@ -173,6 +174,15 @@ class UDExTab extends UI5Element implements ITab {
173
174
  @property({ type: String })
174
175
  _tabIndex!: string;
175
176
 
177
+ /**
178
+ * Defines the tabindex of the tab content.
179
+ *
180
+ * @private
181
+ * @default -1
182
+ */
183
+ @property({ type: String })
184
+ _contentTabIndex!: string;
185
+
176
186
  /**
177
187
  * Defines the background color of the component.
178
188
  *
package/src/TabHeader.hbs CHANGED
@@ -33,7 +33,9 @@
33
33
 
34
34
  {{#*inline "tab-content"}}
35
35
  {{#if hasIcon}}
36
- <span class="udex-tab-navigation__button-icon-outer">
36
+ <span class="udex-tab-navigation__button-icon-outer"
37
+ role="presentation"
38
+ aria-hidden="true">
37
39
  <ui5-icon
38
40
  class="udex-tab-navigation__button-icon"
39
41
  name="{{icon}}"
@@ -3,9 +3,12 @@
3
3
  id="{{this._id}}"
4
4
  class="udex-tab-overflow__button"
5
5
  role="tab"
6
- >
6
+ aria-selected="{{this.effectiveSelected}}"
7
+ tabindex="{{_tabIndex}}">
7
8
  {{#if hasIcon}}
8
- <span class="udex-tab-overflow__button-icon">
9
+ <span class="udex-tab-overflow__button-icon"
10
+ role="presentation"
11
+ aria-hidden="true">
9
12
  <ui5-icon
10
13
  name="{{icon}}"
11
14
  ></ui5-icon>
@@ -16,18 +19,25 @@
16
19
  {{/if}}
17
20
  {{text}}
18
21
  {{#if hasNotIcon}}
19
- <span class="udex-tab-overflow__button-badge"></span>
22
+ <span class="udex-tab-overflow__button-badge"
23
+ role="presentation"
24
+ aria-hidden="true">
25
+ </span>
20
26
  {{/if}}
21
27
  </button>
22
28
  {{else}}
23
29
  <a
30
+ id="{{this._id}}"
24
31
  href="{{href}}"
25
32
  target="{{this.target}}"
26
33
  class="udex-tab-overflow__button"
27
34
  role="tab"
28
- >
35
+ aria-selected="{{this.effectiveSelected}}"
36
+ tabindex="{{_tabIndex}}">
29
37
  {{#if hasIcon}}
30
- <span class="udex-tab-overflow__button-icon">
38
+ <span class="udex-tab-overflow__button-icon"
39
+ role="presentation"
40
+ aria-hidden="true">
31
41
  <ui5-icon
32
42
  name="{{icon}}"
33
43
  ></ui5-icon>
@@ -38,7 +48,10 @@
38
48
  {{/if}}
39
49
  {{text}}
40
50
  {{#if hasNotIcon}}
41
- <span class="udex-tab-overflow__button-badge"></span>
51
+ <span class="udex-tab-overflow__button-badge"
52
+ role="presentation"
53
+ aria-hidden="true">
54
+ </span>
42
55
  {{/if}}
43
56
  </a>
44
57
  {{/if}}
@@ -3,15 +3,14 @@
3
3
  id="{{_id}}-header"
4
4
  class="udex-tab-navigation__header"
5
5
  part="tab-navigation-header"
6
- @keydown="{{handleKeyDown}}"
7
- >
6
+ @keydown="{{handleKeyDown}}">
8
7
  <div
9
8
  id="{{_id}}-header-tabs"
10
9
  class="udex-tab-navigation__header-tabs"
11
10
  role="tablist"
11
+ aria-labelledby="tablist-{{_id}}"
12
12
  part="tab-navigation-header-tabs"
13
- @click="{{onTabClick}}"
14
- >
13
+ @click="{{onTabClick}}">
15
14
  {{#each items}}
16
15
  {{this.tabNavigation}}
17
16
  {{/each}}
@@ -20,28 +19,39 @@
20
19
  class="udex-tab-navigation__button-more"
21
20
  @click="{{handleMoreButton}}"
22
21
  @keydown="{{handleFocusMoreButton}}"
23
- tabindex="-1"
22
+ tabindex="0"
24
23
  aria-haspopup="menu"
25
24
  aria-expanded="{{_isExpanded}}"
26
25
  tooltip="{{moreButtonText}}"
27
- hidden
28
- >
26
+ hidden>
29
27
  {{moreButtonText}}
30
28
  <ui5-icon
31
29
  class="udex-tab-navigation__button-more-icon"
32
30
  name="navigation-down-arrow"
33
31
  ></ui5-icon>
34
32
  </button>
33
+ {{tabNavigationPopover}}
35
34
  </div>
36
35
  <div
37
36
  class="udex-tab-navigation__content"
38
37
  id="udex-{{__id}}-content"
39
- part="tab-navigation-content"
40
- >
38
+ part="tab-navigation-content">
41
39
  {{#each items}}
42
- <div class="udex-tab-navigation__content-item">
43
- <slot name="{{this._slotName}}"></slot>
44
- </div>
40
+ {{#if this.selected}}
41
+ <div
42
+ class="udex-tab-navigation__content-item"
43
+ id="{{_contentId}}"
44
+ aria-labelledby="{{_id}}"
45
+ tabindex="{{_contentTabIndex}}">
46
+ <slot name="{{this._slotName}}"></slot>
47
+ </div>
48
+ {{else}}
49
+ <div
50
+ class="udex-tab-navigation__content-item"
51
+ id="{{_contentId}}">
52
+ <slot name="{{this._slotName}}"></slot>
53
+ </div>
54
+ {{/if}}
45
55
  {{/each}}
46
56
  </div>
47
57
  </div>