@sapudex/web-components 0.127.6 → 0.143.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 (434) hide show
  1. package/bundle.esm.js +2 -0
  2. package/dist/Accordion.d.ts +1 -1
  3. package/dist/Accordion.js +2 -2
  4. package/dist/Accordion.js.map +1 -1
  5. package/dist/AccordionItem.d.ts +1 -1
  6. package/dist/AccordionItem.js +2 -2
  7. package/dist/AccordionItem.js.map +1 -1
  8. package/dist/Avatar.js +1 -1
  9. package/dist/Avatar.js.map +1 -1
  10. package/dist/Breadcrumbs.js +1 -1
  11. package/dist/Breadcrumbs.js.map +1 -1
  12. package/dist/Carousel.js +1 -1
  13. package/dist/Carousel.js.map +1 -1
  14. package/dist/Checkbox.d.ts +1 -1
  15. package/dist/Checkbox.js +1 -1
  16. package/dist/Checkbox.js.map +1 -1
  17. package/dist/CountrySelector.d.ts +24 -6
  18. package/dist/CountrySelector.js +32 -10
  19. package/dist/CountrySelector.js.map +1 -1
  20. package/dist/DatePicker.d.ts +1 -0
  21. package/dist/DatePicker.js +5 -2
  22. package/dist/DatePicker.js.map +1 -1
  23. package/dist/Dropdown.d.ts +2 -1
  24. package/dist/Dropdown.js +16 -4
  25. package/dist/Dropdown.js.map +1 -1
  26. package/dist/FilterMenu.d.ts +21 -6
  27. package/dist/FilterMenu.js +66 -21
  28. package/dist/FilterMenu.js.map +1 -1
  29. package/dist/Footer.d.ts +9 -1
  30. package/dist/Footer.js +9 -2
  31. package/dist/Footer.js.map +1 -1
  32. package/dist/InputGroup.js +1 -1
  33. package/dist/InputGroup.js.map +1 -1
  34. package/dist/Link.d.ts +1 -1
  35. package/dist/Link.js +1 -1
  36. package/dist/Link.js.map +1 -1
  37. package/dist/List.d.ts +1 -1
  38. package/dist/List.js +18 -2
  39. package/dist/List.js.map +1 -1
  40. package/dist/ListGroupHeader.d.ts +2 -2
  41. package/dist/ListGroupHeader.js +2 -2
  42. package/dist/ListGroupHeader.js.map +1 -1
  43. package/dist/ListItem.d.ts +3 -3
  44. package/dist/ListItem.js +7 -8
  45. package/dist/ListItem.js.map +1 -1
  46. package/dist/ListItemBase.d.ts +2 -2
  47. package/dist/ListItemBase.js.map +1 -1
  48. package/dist/ListSelectAll.d.ts +1 -1
  49. package/dist/ListSelectAll.js +2 -2
  50. package/dist/ListSelectAll.js.map +1 -1
  51. package/dist/MastheadItem.d.ts +9 -1
  52. package/dist/MastheadItem.js +28 -16
  53. package/dist/MastheadItem.js.map +1 -1
  54. package/dist/MastheadMenu.d.ts +5 -0
  55. package/dist/MastheadMenu.js +24 -0
  56. package/dist/MastheadMenu.js.map +1 -1
  57. package/dist/MastheadMenuItem.d.ts +2 -3
  58. package/dist/MastheadMenuItem.js +2 -17
  59. package/dist/MastheadMenuItem.js.map +1 -1
  60. package/dist/MastheadMobileMenu.d.ts +25 -5
  61. package/dist/MastheadMobileMenu.js +136 -22
  62. package/dist/MastheadMobileMenu.js.map +1 -1
  63. package/dist/MastheadProfileMenu.d.ts +13 -4
  64. package/dist/MastheadProfileMenu.js +41 -10
  65. package/dist/MastheadProfileMenu.js.map +1 -1
  66. package/dist/MastheadShell.d.ts +24 -5
  67. package/dist/MastheadShell.js +77 -29
  68. package/dist/MastheadShell.js.map +1 -1
  69. package/dist/MediaPlayer.d.ts +3 -3
  70. package/dist/MediaPlayer.js +115 -25
  71. package/dist/MediaPlayer.js.map +1 -1
  72. package/dist/MessageStrip.js +1 -1
  73. package/dist/MessageStrip.js.map +1 -1
  74. package/dist/Pagination.js +1 -1
  75. package/dist/Pagination.js.map +1 -1
  76. package/dist/PasswordField.js +1 -1
  77. package/dist/PasswordField.js.map +1 -1
  78. package/dist/PhoneNumberField.d.ts +26 -0
  79. package/dist/PhoneNumberField.js +47 -3
  80. package/dist/PhoneNumberField.js.map +1 -1
  81. package/dist/RatingBar.js +1 -1
  82. package/dist/RatingBar.js.map +1 -1
  83. package/dist/Review.js +1 -1
  84. package/dist/Review.js.map +1 -1
  85. package/dist/ReviewItem.d.ts +105 -0
  86. package/dist/ReviewItem.js +157 -0
  87. package/dist/ReviewItem.js.map +1 -0
  88. package/dist/Search.d.ts +15 -1
  89. package/dist/Search.js +31 -6
  90. package/dist/Search.js.map +1 -1
  91. package/dist/SearchableListBase.d.ts +5 -0
  92. package/dist/SearchableListBase.js +11 -4
  93. package/dist/SearchableListBase.js.map +1 -1
  94. package/dist/SecondaryNavigation.d.ts +2 -0
  95. package/dist/SecondaryNavigation.js +19 -12
  96. package/dist/SecondaryNavigation.js.map +1 -1
  97. package/dist/SecondaryNavigationItem.d.ts +8 -0
  98. package/dist/SecondaryNavigationItem.js +20 -1
  99. package/dist/SecondaryNavigationItem.js.map +1 -1
  100. package/dist/SecondaryNavigationItemBase.js +1 -1
  101. package/dist/SecondaryNavigationItemBase.js.map +1 -1
  102. package/dist/SecondaryNavigationSubItem.js +1 -1
  103. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  104. package/dist/SelectBox.d.ts +33 -9
  105. package/dist/SelectBox.js +119 -60
  106. package/dist/SelectBox.js.map +1 -1
  107. package/dist/StatusBadge.js +1 -1
  108. package/dist/StatusBadge.js.map +1 -1
  109. package/dist/StepInput.js +1 -1
  110. package/dist/StepInput.js.map +1 -1
  111. package/dist/Switch.d.ts +19 -0
  112. package/dist/Switch.js +19 -0
  113. package/dist/Switch.js.map +1 -1
  114. package/dist/Tab.d.ts +1 -1
  115. package/dist/Tab.js +2 -2
  116. package/dist/Tab.js.map +1 -1
  117. package/dist/TabNavigation.d.ts +1 -1
  118. package/dist/TabNavigation.js +2 -2
  119. package/dist/TabNavigation.js.map +1 -1
  120. package/dist/Table.js +1 -1
  121. package/dist/Table.js.map +1 -1
  122. package/dist/Tag.d.ts +9 -1
  123. package/dist/Tag.js +20 -3
  124. package/dist/Tag.js.map +1 -1
  125. package/dist/TagGroup.d.ts +94 -0
  126. package/dist/TagGroup.js +174 -0
  127. package/dist/TagGroup.js.map +1 -0
  128. package/dist/TextArea.d.ts +13 -0
  129. package/dist/TextArea.js +16 -1
  130. package/dist/TextArea.js.map +1 -1
  131. package/dist/TextField.d.ts +23 -13
  132. package/dist/TextField.js +17 -4
  133. package/dist/TextField.js.map +1 -1
  134. package/dist/Tooltip.d.ts +1 -1
  135. package/dist/Tooltip.js +1 -1
  136. package/dist/Tooltip.js.map +1 -1
  137. package/dist/TruncatedText.js +1 -1
  138. package/dist/TruncatedText.js.map +1 -1
  139. package/dist/assets/{bundle.esm-7d53f4f2.js → bundle.esm-8623b7b1.js} +190 -188
  140. package/dist/assets/messagebundle_en-c677773a.js +1 -0
  141. package/dist/assets/parameters-bundle.css-c897ae23.js +2 -0
  142. package/dist/assets/video.es-60bfb78c.js +228 -0
  143. package/dist/css/themes/Button.css +1 -1
  144. package/dist/css/themes/CountrySelector.css +1 -1
  145. package/dist/css/themes/Dropdown.css +1 -1
  146. package/dist/css/themes/FilterMenu.css +1 -1
  147. package/dist/css/themes/ListItem.css +1 -1
  148. package/dist/css/themes/MastheadItem.css +1 -1
  149. package/dist/css/themes/MastheadMobileMenu.css +1 -1
  150. package/dist/css/themes/MastheadShell.css +1 -1
  151. package/dist/css/themes/PhoneNumberField.css +1 -1
  152. package/dist/css/themes/RatingIndicator.css +1 -1
  153. package/dist/css/themes/ReviewItem.css +1 -0
  154. package/dist/css/themes/Search.css +1 -1
  155. package/dist/css/themes/SecondaryNavigation.css +1 -1
  156. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  157. package/dist/css/themes/SecondaryNavigationSubItem.css +1 -1
  158. package/dist/css/themes/SelectBox.css +1 -1
  159. package/dist/css/themes/Slider.css +1 -1
  160. package/dist/css/themes/Tag.css +1 -1
  161. package/dist/css/themes/TagGroup.css +1 -0
  162. package/dist/css/themes/TextArea.css +1 -1
  163. package/dist/css/themes/TextField.css +1 -1
  164. package/dist/css/themes/Toast.css +1 -1
  165. package/dist/css/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css +1 -1
  166. package/dist/custom-elements-internal.json +881 -404
  167. package/dist/custom-elements.json +787 -350
  168. package/dist/data/CountryListISO3166.js +1 -1
  169. package/dist/data/CountryListISO3166.js.map +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  171. package/dist/generated/assets/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.json +1 -1
  172. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  173. package/dist/generated/i18n/i18n-defaults.js +6 -4
  174. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  175. package/dist/generated/templates/CountrySelectorTemplate.lit.js +3 -3
  176. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  177. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  178. package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
  179. package/dist/generated/templates/DropdownTemplate.lit.js +2 -2
  180. package/dist/generated/templates/DropdownTemplate.lit.js.map +1 -1
  181. package/dist/generated/templates/FilterMenuTemplate.lit.js +1 -1
  182. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  183. package/dist/generated/templates/FooterTemplate.lit.js +9 -9
  184. package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
  185. package/dist/generated/templates/HeroBannerTemplate.lit.js +7 -8
  186. package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
  187. package/dist/generated/templates/ListItemTemplate.lit.js +6 -6
  188. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  189. package/dist/generated/templates/ListSelectAllTemplate.lit.js +1 -1
  190. package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +1 -1
  191. package/dist/generated/templates/MastheadItemTemplate.lit.js +3 -3
  192. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  193. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +1 -1
  194. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
  195. package/dist/generated/templates/MastheadMenuTemplate.lit.js +2 -2
  196. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  197. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +16 -12
  198. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  199. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +2 -2
  200. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
  201. package/dist/generated/templates/MastheadShellTemplate.lit.js +13 -11
  202. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  203. package/dist/generated/templates/MediaPlayerTemplate.lit.js +2 -2
  204. package/dist/generated/templates/MediaPlayerTemplate.lit.js.map +1 -1
  205. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +5 -2
  206. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +1 -1
  207. package/dist/generated/templates/ReviewItemTemplate.lit.d.ts +4 -0
  208. package/dist/generated/templates/ReviewItemTemplate.lit.js +8 -0
  209. package/dist/generated/templates/ReviewItemTemplate.lit.js.map +1 -0
  210. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +7 -6
  211. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  212. package/dist/generated/templates/SelectBoxTemplate.lit.js +2 -2
  213. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  214. package/dist/generated/templates/TabHeaderTemplate.lit.js +2 -2
  215. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +1 -1
  216. package/dist/generated/templates/TabInOverflowTemplate.lit.js +6 -6
  217. package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +1 -1
  218. package/dist/generated/templates/TabNavigationTemplate.lit.js +3 -1
  219. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +1 -1
  220. package/dist/generated/templates/TagGroupTemplate.lit.d.ts +4 -0
  221. package/dist/generated/templates/TagGroupTemplate.lit.js +8 -0
  222. package/dist/generated/templates/TagGroupTemplate.lit.js.map +1 -0
  223. package/dist/generated/templates/TagTemplate.lit.js +11 -7
  224. package/dist/generated/templates/TagTemplate.lit.js.map +1 -1
  225. package/dist/generated/templates/TextAreaTemplate.lit.js +1 -1
  226. package/dist/generated/templates/TextAreaTemplate.lit.js.map +1 -1
  227. package/dist/generated/templates/TextFieldTemplate.lit.js +1 -1
  228. package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
  229. package/dist/generated/themes/Button.css.js +1 -1
  230. package/dist/generated/themes/Button.css.js.map +1 -1
  231. package/dist/generated/themes/CountrySelector.css.js +1 -1
  232. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  233. package/dist/generated/themes/Dropdown.css.js +1 -1
  234. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  235. package/dist/generated/themes/FilterMenu.css.js +1 -1
  236. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  237. package/dist/generated/themes/ListItem.css.js +1 -1
  238. package/dist/generated/themes/ListItem.css.js.map +1 -1
  239. package/dist/generated/themes/MastheadItem.css.js +1 -1
  240. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  241. package/dist/generated/themes/MastheadMobileMenu.css.js +1 -1
  242. package/dist/generated/themes/MastheadMobileMenu.css.js.map +1 -1
  243. package/dist/generated/themes/MastheadShell.css.js +1 -1
  244. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  245. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  246. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  247. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  248. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  249. package/dist/generated/themes/ReviewItem.css.d.ts +3 -0
  250. package/dist/generated/themes/ReviewItem.css.js +9 -0
  251. package/dist/generated/themes/ReviewItem.css.js.map +1 -0
  252. package/dist/generated/themes/Search.css.js +1 -1
  253. package/dist/generated/themes/Search.css.js.map +1 -1
  254. package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
  255. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  256. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  257. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  258. package/dist/generated/themes/SecondaryNavigationSubItem.css.js +1 -1
  259. package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -1
  260. package/dist/generated/themes/SelectBox.css.js +1 -1
  261. package/dist/generated/themes/SelectBox.css.js.map +1 -1
  262. package/dist/generated/themes/Slider.css.js +1 -1
  263. package/dist/generated/themes/Slider.css.js.map +1 -1
  264. package/dist/generated/themes/Tag.css.js +1 -1
  265. package/dist/generated/themes/Tag.css.js.map +1 -1
  266. package/dist/generated/themes/TagGroup.css.d.ts +3 -0
  267. package/dist/generated/themes/TagGroup.css.js +9 -0
  268. package/dist/generated/themes/TagGroup.css.js.map +1 -0
  269. package/dist/generated/themes/TextArea.css.js +1 -1
  270. package/dist/generated/themes/TextArea.css.js.map +1 -1
  271. package/dist/generated/themes/TextField.css.js +1 -1
  272. package/dist/generated/themes/TextField.css.js.map +1 -1
  273. package/dist/generated/themes/Toast.css.js +1 -1
  274. package/dist/generated/themes/Toast.css.js.map +1 -1
  275. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js +1 -1
  276. package/dist/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.js.map +1 -1
  277. package/dist/i18n/messagebundle.properties +7 -3
  278. package/dist/i18n/messagebundle_en.properties +5 -3
  279. package/dist/vscode.html-custom-data.json +156 -81
  280. package/dist/web-types.json +394 -144
  281. package/package.json +8 -8
  282. package/src/Accordion.ts +2 -2
  283. package/src/AccordionItem.ts +2 -2
  284. package/src/Avatar.ts +1 -1
  285. package/src/Breadcrumbs.ts +1 -1
  286. package/src/Carousel.ts +1 -1
  287. package/src/Checkbox.ts +1 -1
  288. package/src/CountrySelector.hbs +19 -15
  289. package/src/CountrySelector.ts +50 -13
  290. package/src/DatePicker.hbs +7 -8
  291. package/src/DatePicker.ts +15 -11
  292. package/src/Dropdown.hbs +3 -0
  293. package/src/Dropdown.ts +12 -4
  294. package/src/FilterMenu.hbs +58 -59
  295. package/src/FilterMenu.ts +101 -42
  296. package/src/Footer.hbs +9 -0
  297. package/src/Footer.ts +11 -2
  298. package/src/HeroBanner.hbs +4 -1
  299. package/src/InputGroup.ts +1 -1
  300. package/src/Link.ts +1 -1
  301. package/src/List.ts +44 -24
  302. package/src/ListGroupHeader.ts +2 -2
  303. package/src/ListItem.hbs +4 -2
  304. package/src/ListItem.ts +9 -11
  305. package/src/ListItemBase.ts +1 -1
  306. package/src/ListSelectAll.hbs +1 -1
  307. package/src/ListSelectAll.ts +2 -2
  308. package/src/MastheadItem.hbs +5 -3
  309. package/src/MastheadItem.ts +39 -17
  310. package/src/MastheadMenu.hbs +4 -2
  311. package/src/MastheadMenu.ts +30 -0
  312. package/src/MastheadMenuItem.hbs +0 -2
  313. package/src/MastheadMenuItem.ts +2 -16
  314. package/src/MastheadMobileMenu.hbs +36 -10
  315. package/src/MastheadMobileMenu.ts +163 -23
  316. package/src/MastheadProfileMenu.hbs +6 -2
  317. package/src/MastheadProfileMenu.ts +67 -21
  318. package/src/MastheadShell.hbs +33 -20
  319. package/src/MastheadShell.ts +101 -32
  320. package/src/MediaPlayer.hbs +1 -3
  321. package/src/MediaPlayer.ts +122 -26
  322. package/src/MessageStrip.ts +1 -3
  323. package/src/Pagination.ts +1 -1
  324. package/src/PasswordField.ts +1 -1
  325. package/src/PhoneNumberField.hbs +18 -3
  326. package/src/PhoneNumberField.ts +68 -3
  327. package/src/RatingBar.ts +1 -1
  328. package/src/Review.ts +1 -1
  329. package/src/ReviewItem.hbs +20 -0
  330. package/src/ReviewItem.ts +227 -0
  331. package/src/Search.ts +42 -5
  332. package/src/SearchableListBase.ts +15 -7
  333. package/src/SecondaryNavigation.hbs +11 -7
  334. package/src/SecondaryNavigation.ts +22 -13
  335. package/src/SecondaryNavigationItem.ts +30 -1
  336. package/src/SecondaryNavigationItemBase.ts +1 -1
  337. package/src/SecondaryNavigationSubItem.ts +1 -1
  338. package/src/SelectBox.hbs +9 -7
  339. package/src/SelectBox.ts +153 -72
  340. package/src/StatusBadge.ts +1 -1
  341. package/src/StepInput.ts +1 -1
  342. package/src/Switch.ts +21 -0
  343. package/src/Tab.ts +2 -2
  344. package/src/TabHeader.hbs +3 -1
  345. package/src/TabInOverflow.hbs +16 -4
  346. package/src/TabNavigation.hbs +15 -7
  347. package/src/TabNavigation.ts +2 -2
  348. package/src/Table.ts +1 -1
  349. package/src/Tag.hbs +28 -12
  350. package/src/Tag.ts +25 -4
  351. package/src/TagGroup.hbs +48 -0
  352. package/src/TagGroup.ts +222 -0
  353. package/src/TextArea.hbs +36 -33
  354. package/src/TextArea.ts +26 -1
  355. package/src/TextField.hbs +8 -6
  356. package/src/TextField.ts +51 -20
  357. package/src/Tooltip.ts +1 -1
  358. package/src/TruncatedText.ts +1 -1
  359. package/src/data/CountryListISO3166.ts +1 -1
  360. package/src/generated/i18n/i18n-defaults.ts +2 -2
  361. package/src/generated/templates/CountrySelectorTemplate.lit.ts +3 -3
  362. package/src/generated/templates/DatePickerTemplate.lit.ts +1 -1
  363. package/src/generated/templates/DropdownTemplate.lit.ts +2 -2
  364. package/src/generated/templates/FilterMenuTemplate.lit.ts +1 -1
  365. package/src/generated/templates/FooterTemplate.lit.ts +9 -9
  366. package/src/generated/templates/HeroBannerTemplate.lit.ts +7 -8
  367. package/src/generated/templates/ListItemTemplate.lit.ts +6 -6
  368. package/src/generated/templates/ListSelectAllTemplate.lit.ts +1 -1
  369. package/src/generated/templates/MastheadItemTemplate.lit.ts +3 -3
  370. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +1 -1
  371. package/src/generated/templates/MastheadMenuTemplate.lit.ts +2 -2
  372. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +16 -12
  373. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +2 -2
  374. package/src/generated/templates/MastheadShellTemplate.lit.ts +13 -11
  375. package/src/generated/templates/MediaPlayerTemplate.lit.ts +2 -2
  376. package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +5 -2
  377. package/src/generated/templates/ReviewItemTemplate.lit.ts +13 -0
  378. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +7 -6
  379. package/src/generated/templates/SelectBoxTemplate.lit.ts +2 -2
  380. package/src/generated/templates/TabHeaderTemplate.lit.ts +2 -2
  381. package/src/generated/templates/TabInOverflowTemplate.lit.ts +6 -6
  382. package/src/generated/templates/TabNavigationTemplate.lit.ts +3 -1
  383. package/src/generated/templates/TagGroupTemplate.lit.ts +13 -0
  384. package/src/generated/templates/TagTemplate.lit.ts +11 -7
  385. package/src/generated/templates/TextAreaTemplate.lit.ts +1 -1
  386. package/src/generated/templates/TextFieldTemplate.lit.ts +1 -1
  387. package/src/generated/themes/Button.css.ts +1 -1
  388. package/src/generated/themes/CountrySelector.css.ts +1 -1
  389. package/src/generated/themes/Dropdown.css.ts +1 -1
  390. package/src/generated/themes/FilterMenu.css.ts +1 -1
  391. package/src/generated/themes/ListItem.css.ts +1 -1
  392. package/src/generated/themes/MastheadItem.css.ts +1 -1
  393. package/src/generated/themes/MastheadMobileMenu.css.ts +1 -1
  394. package/src/generated/themes/MastheadShell.css.ts +1 -1
  395. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  396. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  397. package/src/generated/themes/ReviewItem.css.ts +13 -0
  398. package/src/generated/themes/Search.css.ts +1 -1
  399. package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
  400. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  401. package/src/generated/themes/SecondaryNavigationSubItem.css.ts +1 -1
  402. package/src/generated/themes/SelectBox.css.ts +1 -1
  403. package/src/generated/themes/Slider.css.ts +1 -1
  404. package/src/generated/themes/Tag.css.ts +1 -1
  405. package/src/generated/themes/TagGroup.css.ts +13 -0
  406. package/src/generated/themes/TextArea.css.ts +1 -1
  407. package/src/generated/themes/TextField.css.ts +1 -1
  408. package/src/generated/themes/Toast.css.ts +1 -1
  409. package/src/generated/themes/overrides/@ui5/webcomponents/sap_glow/parameters-bundle.css.ts +1 -1
  410. package/src/i18n/messagebundle.properties +7 -3
  411. package/src/i18n/messagebundle_en.properties +5 -3
  412. package/src/themes/Button.css +10 -0
  413. package/src/themes/CountrySelector.css +60 -35
  414. package/src/themes/Dropdown.css +10 -0
  415. package/src/themes/FilterMenu.css +65 -15
  416. package/src/themes/ListItem.css +4 -0
  417. package/src/themes/MastheadItem.css +18 -4
  418. package/src/themes/MastheadMobileMenu.css +4 -0
  419. package/src/themes/MastheadShell.css +88 -9
  420. package/src/themes/PhoneNumberField.css +36 -21
  421. package/src/themes/ReviewItem.css +121 -0
  422. package/src/themes/Search.css +13 -0
  423. package/src/themes/SecondaryNavigation.css +13 -14
  424. package/src/themes/SecondaryNavigationItem.css +11 -3
  425. package/src/themes/SecondaryNavigationSubItem.css +5 -5
  426. package/src/themes/SelectBox.css +42 -0
  427. package/src/themes/Tag.css +20 -0
  428. package/src/themes/TagGroup.css +90 -0
  429. package/src/themes/TextArea.css +13 -0
  430. package/src/themes/TextField.css +25 -8
  431. package/src/themes/Toast.css +4 -0
  432. package/dist/assets/messagebundle_en-6dcc9ab4.js +0 -1
  433. package/dist/assets/parameters-bundle.css-de55cf62.js +0 -2
  434. package/dist/assets/video.es-17aecf95.js +0 -219
@@ -0,0 +1,20 @@
1
+ <div class="{{reviewItemClasses}}">
2
+ <div class="udex-review-item__rating-container">
3
+ <udex-rating-indicator value="{{validatedRating}}" max="{{_maxRating}}" readonly></udex-rating-indicator>
4
+ {{#if date}}
5
+ <slot slot="date" name="date" class="udex-review-item__date"></slot>
6
+ {{/if}}
7
+ </div>
8
+ <div class="udex-review-item__text-container">
9
+ <div class="udex-review-item__title">{{reviewTitle}}</div>
10
+ <div class="udex-review-item__text-wrapper">
11
+ <p class="udex-review-item__text" id="udex-review-item__text">{{_completeText}}</p>
12
+ {{#if _showTextExpander}}
13
+ <udex-button id="reviewExpander" class="udex-review-item__text-expander" design="Invisible" size="Small" @click="{{_toggleText}}">{{buttonText}}</udex-button>
14
+ {{/if}}
15
+ </div>
16
+ {{#if author}}
17
+ <slot slot="author" name="author" class="udex-review-item__author"></slot>
18
+ {{/if}}
19
+ </div>
20
+ </div>
@@ -0,0 +1,227 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
+ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
+
6
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
7
+ import I18nBundle, { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
+ import ResizeHandler, { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
9
+ import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
10
+ import UDExRatingIndicator from "./RatingIndicator.js";
11
+ import UDExButton from "./Button.js";
12
+ import ReviewItemTemplate from "./generated/templates/ReviewItemTemplate.lit.js";
13
+
14
+ // Styles
15
+ import ReviewItemCss from "./generated/themes/ReviewItem.css.js";
16
+ import { READ_LESS, READ_MORE } from "./generated/i18n/i18n-defaults.js";
17
+
18
+ /**
19
+ * @class
20
+ *
21
+ * <h3 class="comment-api-title">Overview</h3>
22
+ *
23
+ *
24
+ * <h3>Usage</h3>
25
+ *
26
+ * For the <code>udex-review-item</code>
27
+ * <h3>ES6 Module Import</h3>
28
+ *
29
+ * <code>import "@udex/web-components/dist/ReviewItem.js";</code>
30
+ *
31
+ * @constructor
32
+ * @extends UI5Element
33
+ * @public
34
+ */
35
+ @customElement({
36
+ tag: "udex-review-item",
37
+ renderer: litRender,
38
+ styles: ReviewItemCss,
39
+ template: ReviewItemTemplate,
40
+ dependencies: [UDExRatingIndicator, UDExButton],
41
+ })
42
+
43
+ class UDExReviewItem extends UI5Element {
44
+ /**
45
+ * Defines the position of the rating in review.
46
+ * @default false
47
+ * @public
48
+ */
49
+ @property({ type: Boolean })
50
+ showRatingTop!: boolean;
51
+
52
+ /**
53
+ * Defines the rating in the review.
54
+ *
55
+ * @default 0
56
+ * @public
57
+ */
58
+ @property({ type: Number, defaultValue: 0, validator: Integer })
59
+ rating!: number;
60
+
61
+ /**
62
+ * Defines the title of the review.
63
+ *
64
+ * @default ""
65
+ * @public
66
+ */
67
+ @property({ type: String })
68
+ reviewTitle!: string;
69
+
70
+ /**
71
+ * Defines the text of the review.
72
+ * @default ""
73
+ * @public
74
+ */
75
+ @property({ type: String })
76
+ text!: string;
77
+
78
+ /**
79
+ * Defines whether button for showing truncated text is shown.
80
+ * @default 2
81
+ * @private
82
+ */
83
+ @property({ type: Number, defaultValue: 2, validator: Integer })
84
+ _textLineLimit!: number;
85
+
86
+ /**
87
+ * Defines whether the text is expanded.
88
+ * @default false
89
+ * @private
90
+ */
91
+ @property({ type: Boolean })
92
+ _textExpanded!: boolean;
93
+
94
+ /**
95
+ * Defines whether button for showing truncated text is shown.
96
+ * @default false
97
+ * @private
98
+ */
99
+ @property({ type: Boolean })
100
+ _showTextExpander!: boolean;
101
+
102
+ /**
103
+ * Defines the text, consisting of visible and invisible parts of the original text.
104
+ * @default ""
105
+ * @private
106
+ */
107
+ @property({ type: String })
108
+ _completeText!: string;
109
+
110
+ /**
111
+ * Defines the author's name and company.
112
+ *
113
+ * @default ""
114
+ * @slot
115
+ */
116
+ @slot()
117
+ author!: Array<HTMLElement>;
118
+
119
+ /**
120
+ * Defines the date of the review.
121
+ *
122
+ * @default ""
123
+ * @slot
124
+ */
125
+ @slot()
126
+ date!: Array<HTMLElement>;
127
+
128
+ _toggleText() {
129
+ this._textExpanded = !this._textExpanded;
130
+ if (this._textExpanded) {
131
+ this._completeText = this.text;
132
+ this._textElement.classList.add("udex-review-item__text-expanded");
133
+ } else {
134
+ this._textElement.classList.remove("udex-review-item__text-expanded");
135
+ this._completeText = this._visibleText;
136
+ }
137
+ }
138
+
139
+ _handleResizeBound: ResizeObserverCallback;
140
+ _textElement!: HTMLElement;
141
+ _visibleText!: string;
142
+ _maxHeight: number = 48;
143
+ _maxRating: number = 5;
144
+ _minRating: number = 0;
145
+
146
+ static i18nBundle: I18nBundle;
147
+
148
+ static async onDefine() {
149
+ UDExReviewItem.i18nBundle = await getI18nBundle("@udex/web-components");
150
+ }
151
+
152
+ constructor() {
153
+ super();
154
+ this._handleResizeBound = this._checkTextOverflow.bind(this);
155
+ }
156
+
157
+ onEnterDOM(): void {
158
+ this._maxHeight = 48;
159
+ this._completeText = this.text;
160
+ ResizeHandler.register(this, this._handleResizeBound);
161
+ }
162
+
163
+ onExitDOM(): void {
164
+ ResizeHandler.deregister(this, this._handleResizeBound);
165
+ }
166
+
167
+ onAfterRendering(): void {
168
+ this._textElement = this.getTextElement();
169
+ this._checkTextOverflow();
170
+ }
171
+
172
+ _checkTextOverflow() {
173
+ const words = this.text.split(" ");
174
+
175
+ const canvas = document.createElement("canvas");
176
+ const context = canvas.getContext("2d")!;
177
+ context.font = `16px sans-serif`;
178
+
179
+ let currentLineWidth = 0;
180
+ let visibleText = "";
181
+
182
+ words.forEach(word => {
183
+ const wordWidth = context.measureText(`${word} `).width;
184
+ if (currentLineWidth + wordWidth <= 2 * this._textElement.offsetWidth) {
185
+ visibleText += `${word} `;
186
+ currentLineWidth += wordWidth;
187
+ }
188
+ });
189
+
190
+ this._visibleText = visibleText;
191
+ if (!this._textExpanded) {
192
+ this._completeText = visibleText;
193
+ }
194
+
195
+ this._showTextExpander = (!this._textExpanded && this._completeText.length < this.text.length) || (this._textExpanded && visibleText.length < this.text.length);
196
+ }
197
+
198
+ get buttonText(): string {
199
+ return this._textExpanded ? UDExReviewItem.i18nBundle.getText(READ_LESS) : UDExReviewItem.i18nBundle.getText(READ_MORE);
200
+ }
201
+
202
+ get reviewItemClasses(): string {
203
+ const ratingTop = this.showRatingTop ? " udex-review-item__rating-top" : "";
204
+ return `udex-review-item${ratingTop}`;
205
+ }
206
+
207
+ get validatedRating(): number {
208
+ if (this.rating > this._maxRating) {
209
+ console.warn("UDEx Review: The rating shouldn't be more than 5.");
210
+ return this._maxRating;
211
+ }
212
+ if (this.rating < this._minRating) {
213
+ console.warn("UDEx Review: The rating shouldn't be less than 0.");
214
+ return this._minRating;
215
+ }
216
+ return this.rating;
217
+ }
218
+
219
+ getTextElement(): HTMLElement {
220
+ const textElement = this.shadowRoot?.getElementById("udex-review-item__text");
221
+ return textElement!;
222
+ }
223
+ }
224
+
225
+ UDExReviewItem.define();
226
+
227
+ export default UDExReviewItem;
package/src/Search.ts CHANGED
@@ -16,7 +16,9 @@ import {
16
16
  isUp,
17
17
  isDown,
18
18
  isEscape,
19
+ isSpace,
19
20
  } from "@ui5/webcomponents-base/dist/Keys.js";
21
+ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
20
22
  import List from "./List.js";
21
23
  import ListItemBase from "./ListItemBase.js";
22
24
  import "@ui5/webcomponents/dist/Icon.js";
@@ -97,7 +99,7 @@ export enum Mode {
97
99
  * For the <code>udex-search</code>
98
100
  * <h3>ES6 Module Import</h3>
99
101
  *
100
- * <code>import @udex/web-components/dist/Search.js";</code>
102
+ * <code>import "@udex/web-components/dist/Search.js";</code>
101
103
  *
102
104
  * @constructor
103
105
  * @author SAP SE
@@ -481,13 +483,28 @@ class UDExSearch extends UI5Element {
481
483
  @property({ type: Boolean, noAttribute: true })
482
484
  _prefixDropdownExpanded!: boolean;
483
485
 
486
+ /**
487
+ * Defines the active (focus)
488
+ * @default false
489
+ * @private
490
+ */
491
+ @property({ type: Boolean })
492
+ active!: boolean;
493
+ /**
494
+ * Defines is it the touch of the input field (only for mobile devices).
495
+ * @default false
496
+ * @private
497
+ */
498
+ @property({ type: Boolean })
499
+ _isTouched!: boolean;
500
+
484
501
  constructor() {
485
502
  super();
486
503
  this._handleResizeBound = this._handleResize.bind(this);
487
504
  }
488
505
 
489
506
  static async onDefine(): Promise<void> {
490
- UDExSearch.i18nBundle = await getI18nBundle("udex-search");
507
+ UDExSearch.i18nBundle = await getI18nBundle("@udex/web-components");
491
508
  }
492
509
 
493
510
  onEnterDOM(): void {
@@ -742,6 +759,9 @@ class UDExSearch extends UI5Element {
742
759
  }
743
760
 
744
761
  handleInputClick(): void {
762
+ if (!isDesktop()) {
763
+ this._isTouched = true;
764
+ }
745
765
  if (this.showPopoverWhenClickedIntoInput) {
746
766
  this.onOpenPopover();
747
767
  }
@@ -759,7 +779,7 @@ class UDExSearch extends UI5Element {
759
779
 
760
780
  handleAriaExpanded() {
761
781
  const value = this.open.toString();
762
- this.shadowRoot?.querySelector("[udex-id='search-input']")?.setAttribute("aria-expanded", value);
782
+ this.getSearchInput()?.setAttribute("aria-expanded", value);
763
783
  }
764
784
 
765
785
  onOpenPopover(): void {
@@ -882,6 +902,7 @@ class UDExSearch extends UI5Element {
882
902
  }
883
903
 
884
904
  handleBlur(): void {
905
+ this._isTouched = false;
885
906
  if (this.value) {
886
907
  this.labelActiveClass = this._labelActiveClassName;
887
908
  } else {
@@ -977,6 +998,7 @@ class UDExSearch extends UI5Element {
977
998
  }
978
999
 
979
1000
  handleFocus(): void {
1001
+ this.active = true;
980
1002
  this.isFocusedOnTextfield = true;
981
1003
  this.focusClasses = this._focusActiveClassName;
982
1004
  this.labelActiveClass = (this.value || !this.labelAnimationDisabled) ? this._labelActiveClassName : "";
@@ -984,24 +1006,39 @@ class UDExSearch extends UI5Element {
984
1006
  }
985
1007
 
986
1008
  handleFocusout(): void {
1009
+ this.active = false;
987
1010
  this.isFocusedOnTextfield = false;
988
1011
  this.focusClasses = "";
989
1012
  }
990
1013
 
991
1014
  onReset(e: MouseEvent): void {
992
1015
  e.stopPropagation();
1016
+ this.handleReset();
1017
+ }
1018
+
1019
+ handleReset(): void {
993
1020
  this.value = "";
994
1021
  this.showResetButton = false;
995
1022
  this.onClosePopover();
996
- this.handleBlur();
997
1023
  this.fireEvent("handle-value-reset");
998
1024
  this.Suggestion?.resetFocusState();
1025
+ this.focus();
999
1026
  }
1000
1027
 
1001
1028
  handleKeyDownReset(e: KeyboardEvent) {
1002
1029
  if (isTabPrevious(e) && this.open) {
1003
1030
  this.Suggestion?.handlePrevTabReset(e);
1004
1031
  }
1032
+ if (isEnter(e) || isSpace(e)) {
1033
+ e.preventDefault();
1034
+ e.stopPropagation();
1035
+ this.handleReset();
1036
+ this.getSearchInput()?.focus();
1037
+ }
1038
+ }
1039
+
1040
+ private getSearchInput(): HTMLInputElement {
1041
+ return this.shadowRoot?.querySelector("[id='search-input']") as HTMLInputElement;
1005
1042
  }
1006
1043
 
1007
1044
  onVoice(e: MouseEvent): void {
@@ -1025,7 +1062,7 @@ class UDExSearch extends UI5Element {
1025
1062
  onSpeechStart(): void {
1026
1063
  this.speechRecognition.onstart = () => {
1027
1064
  this.voiceActiveClass = this._voiceActiveClassName;
1028
- (this.shadowRoot?.querySelector("[id='search-input']") as HTMLInputElement)?.focus();
1065
+ this.getSearchInput()?.focus();
1029
1066
  };
1030
1067
  }
1031
1068
 
@@ -241,9 +241,7 @@ class UDExSearchableListBase extends UI5Element {
241
241
  }
242
242
 
243
243
  onResetSearch() {
244
- const search = this.getSearch();
245
- search.value = "";
246
- this._filteredItems = this.filterItems(this.getProcessedItems(), "");
244
+ this.resetSearch();
247
245
  this.fireEvent("reset-search");
248
246
  }
249
247
 
@@ -253,6 +251,16 @@ class UDExSearchableListBase extends UI5Element {
253
251
  });
254
252
  }
255
253
 
254
+ /**
255
+ * Reset the search value.
256
+ * @public
257
+ */
258
+ resetSearch() {
259
+ const search = this.getSearch();
260
+ search.value = "";
261
+ this._filteredItems = this.filterItems(this.getProcessedItems(), "");
262
+ }
263
+
256
264
  filterItems(items: Array<ProcessedItem>, str: string): Array<ProcessedItem> {
257
265
  return items.filter(preparedItem => {
258
266
  const { isGroup, item } = preparedItem;
@@ -285,7 +293,7 @@ class UDExSearchableListBase extends UI5Element {
285
293
  return text.replace(new RegExp(`(${str})`, "i"), "<b>$&</b>");
286
294
  }
287
295
 
288
- isIncludes(string: string, value: string):boolean {
296
+ isIncludes(string: string, value: string): boolean {
289
297
  return string.toLowerCase().includes(value.toLowerCase());
290
298
  }
291
299
 
@@ -407,11 +415,11 @@ class UDExSearchableListBase extends UI5Element {
407
415
  return this.mode === ListMode.MultiSelect && isGrouping;
408
416
  }
409
417
 
410
- get additionalClassName() {
418
+ get additionalClassName(): string {
411
419
  return `udex-searchable-list__header`;
412
420
  }
413
421
 
414
- get groupClassName() {
422
+ get groupClassName(): string {
415
423
  const classHeader = `udex-searchable-list__header`;
416
424
  return this.showSearch ? `${classHeader} udex-searchable-list__header_no-margin` : classHeader;
417
425
  }
@@ -422,7 +430,7 @@ class UDExSearchableListBase extends UI5Element {
422
430
  }
423
431
 
424
432
  static async onDefine(): Promise<void> {
425
- UDExSearchableListBase.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
433
+ UDExSearchableListBase.i18nBundle = await getI18nBundle("@udex/web-components");
426
434
  }
427
435
  }
428
436
 
@@ -5,13 +5,15 @@
5
5
  </div>
6
6
  {{/if}}
7
7
  <div class="udex-secondary-navigation__holder">
8
- <div class="udex-secondary-navigation__heading">
9
- {{#if titleHref.length}}
10
- <a class="udex-secondary-navigation__title" href="{{titleHref}}">{{title}}</a>
11
- {{else}}
12
- <span class="udex-secondary-navigation__title">{{title}}</span>
13
- {{/if}}
14
- </div>
8
+ {{#if title.length}}
9
+ <div class="udex-secondary-navigation__heading">
10
+ {{#if titleHref.length}}
11
+ <a class="udex-secondary-navigation__title" href="{{titleHref}}">{{title}}</a>
12
+ {{else}}
13
+ <span class="udex-secondary-navigation__title">{{title}}</span>
14
+ {{/if}}
15
+ </div>
16
+ {{/if}}
15
17
  <div class="udex-secondary-navigation__wrap">
16
18
  <ul
17
19
  role="menubar"
@@ -29,6 +31,7 @@
29
31
  mobile-link-title="{{this.mobileLinkTitle}}"
30
32
  target="{{this.target}}"
31
33
  .subItems="{{this.items}}"
34
+ _nav-items-length="{{../visibleItems.length}}"
32
35
  @ui5-sub-item-click="{{../handleSubItemClick}}"
33
36
  @ui5-nav-item-click="{{../handleItemClick}}">
34
37
  </udex-secondary-navigation-item>
@@ -39,6 +42,7 @@
39
42
  role="none"
40
43
  class="udex-secondary-navigation__list-item">
41
44
  <udex-secondary-navigation-item
45
+ _nav-items-length="{{visibleItems.length}}"
42
46
  index="{{visibleItems.length}}"
43
47
  @ui5-sub-item-click="{{../handleSubItemClick}}"
44
48
  @ui5-nav-item-click="{{../handleItemClick}}"
@@ -156,13 +156,13 @@ class UDExSecondaryNavigation extends UI5Element {
156
156
  static i18nBundle: any;
157
157
 
158
158
  static async onDefine(): Promise<void> {
159
- UDExSecondaryNavigation.i18nBundle = await getI18nBundle("udex-secondary-navigation");
159
+ UDExSecondaryNavigation.i18nBundle = await getI18nBundle("@udex/web-components");
160
160
  }
161
161
 
162
162
  constructor() {
163
163
  super();
164
164
  this._showMoreButton = true;
165
- this._boundReflowItems = this.reflowItems.bind(this);
165
+ this._boundReflowItems = this._handleResize.bind(this);
166
166
  }
167
167
 
168
168
  onEnterDOM(): void {
@@ -177,6 +177,13 @@ class UDExSecondaryNavigation extends UI5Element {
177
177
  ResizeHandler.deregister(this, this._boundReflowItems);
178
178
  }
179
179
 
180
+ _handleResize() {
181
+ this.reflowItems();
182
+ if (this._clickedNavItem && this.isDesktopScreen) {
183
+ this._clickedNavItem.closeDropdown();
184
+ }
185
+ }
186
+
180
187
  onInvalidation(changeInfo: ChangeInfo): void {
181
188
  if (changeInfo.name === "navItems") {
182
189
  this.reflowItems();
@@ -193,7 +200,7 @@ class UDExSecondaryNavigation extends UI5Element {
193
200
  }
194
201
 
195
202
  reflowItems(): void {
196
- const availableWidth = this.rootHolder.offsetWidth - this.heading?.offsetWidth - (this.optionalButtons?.offsetWidth || 0);
203
+ const availableWidth = this.rootHolder.offsetWidth - (this.heading?.offsetWidth || 0) - (this.optionalButtons?.offsetWidth || 0);
197
204
  const moreButtonWidth = this.getMoreButtonWidth();
198
205
  const itemsGap = 20;
199
206
  const widths = this.parsedItems.map(item => this.getItemWidth(item));
@@ -359,18 +366,20 @@ class UDExSecondaryNavigation extends UI5Element {
359
366
  }
360
367
 
361
368
  handleOutsideClick(): void {
362
- document.addEventListener("click", (e: MouseEvent) => {
363
- if (this.isMobileScreen && e.target !== this) {
364
- this.closeMobileDropdown();
365
- return;
366
- }
367
-
368
- if (this.isDesktopScreen) {
369
- this.handleDesktopDropdown(e);
370
- }
371
- });
369
+ document.addEventListener("mousedown", this.outsideClickListener);
372
370
  }
373
371
 
372
+ outsideClickListener = (e: MouseEvent): void => {
373
+ if (this.isMobileScreen && e.target !== this) {
374
+ this.closeMobileDropdown();
375
+ return;
376
+ }
377
+
378
+ if (this.isDesktopScreen) {
379
+ this.handleDesktopDropdown(e);
380
+ }
381
+ };
382
+
374
383
  closeMobileDropdown(): void {
375
384
  this.mobileNav?.closeDropdown();
376
385
  }
@@ -123,6 +123,14 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
123
123
  @property({ type: Boolean })
124
124
  isOpen!: boolean;
125
125
 
126
+ /**
127
+ * Defines the length of items in the secondary navigation.
128
+ *
129
+ * @private
130
+ */
131
+ @property({ validator: Integer })
132
+ _navItemsLength!: number;
133
+
126
134
  /**
127
135
  * Defines processed items.
128
136
  *
@@ -137,6 +145,10 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
137
145
  _subTitle!: string | undefined;
138
146
 
139
147
  onAfterRendering(): void {
148
+ if (this.isLastItem && this.isOpen && !this._isMobileView) {
149
+ this.setDropdownHorizontalAlign();
150
+ }
151
+
140
152
  if (this._shouldFocusFirstSubItem && this.isOpen) {
141
153
  this.onFirstSubItemFocus();
142
154
  this._shouldFocusFirstSubItem = false;
@@ -306,6 +318,19 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
306
318
  this._processedItems = this.subItems;
307
319
  }
308
320
 
321
+ setDropdownHorizontalAlign(): void {
322
+ const dropdown = this.shadowRoot!.querySelector<HTMLElement>(".udex-secondary-navigation__dropdown");
323
+ const { right, left } = dropdown!.getBoundingClientRect();
324
+
325
+ if (right > window.innerWidth) {
326
+ dropdown?.setAttribute("data-horizontal-align", "right");
327
+ }
328
+
329
+ if (left < 0) {
330
+ dropdown?.setAttribute("data-horizontal-align", "left");
331
+ }
332
+ }
333
+
309
334
  onFirstSubItemFocus(): void {
310
335
  this.domNavItems[0].focus();
311
336
  }
@@ -318,6 +343,10 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
318
343
  this._shouldFocusFirstSubItem = true;
319
344
  }
320
345
 
346
+ get isLastItem(): boolean {
347
+ return this._navItemsLength === this.index;
348
+ }
349
+
321
350
  get domNavItems(): Array<UDExSecondaryNavigationSubItem> {
322
351
  const domNavItems = this.shadowRoot?.querySelectorAll<UDExSecondaryNavigationSubItem>("udex-secondary-navigation-sub-item");
323
352
  return domNavItems ? Array.from(domNavItems) : [];
@@ -338,7 +367,7 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
338
367
  get subActiveItemTitle(): string | undefined {
339
368
  if (this.subActiveItem) {
340
369
  const { title, mobileLinkTitle } = this.subActiveItem;
341
- return this._isMobileView ? mobileLinkTitle : title;
370
+ return this._isMobileView ? (mobileLinkTitle || title) : title;
342
371
  }
343
372
  }
344
373
 
@@ -142,7 +142,7 @@ class UDExSecondaryNavigationItemBase extends UI5Element {
142
142
  }
143
143
 
144
144
  get itemLabel(): string {
145
- return this._isMobileView ? this.mobileLinkTitle : this.label;
145
+ return this._isMobileView ? (this.mobileLinkTitle || this.label) : this.label;
146
146
  }
147
147
 
148
148
  get isMobile(): boolean {
@@ -91,7 +91,7 @@ class UDExSecondaryNavigationSubItem extends UDExSecondaryNavigationItemBase {
91
91
  static i18nBundle: any;
92
92
 
93
93
  static async onDefine(): Promise<void> {
94
- UDExSecondaryNavigationSubItem.i18nBundle = await getI18nBundle("udex-secondary-navigation-sub-item");
94
+ UDExSecondaryNavigationSubItem.i18nBundle = await getI18nBundle("@udex/web-components");
95
95
  }
96
96
 
97
97
  onItemClick(): void {
package/src/SelectBox.hbs CHANGED
@@ -66,6 +66,7 @@
66
66
  {{/if}}
67
67
  {{#if showTrigger}}
68
68
  <udex-control-button
69
+ tabindex="{{triggerTabIndex}}"
69
70
  class="udex-text-field__trigger"
70
71
  role="combobox"
71
72
  size="Large"
@@ -89,10 +90,11 @@
89
90
  </udex-status-message>
90
91
  {{/if}}
91
92
  </div>
92
- <udex-dropdown
93
+ <ui5-popover
94
+ hide-arrow
93
95
  id="udex-select-box__dropdown"
94
96
  class="udex-select-box__dropdown"
95
- ?disable-target-overlap="{{disableTargetOverlap}}"
97
+ ?allow-target-overlap="{{allowTargetOverlap}}"
96
98
  @keydown="{{handleKeyDownDropdown}}"
97
99
  @ui5-select-all="{{handleSelectAll}}"
98
100
  @ui5-item-press="{{handleItemPress}}"
@@ -100,11 +102,11 @@
100
102
  @ui5-submit-search-value="{{handleSubmitSearch}}"
101
103
  @ui5-handle-value-search="{{handleValueSearch}}"
102
104
  @ui5-handle-value-reset="{{handleResetSearch}}"
103
- @before-open="{{handleDropdownBeforeOpen}}"
104
- @after-close="{{handleDropdownAfterClose}}"
105
+ @ui5-before-open="{{handleDropdownBeforeOpen}}"
106
+ @ui5-after-close="{{handleDropdownAfterClose}}"
105
107
  @search-keydown="{{handleKeyDownSearch}}"
106
- height="{{height}}"
107
- horizontal-align="Left">
108
+ horizontal-align="Left"
109
+ placement-type="Bottom">
108
110
  {{#if _showTagsDropdownContent}}
109
111
  <div class="udex-truncatable-tag-content">
110
112
  <span class="udex-truncatable-tag-content__label">{{truncatableTagLabel}}</span>
@@ -117,7 +119,7 @@
117
119
  {{else}}
118
120
  {{searchableList}}
119
121
  {{/if}}
120
- </udex-dropdown>
122
+ </ui5-popover>
121
123
  {{#if displayonly}}
122
124
  <udex-tooltip
123
125
  placement="{{tooltipPlacement}}">