@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
package/src/Tag.ts CHANGED
@@ -40,7 +40,7 @@ export enum TagSize {
40
40
  * For the <code>udex-tag</code>
41
41
  * <h3>ES6 Module Import</h3>
42
42
  *
43
- * <code>import @udex/web-components/dist/Tag.js";</code>
43
+ * <code>import "@udex/web-components/dist/Tag.js";</code>
44
44
  *
45
45
  * @constructor
46
46
  * @author SAP SE
@@ -71,6 +71,12 @@ export enum TagSize {
71
71
  * @public
72
72
  */
73
73
  @event("iconClick")
74
+ /**
75
+ * Emitted when tag link was clicked
76
+ *
77
+ * @public
78
+ */
79
+ @event("tagLinkClick")
74
80
  class UDExTag extends UI5Element {
75
81
  /**
76
82
  * Defines the text of the tag
@@ -80,7 +86,14 @@ class UDExTag extends UI5Element {
80
86
  */
81
87
  @property()
82
88
  text!: string;
83
-
89
+ /**
90
+ * Defines the href for behavior of the tag as a link
91
+ *
92
+ * @default ""
93
+ * @public
94
+ */
95
+ @property()
96
+ href!: string;
84
97
  /**
85
98
  * Defines the design type of tag
86
99
  *
@@ -199,6 +212,9 @@ class UDExTag extends UI5Element {
199
212
  if (isDesktop()) {
200
213
  this.setAttribute("desktop", "");
201
214
  }
215
+ if (this.accessibleRole !== "button") {
216
+ this.shadowRoot?.firstElementChild?.removeAttribute("aria-pressed");
217
+ }
202
218
  }
203
219
 
204
220
  setSelected(): void {
@@ -234,10 +250,11 @@ class UDExTag extends UI5Element {
234
250
  get tagClasses(): string {
235
251
  const hasIconClass = this.hasIcon ? "udex-tag--has-icon" : "";
236
252
  const readOnlyClass = this.readOnly ? "udex-tag--readonly" : "";
237
- const nonSelectableClass = this.nonSelectable ? "udex-tag--nonselectable" : "";
253
+ const nonSelectableClass = this.nonSelectable && !this.href ? "udex-tag--nonselectable" : "";
254
+ const linkTagClass = this.href ? "udex-tag--link" : "";
238
255
  const selectableClass = this.selected ? "udex-tag--selected" : "";
239
256
  const designClass = `udex-tag-${this.design?.toLowerCase()}`;
240
- return `udex-tag udex-tag--${this.size.toLocaleLowerCase()} ${designClass} ${hasIconClass} ${readOnlyClass} ${nonSelectableClass} ${selectableClass}`.trim();
257
+ return `udex-tag udex-tag--${this.size.toLocaleLowerCase()} ${designClass} ${hasIconClass} ${readOnlyClass} ${nonSelectableClass} ${linkTagClass} ${selectableClass}`.trim();
241
258
  }
242
259
 
243
260
  get startIcon(): boolean {
@@ -278,6 +295,10 @@ class UDExTag extends UI5Element {
278
295
  get iconAccessibleName(): string {
279
296
  return this.accessibleName || this.text;
280
297
  }
298
+
299
+ tagLinkClickHandler(e: Event): void {
300
+ this.fireEvent("tagLinkClick", { originalEvent: e }, true);
301
+ }
281
302
  }
282
303
 
283
304
  UDExTag.define();
@@ -0,0 +1,48 @@
1
+ <div id="{{_id}}-tag-group" @ui5-selectionChange="{{tagClickHandler}}" role="group">
2
+ <ui5-tokenizer
3
+ part="tokenizer"
4
+ show-more
5
+ prevent-popover-open
6
+ ?disabled="{{disabled}}"
7
+ id="{{_id}}-tag-group-tokenizer"
8
+ class="udex-tag-group__tokenizer"
9
+ @ui5-show-more-items-press="{{showMoreItems}}"
10
+ ?expanded="{{tokenizerExpanded}}">
11
+ {{#each items}}
12
+ {{>TAG}}
13
+ {{/each}}
14
+ </ui5-tokenizer>
15
+ {{#if _isHiddenTags}}
16
+ <udex-tooltip @keydown="{{handleShowMoreButtonKeydown}}" id="{{_id}}-tag-group-tooltip" placement="{{tooltipPlacement}}">
17
+ <div role="group" class="udex-tag-group-tooltip__content">
18
+ {{#each hiddenTags}}
19
+ {{>TAG}}
20
+ {{/each}}
21
+ </div>
22
+ </udex-tooltip>
23
+ {{/if}}
24
+ </div>
25
+
26
+ {{#*inline "TAG"}}
27
+ <udex-tag
28
+ role="{{../tagRole}}"
29
+ accessible-role="option"
30
+ class="udex-tag-group__tag"
31
+ data-id="{{this.id}}"
32
+ part="token-{{@index}}"
33
+ ?read-only="{{../isReadOrDisplayOnly}}"
34
+ tabindex="{{../tagTabIndex}}"
35
+ id="{{_id}}-tag-group-tag"
36
+ text="{{this.text}}"
37
+ icon="{{this.icon}}"
38
+ href="{{this.href}}"
39
+ design="{{this.design}}"
40
+ size="{{this.size}}"
41
+ icon-placement="{{this.iconPlacement}}"
42
+ accessible-name="{{this.accessibleName}}"
43
+ ?non-selectable="{{this.nonSelectable}}"
44
+ ?data-overflows="{{this.overflows}}"
45
+ @keydown="{{../handleTagKeyDown}}"
46
+ @iconClick="{{../tagIconClickHandler}}">
47
+ ></udex-tag>
48
+ {{/inline}}
@@ -0,0 +1,222 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import Tokenizer from "@ui5/webcomponents/dist/Tokenizer.js";
3
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
4
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
5
+ import { isEnter, isSpace, isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
6
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
7
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
8
+ import event from "@ui5/webcomponents-base/dist/decorators/event.js";
9
+ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
10
+ import Token from "@ui5/webcomponents/dist/Token.js";
11
+ import UDExTag from "./Tag.js";
12
+ import UDExTooltip from "./Tooltip.js";
13
+
14
+ import TagGroupTemplate from "./generated/templates/TagGroupTemplate.lit.js";
15
+
16
+ // Styles
17
+ import TagGroupCss from "./generated/themes/TagGroup.css";
18
+
19
+ export enum PlacementType {
20
+ Left = "Left",
21
+ Right = "Right",
22
+ Top = "Top",
23
+ Bottom = "Bottom",
24
+ }
25
+
26
+ /**
27
+ * @class
28
+ *
29
+ * <h3 class="comment-api-title">Overview</h3>
30
+ *
31
+ *
32
+ * <h3>Usage</h3>
33
+ *
34
+ * For the <code>udex-tag-group</code>
35
+ * <h3>ES6 Module Import</h3>
36
+ *
37
+ * <code>import "@udex/web-components/dist/TagGroup.js";</code>
38
+ *
39
+ * @constructor
40
+ * @extends UI5Element
41
+ * @public
42
+ */
43
+ @customElement({
44
+ tag: "udex-tag-group",
45
+ renderer: litRender,
46
+ styles: TagGroupCss,
47
+ template: TagGroupTemplate,
48
+ dependencies: [UDExTag, UDExTooltip, Tokenizer, Token],
49
+ })
50
+ /**
51
+ * Emitted when tag was clicked
52
+ *
53
+ * @public
54
+ */
55
+ @event("tag-click")
56
+ /**
57
+ * Emitted when icon in tag was clicked
58
+ *
59
+ * @public
60
+ */
61
+ @event("tag-icon-click")
62
+ /**
63
+ * Emitted when the tooltip was opened, can be canceled
64
+ *
65
+ * @public
66
+ */
67
+ @event("show-more-tags")
68
+ /**
69
+ * Emitted when a keydown event occurs on a tag, can be canceled
70
+ * Emitted custom event with keycode and tag details
71
+ *
72
+ * @public
73
+ */
74
+ @event("tag-keydown")
75
+ class UDExTagGroup extends UI5Element {
76
+ /**
77
+ * Defines whether the UI5Tokenizer is expanded.
78
+ *
79
+ * @default false
80
+ * @public
81
+ */
82
+ @property({ type: Boolean })
83
+ tokenizerExpanded!: boolean;
84
+ /**
85
+ * Defines whether the component is in disabled state.
86
+ *
87
+ * @default false
88
+ * @public
89
+ */
90
+ @property({ type: Boolean })
91
+ disabled!: boolean;
92
+
93
+ /**
94
+ * Defines whether the component is readonly.
95
+ *
96
+ * @default false
97
+ * @public
98
+ */
99
+ @property({ type: Boolean })
100
+ readonly!: boolean;
101
+
102
+ /**
103
+ * Defines whether the component is displayonly.
104
+ *
105
+ * @default false
106
+ * @public
107
+ */
108
+ @property({ type: Boolean })
109
+ displayonly!: boolean;
110
+
111
+ /**
112
+ * Defines the tags.
113
+ *
114
+ * @public
115
+ */
116
+ @slot({ type: HTMLElement, "default": true })
117
+ items!: Array<UDExTag>;
118
+
119
+ /**
120
+ * Determines on which side of the component the Tooltip is displayed.
121
+ *
122
+ * @default "Bottom"
123
+ * @public
124
+ */
125
+ @property({ type: PlacementType, defaultValue: PlacementType.Bottom })
126
+ tooltipPlacement!: `${PlacementType}`;
127
+
128
+ /**
129
+ * @private
130
+ */
131
+ @property({ type: Boolean })
132
+ _isHiddenTags!: boolean;
133
+
134
+ _tokenizer!: Tokenizer;
135
+ _nMoreBtn!: HTMLElement | null;
136
+ _resizeHandler: () => void;
137
+
138
+ constructor() {
139
+ super();
140
+ this._resizeHandler = this._onResize.bind(this);
141
+ }
142
+
143
+ get hiddenTags(): Token[] {
144
+ return this._tokenizer?.overflownTokens || [];
145
+ }
146
+
147
+ get isReadOrDisplayOnly(): boolean {
148
+ return this.readonly || this.displayonly;
149
+ }
150
+
151
+ get tagTabIndex(): string {
152
+ return this.disabled ? "-1" : "";
153
+ }
154
+
155
+ get tokenizer(): Tokenizer {
156
+ return this.shadowRoot!.querySelector<Tokenizer>(`#${this._id}-tag-group-tokenizer`)!;
157
+ }
158
+
159
+ get tagRole(): string {
160
+ return this.displayonly || this.readonly ? "option" : "";
161
+ }
162
+
163
+ onAfterRendering(): void {
164
+ this._tokenizer = this.tokenizer;
165
+ this._nMoreBtn = this._tokenizer.shadowRoot?.querySelector(`.ui5-tokenizer-more-text`) || null;
166
+ if (!this.readonly && !this.disabled && this._nMoreBtn && !this._nMoreBtn.hasAttribute("tabindex")) {
167
+ this._nMoreBtn.setAttribute("tabindex", "0");
168
+ this._nMoreBtn.addEventListener("keydown", this._nMoreKeyDownHandler.bind(this));
169
+ }
170
+ }
171
+
172
+ _nMoreKeyDownHandler(e: Event) {
173
+ if (isSpace(e as KeyboardEvent) || isEnter(e as KeyboardEvent)) {
174
+ this.showMoreItems();
175
+ }
176
+ }
177
+
178
+ onEnterDOM(): void {
179
+ ResizeHandler.register(this, this._resizeHandler);
180
+ }
181
+
182
+ onExitDOM(): void {
183
+ ResizeHandler.deregister(this, this._resizeHandler);
184
+ this._nMoreBtn?.removeEventListener("keydown", this._nMoreKeyDownHandler.bind(this));
185
+ }
186
+
187
+ _onResize(): void {
188
+ this._isHiddenTags = false;
189
+ this._isHiddenTags = this._tokenizer?._nMoreCount > 0;
190
+ }
191
+
192
+ tagClickHandler(e: CustomEvent): void {
193
+ this.fireEvent("tag-click", { tag: e.target as HTMLElement });
194
+ }
195
+
196
+ tagIconClickHandler(e: CustomEvent): void {
197
+ this.fireEvent("tag-icon-click", { tag: e.target as HTMLElement });
198
+ }
199
+
200
+ handleShowMoreButtonKeydown(e: KeyboardEvent): void {
201
+ if (isEscape(e)) {
202
+ this._nMoreBtn?.focus();
203
+ }
204
+ }
205
+
206
+ handleTagKeyDown(e: KeyboardEvent): void {
207
+ this.fireEvent("tag-keydown", { originalEvent: e }, true);
208
+ }
209
+
210
+ showMoreItems(): void {
211
+ if (this.fireEvent("show-more-tags", {}, true)) {
212
+ const tooltip = this.shadowRoot!.querySelector<UDExTooltip>(`#${this._id}-tag-group-tooltip`)!;
213
+ if (this._nMoreBtn) {
214
+ tooltip?.onOpen(this._nMoreBtn);
215
+ }
216
+ }
217
+ }
218
+ }
219
+
220
+ UDExTagGroup.define();
221
+
222
+ export default UDExTagGroup;
package/src/TextArea.hbs CHANGED
@@ -1,38 +1,41 @@
1
1
  <div class="udex-textarea">
2
- {{#if label}}
3
- <label
4
- class="{{labelClasses}}"
5
- for="textarea"
6
- part="label"
7
- >
8
- {{label}}
9
- {{#if required}}
10
- *
2
+ <div class="udex-textarea__wrapper">
3
+ {{#if label}}
4
+ <label
5
+ class="{{labelClasses}}"
6
+ for="textarea"
7
+ part="label"
8
+ >
9
+ {{label}}
10
+ {{#if required}}
11
+ *
12
+ {{/if}}
13
+ </label>
11
14
  {{/if}}
12
- </label>
13
- {{/if}}
14
- <textarea
15
- id="textarea"
16
- class="udex-textarea__field"
17
- part="textarea"
18
- .value="{{value}}"
19
- maxlength="{{maxlength}}"
20
- rows="{{rows}}"
21
- ?disabled="{{disabled}}"
22
- ?readonly="{{isInputReadonly}}"
23
- ?required="{{required}}"
24
- ?aria-label="{{accessibleName}}"
25
- ?aria-describedby="{{ariaDescribedBy}}"
26
- ?aria-labelledby="{{accessibleNameRef}}"
27
- aria-required="{{required}}"
28
- aria-readonly="{{isInputReadonly}}"
29
- aria-invalid="{{ariaInvalid}}"
30
- @input="{{handleInput}}"
31
- @focus="{{handleFocus}}"
32
- @blur="{{handleBlur}}"
33
- @change="{{handleChange}}"
34
- >
35
- </textarea>
15
+ <textarea
16
+ id="textarea"
17
+ class="udex-textarea__field"
18
+ part="textarea"
19
+ .value="{{value}}"
20
+ maxlength="{{maxlength}}"
21
+ rows="{{rows}}"
22
+ ?disabled="{{disabled}}"
23
+ ?readonly="{{isInputReadonly}}"
24
+ ?required="{{required}}"
25
+ ?aria-label="{{accessibleName}}"
26
+ ?aria-describedby="{{ariaDescribedBy}}"
27
+ ?aria-labelledby="{{accessibleNameRef}}"
28
+ aria-required="{{required}}"
29
+ aria-readonly="{{isInputReadonly}}"
30
+ aria-invalid="{{ariaInvalid}}"
31
+ @input="{{handleInput}}"
32
+ @focus="{{handleFocus}}"
33
+ @click="{{handleClick}}"
34
+ @blur="{{handleBlur}}"
35
+ @change="{{handleChange}}"
36
+ >
37
+ </textarea>
38
+ </div>
36
39
  {{#if _supportingText}}
37
40
  <udex-status-message
38
41
  supporting-text-alignment="Right"
package/src/TextArea.ts CHANGED
@@ -6,6 +6,7 @@ import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEff
6
6
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
7
7
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
8
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
+ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
9
10
  import {
10
11
  READ_ONLY, TEXTAREA_CHARACTERS_LEFT, VALUE_STATE_TYPE_ERROR, VALUE_STATE_TYPE_STANDARD, VALUE_STATE_TYPE_SUCCESS, VALUE_STATE_TYPE_WARNING,
11
12
  } from "./generated/i18n/i18n-defaults.js";
@@ -214,10 +215,25 @@ class UDExTextArea extends UI5Element {
214
215
  @property({ defaultValue: "" })
215
216
  accessibleNameRef!: string;
216
217
 
218
+ /**
219
+ * Defines the active (focus)
220
+ * @default false
221
+ * @private
222
+ */
223
+ @property({ type: Boolean })
224
+ active!: boolean;
225
+ /**
226
+ * Defines is it the touch of the textarea (only for mobile devices).
227
+ * @default false
228
+ * @private
229
+ */
230
+ @property({ type: Boolean })
231
+ _isTouched!: boolean;
232
+
217
233
  static i18nBundle: I18nBundle;
218
234
 
219
235
  static async onDefine() {
220
- UDExTextArea.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
236
+ UDExTextArea.i18nBundle = await getI18nBundle("@udex/web-components");
221
237
  }
222
238
 
223
239
  getInputDomRef() {
@@ -317,16 +333,25 @@ class UDExTextArea extends UI5Element {
317
333
 
318
334
  handleFocus = () => {
319
335
  if (!this.disabled && !this.readonly && !this.displayonly) {
336
+ this.active = true;
320
337
  this.labelActiveClass = this._labelActiveClassName;
321
338
  }
322
339
  };
323
340
 
341
+ handleClick(): void {
342
+ if (!isDesktop()) {
343
+ this._isTouched = true;
344
+ }
345
+ }
346
+
324
347
  handleBlur = () => {
348
+ this._isTouched = false;
325
349
  if (this.value) {
326
350
  this.labelActiveClass = this._labelActiveClassName;
327
351
  } else {
328
352
  this.labelActiveClass = "";
329
353
  }
354
+ this.active = false;
330
355
  };
331
356
 
332
357
  get ariaInvalid() {
package/src/TextField.hbs CHANGED
@@ -16,6 +16,7 @@
16
16
  @input="{{handleInput}}"
17
17
  @focus="{{handleFocus}}"
18
18
  @blur="{{handleBlur}}"
19
+ @click="{{handleClick}}"
19
20
  @keydown="{{handleKeyDown}}"
20
21
  maxlength="{{maxlength}}"
21
22
  ?disabled="{{disabled}}"
@@ -25,9 +26,10 @@
25
26
  aria-readonly="{{isInputReadonly}}"
26
27
  ?aria-disabled="{{readonlyNotDisabled}}"
27
28
  aria-invalid="{{accInfo.ariaInvalid}}"
28
- ?aria-describedby="{{accInfo.ariaDescribedBy}}"
29
- ?aria-label="{{accInfo.ariaLabel}}"
30
- ?aria-labelledby="{{accInfo.ariaLabelledBy}}"
29
+ aria-describedby="{{accInfo.ariaDescribedBy}}"
30
+ aria-haspopup="{{accInfo.ariaHasPopup}}"
31
+ aria-label="{{accInfo.ariaLabel}}"
32
+ aria-labelledby="{{accInfo.ariaLabelledBy}}"
31
33
  part="textfield-input"
32
34
  min="{{min}}"
33
35
  max="{{max}}"
@@ -52,9 +54,9 @@
52
54
 
53
55
  {{#if supportingText}}
54
56
  <udex-status-message
55
- ?disabled="{{disabled}}"
56
- supporting-text="{{supportingText}}"
57
- value-state="{{valueState}}">
57
+ ?disabled="{{disabled}}"
58
+ supporting-text="{{supportingText}}"
59
+ value-state="{{valueState}}">
58
60
  </udex-status-message>
59
61
  {{/if}}
60
62
 
package/src/TextField.ts CHANGED
@@ -8,6 +8,7 @@ import Icon from "@ui5/webcomponents/dist/Icon.js";
8
8
  import Float from "@ui5/webcomponents-base/dist/types/Float.js";
9
9
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
10
10
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
11
+ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
11
12
  import {
12
13
  VALUE_STATE_SUCCESS,
13
14
  VALUE_STATE_INFORMATION,
@@ -17,13 +18,21 @@ import {
17
18
  } from "./generated/i18n/i18n-defaults.js";
18
19
  import UDExControlButton from "./ControlButton.js";
19
20
  import ValueState from "./types/common.js";
21
+ import UDExStatusMessage from "./StatusMessage.js";
20
22
 
21
23
  // Template
22
24
  import TextFieldTemplate from "./generated/templates/TextFieldTemplate.lit";
23
25
 
24
26
  // Styles
25
27
  import TextFieldCss from "./generated/themes/TextField.css.js";
26
- import UDExStatusMessage from "./StatusMessage.js";
28
+
29
+ type AccInfo = {
30
+ ariaInvalid?: string;
31
+ ariaDescribedBy?: string;
32
+ ariaLabelledBy?: string;
33
+ ariaLabel?: string;
34
+ ariaHasPopup?: string,
35
+ }
27
36
 
28
37
  /**
29
38
  * @class
@@ -176,8 +185,8 @@ class UDExTextField extends UI5Element {
176
185
  * @default "Standard"
177
186
  * @public
178
187
  */
179
- @property({ type: ValueState, defaultValue: "Standard" })
180
- valueState!: "Standard" | "Warning" | "Error" | "Success";
188
+ @property({ type: ValueState, defaultValue: ValueState.Standard })
189
+ valueState!: `${ValueState}`;
181
190
 
182
191
  /**
183
192
  * Defines supporting text under the input field.
@@ -287,13 +296,28 @@ class UDExTextField extends UI5Element {
287
296
  @property()
288
297
  ariaDescribedBy?: string;
289
298
 
299
+ /**
300
+ * Defines the aria-has-popup attribute of the input.
301
+ * @private
302
+ */
303
+ @property({ type: String })
304
+ _ariaHasPopup?: string;
305
+
306
+ /**
307
+ * Defines is it the touch of the input field (only for mobile devices).
308
+ * @default false
309
+ * @private
310
+ */
311
+ @property({ type: Boolean })
312
+ _isTouched!: boolean;
313
+
290
314
  static i18nBundle: I18nBundle;
291
315
 
292
- static async onDefine() {
293
- UDExTextField.i18nBundle = await getI18nBundle("sap-ui-webcomponents-bundle");
316
+ static async onDefine(): Promise<void> {
317
+ UDExTextField.i18nBundle = await getI18nBundle("@udex/web-components");
294
318
  }
295
319
 
296
- get valueStateTypeMappings() {
320
+ get valueStateTypeMappings(): Record<string, string> {
297
321
  return {
298
322
  "Success": UDExTextField.i18nBundle.getText(VALUE_STATE_SUCCESS),
299
323
  "Standard": UDExTextField.i18nBundle.getText(VALUE_STATE_INFORMATION),
@@ -302,15 +326,15 @@ class UDExTextField extends UI5Element {
302
326
  };
303
327
  }
304
328
 
305
- get hasValueState() {
329
+ get hasValueState(): boolean {
306
330
  return this.valueState !== ValueState.Standard;
307
331
  }
308
332
 
309
- get valueStateText() {
333
+ get valueStateText(): string | undefined {
310
334
  return this.valueState !== ValueState.Standard ? this.valueStateTypeMappings[this.valueState] : undefined;
311
335
  }
312
336
 
313
- get readOnlyStateText() {
337
+ get readOnlyStateText(): string {
314
338
  return UDExTextField.i18nBundle.getText(READ_ONLY);
315
339
  }
316
340
 
@@ -318,44 +342,50 @@ class UDExTextField extends UI5Element {
318
342
  return `${this.supportingTextId} ${this.valueStateTextId} ${this.readOnlyStateTextId}`.trim();
319
343
  }
320
344
 
321
- get supportingTextId():string {
345
+ get supportingTextId(): string {
322
346
  return this.supportingText ? `${this._id}-supportingTextDesc` : "";
323
347
  }
324
348
 
325
- get valueStateTextId():string {
349
+ get valueStateTextId(): string {
326
350
  return this.hasValueState ? `${this._id}-valueStateDesc` : "";
327
351
  }
328
352
 
329
- get readOnlyStateTextId():string {
353
+ get readOnlyStateTextId(): string {
330
354
  return this.readonly ? `${this._id}-stateReadOnlyDesc` : "";
331
355
  }
332
356
 
333
- get accInfo() {
357
+ get accInfo(): AccInfo {
334
358
  return {
335
359
  "ariaInvalid": this.valueState === ValueState.Error ? "true" : undefined,
336
360
  "ariaDescribedBy": this.ariaDescribedBy ? this.ariaDescribedBy : this.ariaDescribedById || undefined,
337
361
  "ariaLabelledBy": this.accessibleNameRef,
338
362
  "ariaLabel": this.accessibleName || undefined,
363
+ "ariaHasPopup": this._ariaHasPopup || undefined,
339
364
  };
340
365
  }
341
366
 
342
- handleChange = () => {
367
+ handleChange = (): void => {
343
368
  this.fireEvent("change");
344
369
  };
345
370
 
346
371
  handleInput = (inputEvent: InputEvent) => {
347
372
  this.value = (inputEvent.target as HTMLInputElement)?.value;
348
- this.fireEvent("input");
349
373
  };
350
374
 
351
- handleFocus = () => {
375
+ handleClick = (): void => {
376
+ if (!isDesktop()) {
377
+ this._isTouched = true;
378
+ }
379
+ };
380
+
381
+ handleFocus = (): void => {
352
382
  if (!this.disabled && !this.readonly && !this.displayonly) {
353
383
  this.labelActiveClass = this._labelActiveClassName;
354
384
  this.active = true;
355
385
  }
356
386
  };
357
387
 
358
- handleBlur = () => {
388
+ handleBlur = (): void => {
359
389
  this.active = false;
360
390
 
361
391
  if (this.value) {
@@ -363,9 +393,10 @@ class UDExTextField extends UI5Element {
363
393
  } else {
364
394
  this.labelActiveClass = "";
365
395
  }
396
+ this._isTouched = false;
366
397
  };
367
398
 
368
- handleKeyDown = (keyboardEvent: KeyboardEvent) => {
399
+ handleKeyDown = (keyboardEvent: KeyboardEvent): void => {
369
400
  keyboardEvent.stopPropagation();
370
401
  this.fireEvent("click-trigger", keyboardEvent);
371
402
  };
@@ -374,7 +405,7 @@ class UDExTextField extends UI5Element {
374
405
  this.fireEvent("click-icon");
375
406
  }
376
407
 
377
- onBeforeRendering() {
408
+ onBeforeRendering(): void {
378
409
  if ((this.value || this.active) && this.labelActiveClass === "") {
379
410
  this.labelActiveClass = this._labelActiveClassName;
380
411
  } else if (!this.active && !this.value && this.labelActiveClass.length) {
@@ -398,7 +429,7 @@ class UDExTextField extends UI5Element {
398
429
  }
399
430
  }
400
431
 
401
- get readonlyNotDisabled() {
432
+ get readonlyNotDisabled(): boolean {
402
433
  return this.isInputReadonly && !this.disabled;
403
434
  }
404
435
  }