@ui5/webcomponents 1.5.0 → 1.7.1

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 (579) hide show
  1. package/CHANGELOG.md +113 -0
  2. package/dist/Avatar.js +29 -1
  3. package/dist/AvatarGroup.js +20 -2
  4. package/dist/BreadcrumbsItem.js +2 -2
  5. package/dist/Button.js +4 -4
  6. package/dist/Calendar.js +33 -45
  7. package/dist/CalendarHeader.js +5 -1
  8. package/dist/CardHeader.js +1 -0
  9. package/dist/Carousel.js +9 -0
  10. package/dist/CheckBox.js +2 -2
  11. package/dist/ComboBox.js +52 -6
  12. package/dist/DatePicker.js +17 -1
  13. package/dist/DateRangePicker.js +8 -2
  14. package/dist/DateTimePicker.js +1 -1
  15. package/dist/Dialog.js +41 -1
  16. package/dist/Icon.js +9 -9
  17. package/dist/Input.js +32 -13
  18. package/dist/Label.js +1 -3
  19. package/dist/Link.js +4 -2
  20. package/dist/List.js +17 -1
  21. package/dist/Menu.js +6 -4
  22. package/dist/MenuItem.js +20 -5
  23. package/dist/MessageStrip.js +1 -1
  24. package/dist/MonthPicker.js +9 -0
  25. package/dist/MultiComboBox.js +47 -6
  26. package/dist/MultiInput.js +9 -2
  27. package/dist/Option.js +2 -2
  28. package/dist/Panel.js +24 -4
  29. package/dist/Popover.js +5 -4
  30. package/dist/Popup.js +13 -2
  31. package/dist/RadioButton.js +7 -5
  32. package/dist/RangeSlider.js +1 -1
  33. package/dist/RatingIndicator.js +1 -1
  34. package/dist/SegmentedButton.js +1 -1
  35. package/dist/Select.js +34 -7
  36. package/dist/Slider.js +1 -1
  37. package/dist/SliderBase.js +4 -4
  38. package/dist/SplitButton.js +2 -2
  39. package/dist/StandardListItem.js +3 -3
  40. package/dist/StepInput.js +1 -1
  41. package/dist/SuggestionItem.js +2 -2
  42. package/dist/Switch.js +1 -1
  43. package/dist/Tab.js +17 -10
  44. package/dist/TabContainer.js +169 -148
  45. package/dist/TabSeparator.js +8 -1
  46. package/dist/Table.js +1 -1
  47. package/dist/TextArea.js +8 -3
  48. package/dist/TimePickerBase.js +8 -0
  49. package/dist/TimeSelection.js +1 -2
  50. package/dist/Tokenizer.js +74 -8
  51. package/dist/Tree.js +4 -0
  52. package/dist/TreeItem.js +2 -2
  53. package/dist/TreeListItem.js +1 -1
  54. package/dist/YearPicker.js +50 -25
  55. package/dist/api.json +1 -1
  56. package/dist/assets/SAP-icons-business-suite.7cff1fd8.js +1 -0
  57. package/dist/assets/SAP-icons.7f154911.js +1 -0
  58. package/dist/assets/SAP-icons.e76c8241.js +1 -0
  59. package/dist/assets/messagebundle_ar.f3e988df.js +1 -0
  60. package/dist/assets/messagebundle_bg.a3f6fdd8.js +1 -0
  61. package/dist/assets/messagebundle_ca.5e72bf09.js +1 -0
  62. package/dist/assets/messagebundle_cs.5720e069.js +1 -0
  63. package/dist/assets/messagebundle_cy.51ed6118.js +1 -0
  64. package/dist/assets/messagebundle_da.d83f1df6.js +1 -0
  65. package/dist/assets/messagebundle_de.00b8fac3.js +1 -0
  66. package/dist/assets/messagebundle_el.54337d1a.js +1 -0
  67. package/dist/assets/messagebundle_en.46c4c8b4.js +1 -0
  68. package/dist/assets/messagebundle_en_GB.d9037cba.js +1 -0
  69. package/dist/assets/messagebundle_en_US_sappsd.2f342e46.js +1 -0
  70. package/dist/assets/messagebundle_en_US_saprigi.9e3ec6ce.js +1 -0
  71. package/dist/assets/messagebundle_en_US_saptrc.a358bbc3.js +1 -0
  72. package/dist/assets/messagebundle_es.6edd9aac.js +1 -0
  73. package/dist/assets/messagebundle_es_MX.b9a235b1.js +1 -0
  74. package/dist/assets/messagebundle_et.2f95fbc0.js +1 -0
  75. package/dist/assets/messagebundle_fi.e408238f.js +1 -0
  76. package/dist/assets/messagebundle_fr.023ec658.js +1 -0
  77. package/dist/assets/messagebundle_fr_CA.700b3003.js +1 -0
  78. package/dist/assets/messagebundle_hi.e54398ec.js +1 -0
  79. package/dist/assets/messagebundle_hr.87a5cf12.js +1 -0
  80. package/dist/assets/messagebundle_hu.11f04021.js +1 -0
  81. package/dist/assets/messagebundle_it.aa33f57d.js +1 -0
  82. package/dist/assets/messagebundle_iw.876a2de2.js +1 -0
  83. package/dist/assets/messagebundle_ja.8e38b3b9.js +1 -0
  84. package/dist/assets/messagebundle_kk.16201d64.js +1 -0
  85. package/dist/assets/messagebundle_ko.efd3d190.js +1 -0
  86. package/dist/assets/messagebundle_lt.8df3235f.js +1 -0
  87. package/dist/assets/messagebundle_lv.1485b0dd.js +1 -0
  88. package/dist/assets/messagebundle_ms.2801cf14.js +1 -0
  89. package/dist/assets/messagebundle_nl.fbaa57e5.js +1 -0
  90. package/dist/assets/messagebundle_no.aed62d2d.js +1 -0
  91. package/dist/assets/messagebundle_pl.ec09771e.js +1 -0
  92. package/dist/assets/messagebundle_pt.2ba5f988.js +1 -0
  93. package/dist/assets/messagebundle_pt_PT.f26a67f1.js +1 -0
  94. package/dist/assets/messagebundle_ro.71197951.js +1 -0
  95. package/dist/assets/messagebundle_ru.0bc1939f.js +1 -0
  96. package/dist/assets/messagebundle_sh.097c2c2b.js +1 -0
  97. package/dist/assets/messagebundle_sk.79a87686.js +1 -0
  98. package/dist/assets/messagebundle_sl.9d602bfb.js +1 -0
  99. package/dist/assets/messagebundle_sv.efb6e0ef.js +1 -0
  100. package/dist/assets/messagebundle_th.94c0d1ab.js +1 -0
  101. package/dist/assets/messagebundle_tr.b3a571be.js +1 -0
  102. package/dist/assets/messagebundle_uk.8d0551a9.js +1 -0
  103. package/dist/assets/messagebundle_vi.6819ccf0.js +1 -0
  104. package/dist/assets/messagebundle_zh_CN.0c604a5d.js +1 -0
  105. package/dist/assets/messagebundle_zh_TW.4659173f.js +1 -0
  106. package/dist/assets/{parameters-bundle.css.d35c9c32.js → parameters-bundle.css.13aed676.js} +1 -1
  107. package/dist/assets/{parameters-bundle.css.95d13129.js → parameters-bundle.css.157592af.js} +1 -1
  108. package/dist/assets/parameters-bundle.css.18cb3350.js +1 -0
  109. package/dist/assets/{parameters-bundle.css.e9998509.js → parameters-bundle.css.25017933.js} +1 -1
  110. package/dist/assets/parameters-bundle.css.2be7f26d.js +1 -0
  111. package/dist/assets/parameters-bundle.css.31a66508.js +1 -0
  112. package/dist/assets/parameters-bundle.css.33915181.js +1 -0
  113. package/dist/assets/parameters-bundle.css.41e95390.js +1 -0
  114. package/dist/assets/parameters-bundle.css.4343d807.js +1 -0
  115. package/dist/assets/parameters-bundle.css.4438b4b3.js +1 -0
  116. package/dist/assets/parameters-bundle.css.54a888ff.js +1 -0
  117. package/dist/assets/{parameters-bundle.css.e9339a13.js → parameters-bundle.css.5550ceb2.js} +1 -1
  118. package/dist/assets/{parameters-bundle.css.c967e7ef.js → parameters-bundle.css.60956972.js} +1 -1
  119. package/dist/assets/{parameters-bundle.css.3db3a626.js → parameters-bundle.css.61a5fde8.js} +1 -1
  120. package/dist/assets/parameters-bundle.css.6d229ca8.js +1 -0
  121. package/dist/assets/parameters-bundle.css.7c26b98b.js +1 -0
  122. package/dist/assets/{parameters-bundle.css.780c6a0b.js → parameters-bundle.css.adc7c452.js} +1 -1
  123. package/dist/assets/{parameters-bundle.css.16d388d6.js → parameters-bundle.css.ba38c500.js} +1 -1
  124. package/dist/assets/{parameters-bundle.css.d4f504ed.js → parameters-bundle.css.c64ba63b.js} +1 -1
  125. package/dist/assets/{parameters-bundle.css.f0eeb6a4.js → parameters-bundle.css.cac9f3de.js} +1 -1
  126. package/dist/assets/parameters-bundle.css.cad0773b.js +1 -0
  127. package/dist/assets/parameters-bundle.css.d532d151.js +1 -0
  128. package/dist/assets/{parameters-bundle.css.7be18144.js → parameters-bundle.css.d5d27adb.js} +1 -1
  129. package/dist/assets/{parameters-bundle.css.f6aea851.js → parameters-bundle.css.fbd8d2ab.js} +1 -1
  130. package/dist/css/themes/Avatar.css +1 -1
  131. package/dist/css/themes/AvatarGroup.css +1 -1
  132. package/dist/css/themes/Badge.css +1 -1
  133. package/dist/css/themes/Breadcrumbs.css +1 -1
  134. package/dist/css/themes/BrowserScrollbar.css +1 -1
  135. package/dist/css/themes/Button.css +1 -1
  136. package/dist/css/themes/CalendarHeader.css +1 -1
  137. package/dist/css/themes/ComboBox.css +1 -1
  138. package/dist/css/themes/DatePicker.css +1 -1
  139. package/dist/css/themes/DayPicker.css +1 -1
  140. package/dist/css/themes/Dialog.css +1 -1
  141. package/dist/css/themes/GroupHeaderListItem.css +1 -1
  142. package/dist/css/themes/Input.css +1 -1
  143. package/dist/css/themes/Menu.css +1 -1
  144. package/dist/css/themes/MonthPicker.css +1 -1
  145. package/dist/css/themes/MultiComboBox.css +1 -1
  146. package/dist/css/themes/Panel.css +1 -1
  147. package/dist/css/themes/Select.css +1 -1
  148. package/dist/css/themes/TextArea.css +1 -1
  149. package/dist/css/themes/Title.css +1 -1
  150. package/dist/css/themes/Tokenizer.css +1 -1
  151. package/dist/css/themes/YearPicker.css +1 -1
  152. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  153. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  154. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  155. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  156. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  157. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  158. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  159. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  160. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  161. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  162. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  163. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  164. package/dist/features/InputElementsFormSupport.js +5 -1
  165. package/dist/features/InputSuggestions.js +21 -2
  166. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  168. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  169. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  171. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  172. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  173. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  174. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  175. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  176. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  177. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  178. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  179. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  180. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  181. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  182. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  183. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  184. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  185. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  186. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  187. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  188. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  189. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  190. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  191. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  192. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  193. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  194. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  195. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  196. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  197. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  198. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  199. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  200. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  201. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  202. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  203. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  204. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  205. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  206. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  207. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  208. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  209. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  210. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  211. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  212. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  213. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  214. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  215. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  216. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  217. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  218. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  219. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  220. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  221. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  222. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  223. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  224. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  225. package/dist/generated/i18n/i18n-defaults.js +2 -2
  226. package/dist/generated/templates/AvatarTemplate.lit.js +1 -1
  227. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  228. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +2 -2
  229. package/dist/generated/templates/CalendarTemplate.lit.js +1 -1
  230. package/dist/generated/templates/CardHeaderTemplate.lit.js +2 -2
  231. package/dist/generated/templates/CarouselTemplate.lit.js +1 -1
  232. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +3 -3
  233. package/dist/generated/templates/ComboBoxTemplate.lit.js +1 -1
  234. package/dist/generated/templates/CustomListItemTemplate.lit.js +2 -2
  235. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  236. package/dist/generated/templates/DialogTemplate.lit.js +7 -6
  237. package/dist/generated/templates/GroupHeaderListItemTemplate.lit.js +1 -1
  238. package/dist/generated/templates/IconTemplate.lit.js +2 -1
  239. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  240. package/dist/generated/templates/ListTemplate.lit.js +1 -1
  241. package/dist/generated/templates/MenuTemplate.lit.js +1 -1
  242. package/dist/generated/templates/MonthPickerTemplate.lit.js +2 -1
  243. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +3 -3
  244. package/dist/generated/templates/MultiComboBoxTemplate.lit.js +1 -1
  245. package/dist/generated/templates/PanelTemplate.lit.js +7 -6
  246. package/dist/generated/templates/PopoverTemplate.lit.js +1 -1
  247. package/dist/generated/templates/PopupTemplate.lit.js +1 -1
  248. package/dist/generated/templates/RangeSliderTemplate.lit.js +1 -1
  249. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +1 -1
  250. package/dist/generated/templates/SliderTemplate.lit.js +1 -1
  251. package/dist/generated/templates/StandardListItemTemplate.lit.js +2 -2
  252. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +2 -2
  253. package/dist/generated/templates/TabContainerTemplate.lit.js +1 -1
  254. package/dist/generated/templates/TabInOverflowTemplate.lit.js +1 -1
  255. package/dist/generated/templates/TabInStripTemplate.lit.js +1 -1
  256. package/dist/generated/templates/TableTemplate.lit.js +9 -8
  257. package/dist/generated/templates/TextAreaTemplate.lit.js +1 -1
  258. package/dist/generated/templates/TreeListItemTemplate.lit.js +2 -2
  259. package/dist/generated/templates/YearPickerTemplate.lit.js +2 -1
  260. package/dist/generated/themes/Avatar.css.js +1 -1
  261. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  262. package/dist/generated/themes/Badge.css.js +1 -1
  263. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  264. package/dist/generated/themes/BrowserScrollbar.css.js +1 -1
  265. package/dist/generated/themes/Button.css.js +1 -1
  266. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  267. package/dist/generated/themes/ComboBox.css.js +1 -1
  268. package/dist/generated/themes/DatePicker.css.js +1 -1
  269. package/dist/generated/themes/DayPicker.css.js +1 -1
  270. package/dist/generated/themes/Dialog.css.js +1 -1
  271. package/dist/generated/themes/GroupHeaderListItem.css.js +1 -1
  272. package/dist/generated/themes/Input.css.js +1 -1
  273. package/dist/generated/themes/Menu.css.js +1 -1
  274. package/dist/generated/themes/MonthPicker.css.js +1 -1
  275. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  276. package/dist/generated/themes/Panel.css.js +1 -1
  277. package/dist/generated/themes/Select.css.js +1 -1
  278. package/dist/generated/themes/TextArea.css.js +1 -1
  279. package/dist/generated/themes/Title.css.js +1 -1
  280. package/dist/generated/themes/Tokenizer.css.js +1 -1
  281. package/dist/generated/themes/YearPicker.css.js +1 -1
  282. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  283. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  284. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  285. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  286. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  287. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  288. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  289. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  290. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  291. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  292. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  293. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  294. package/dist/i18n/messagebundle.properties +16 -4
  295. package/dist/i18n/messagebundle_ar.properties +10 -0
  296. package/dist/i18n/messagebundle_bg.properties +10 -0
  297. package/dist/i18n/messagebundle_ca.properties +10 -0
  298. package/dist/i18n/messagebundle_cs.properties +10 -0
  299. package/dist/i18n/messagebundle_cy.properties +10 -0
  300. package/dist/i18n/messagebundle_da.properties +10 -0
  301. package/dist/i18n/messagebundle_de.properties +11 -1
  302. package/dist/i18n/messagebundle_el.properties +10 -0
  303. package/dist/i18n/messagebundle_en.properties +10 -0
  304. package/dist/i18n/messagebundle_en_GB.properties +10 -0
  305. package/dist/i18n/messagebundle_en_US_sappsd.properties +10 -0
  306. package/dist/i18n/messagebundle_en_US_saprigi.properties +10 -2
  307. package/dist/i18n/messagebundle_en_US_saptrc.properties +11 -1
  308. package/dist/i18n/messagebundle_es.properties +10 -0
  309. package/dist/i18n/messagebundle_es_MX.properties +10 -0
  310. package/dist/i18n/messagebundle_et.properties +10 -0
  311. package/dist/i18n/messagebundle_fi.properties +10 -0
  312. package/dist/i18n/messagebundle_fr.properties +10 -0
  313. package/dist/i18n/messagebundle_fr_CA.properties +10 -0
  314. package/dist/i18n/messagebundle_hi.properties +10 -0
  315. package/dist/i18n/messagebundle_hr.properties +10 -0
  316. package/dist/i18n/messagebundle_hu.properties +10 -0
  317. package/dist/i18n/messagebundle_id.properties +10 -0
  318. package/dist/i18n/messagebundle_it.properties +12 -2
  319. package/dist/i18n/messagebundle_iw.properties +10 -0
  320. package/dist/i18n/messagebundle_ja.properties +10 -0
  321. package/dist/i18n/messagebundle_kk.properties +10 -0
  322. package/dist/i18n/messagebundle_ko.properties +10 -0
  323. package/dist/i18n/messagebundle_lt.properties +10 -0
  324. package/dist/i18n/messagebundle_lv.properties +10 -0
  325. package/dist/i18n/messagebundle_ms.properties +10 -0
  326. package/dist/i18n/messagebundle_nl.properties +10 -0
  327. package/dist/i18n/messagebundle_no.properties +10 -0
  328. package/dist/i18n/messagebundle_pl.properties +10 -0
  329. package/dist/i18n/messagebundle_pt.properties +10 -0
  330. package/dist/i18n/messagebundle_pt_PT.properties +10 -0
  331. package/dist/i18n/messagebundle_ro.properties +10 -0
  332. package/dist/i18n/messagebundle_ru.properties +10 -0
  333. package/dist/i18n/messagebundle_sh.properties +10 -0
  334. package/dist/i18n/messagebundle_sk.properties +10 -0
  335. package/dist/i18n/messagebundle_sl.properties +10 -0
  336. package/dist/i18n/messagebundle_sv.properties +10 -0
  337. package/dist/i18n/messagebundle_th.properties +13 -3
  338. package/dist/i18n/messagebundle_tr.properties +10 -0
  339. package/dist/i18n/messagebundle_uk.properties +11 -1
  340. package/dist/i18n/messagebundle_vi.properties +10 -0
  341. package/dist/i18n/messagebundle_zh_CN.properties +10 -0
  342. package/dist/i18n/messagebundle_zh_TW.properties +10 -0
  343. package/package.json +7 -7
  344. package/src/Avatar.hbs +2 -0
  345. package/src/Avatar.js +29 -1
  346. package/src/AvatarGroup.js +20 -2
  347. package/src/Breadcrumbs.hbs +1 -1
  348. package/src/BreadcrumbsItem.js +2 -2
  349. package/src/Button.js +4 -4
  350. package/src/Calendar.hbs +3 -0
  351. package/src/Calendar.js +33 -45
  352. package/src/CalendarHeader.hbs +5 -1
  353. package/src/CalendarHeader.js +5 -1
  354. package/src/CardHeader.hbs +2 -1
  355. package/src/CardHeader.js +1 -0
  356. package/src/Carousel.hbs +1 -1
  357. package/src/Carousel.js +9 -0
  358. package/src/CheckBox.js +2 -2
  359. package/src/ComboBox.hbs +1 -1
  360. package/src/ComboBox.js +52 -6
  361. package/src/ComboBoxPopover.hbs +1 -1
  362. package/src/DatePicker.hbs +2 -0
  363. package/src/DatePicker.js +17 -1
  364. package/src/DateRangePicker.js +8 -2
  365. package/src/DateTimePicker.js +1 -1
  366. package/src/Dialog.hbs +5 -1
  367. package/src/Dialog.js +41 -1
  368. package/src/GroupHeaderListItem.hbs +2 -2
  369. package/src/Icon.hbs +3 -1
  370. package/src/Icon.js +9 -9
  371. package/src/Input.js +32 -13
  372. package/src/Label.js +1 -3
  373. package/src/Link.js +4 -2
  374. package/src/List.hbs +1 -1
  375. package/src/List.js +17 -1
  376. package/src/ListItem.hbs +1 -1
  377. package/src/Menu.hbs +1 -0
  378. package/src/Menu.js +6 -4
  379. package/src/MenuItem.js +20 -5
  380. package/src/MessageStrip.js +1 -1
  381. package/src/MonthPicker.hbs +8 -1
  382. package/src/MonthPicker.js +9 -0
  383. package/src/MultiComboBox.hbs +1 -1
  384. package/src/MultiComboBox.js +47 -6
  385. package/src/MultiComboBoxPopover.hbs +1 -1
  386. package/src/MultiInput.js +9 -2
  387. package/src/Option.js +2 -2
  388. package/src/Panel.hbs +56 -46
  389. package/src/Panel.js +24 -4
  390. package/src/Popover.js +5 -4
  391. package/src/Popup.hbs +1 -1
  392. package/src/Popup.js +13 -2
  393. package/src/RadioButton.js +7 -5
  394. package/src/RangeSlider.hbs +2 -2
  395. package/src/RangeSlider.js +1 -1
  396. package/src/RatingIndicator.js +1 -1
  397. package/src/SegmentedButton.js +1 -1
  398. package/src/Select.js +34 -7
  399. package/src/Slider.hbs +1 -1
  400. package/src/Slider.js +1 -1
  401. package/src/SliderBase.js +4 -4
  402. package/src/SplitButton.js +2 -2
  403. package/src/StandardListItem.js +3 -3
  404. package/src/StepInput.js +1 -1
  405. package/src/SuggestionItem.js +2 -2
  406. package/src/Switch.js +1 -1
  407. package/src/Tab.js +17 -10
  408. package/src/TabContainer.hbs +5 -1
  409. package/src/TabContainer.js +169 -148
  410. package/src/TabInOverflow.hbs +1 -1
  411. package/src/TabInStrip.hbs +1 -1
  412. package/src/TabSeparator.js +8 -1
  413. package/src/Table.hbs +9 -7
  414. package/src/Table.js +1 -1
  415. package/src/TextArea.hbs +1 -1
  416. package/src/TextArea.js +8 -3
  417. package/src/TimePickerBase.js +8 -0
  418. package/src/TimeSelection.js +1 -2
  419. package/src/Tokenizer.js +74 -8
  420. package/src/Tree.js +4 -0
  421. package/src/TreeItem.js +2 -2
  422. package/src/TreeListItem.js +1 -1
  423. package/src/YearPicker.hbs +7 -0
  424. package/src/YearPicker.js +50 -25
  425. package/src/features/InputElementsFormSupport.js +5 -1
  426. package/src/features/InputSuggestions.js +21 -2
  427. package/src/i18n/messagebundle.properties +16 -4
  428. package/src/i18n/messagebundle_ar.properties +10 -0
  429. package/src/i18n/messagebundle_bg.properties +10 -0
  430. package/src/i18n/messagebundle_ca.properties +10 -0
  431. package/src/i18n/messagebundle_cs.properties +10 -0
  432. package/src/i18n/messagebundle_cy.properties +10 -0
  433. package/src/i18n/messagebundle_da.properties +10 -0
  434. package/src/i18n/messagebundle_de.properties +11 -1
  435. package/src/i18n/messagebundle_el.properties +10 -0
  436. package/src/i18n/messagebundle_en.properties +10 -0
  437. package/src/i18n/messagebundle_en_GB.properties +10 -0
  438. package/src/i18n/messagebundle_en_US_sappsd.properties +10 -0
  439. package/src/i18n/messagebundle_en_US_saprigi.properties +10 -2
  440. package/src/i18n/messagebundle_en_US_saptrc.properties +11 -1
  441. package/src/i18n/messagebundle_es.properties +10 -0
  442. package/src/i18n/messagebundle_es_MX.properties +10 -0
  443. package/src/i18n/messagebundle_et.properties +10 -0
  444. package/src/i18n/messagebundle_fi.properties +10 -0
  445. package/src/i18n/messagebundle_fr.properties +10 -0
  446. package/src/i18n/messagebundle_fr_CA.properties +10 -0
  447. package/src/i18n/messagebundle_hi.properties +10 -0
  448. package/src/i18n/messagebundle_hr.properties +10 -0
  449. package/src/i18n/messagebundle_hu.properties +10 -0
  450. package/src/i18n/messagebundle_id.properties +10 -0
  451. package/src/i18n/messagebundle_it.properties +12 -2
  452. package/src/i18n/messagebundle_iw.properties +10 -0
  453. package/src/i18n/messagebundle_ja.properties +10 -0
  454. package/src/i18n/messagebundle_kk.properties +10 -0
  455. package/src/i18n/messagebundle_ko.properties +10 -0
  456. package/src/i18n/messagebundle_lt.properties +10 -0
  457. package/src/i18n/messagebundle_lv.properties +10 -0
  458. package/src/i18n/messagebundle_ms.properties +10 -0
  459. package/src/i18n/messagebundle_nl.properties +10 -0
  460. package/src/i18n/messagebundle_no.properties +10 -0
  461. package/src/i18n/messagebundle_pl.properties +10 -0
  462. package/src/i18n/messagebundle_pt.properties +10 -0
  463. package/src/i18n/messagebundle_pt_PT.properties +10 -0
  464. package/src/i18n/messagebundle_ro.properties +10 -0
  465. package/src/i18n/messagebundle_ru.properties +10 -0
  466. package/src/i18n/messagebundle_sh.properties +10 -0
  467. package/src/i18n/messagebundle_sk.properties +10 -0
  468. package/src/i18n/messagebundle_sl.properties +10 -0
  469. package/src/i18n/messagebundle_sv.properties +10 -0
  470. package/src/i18n/messagebundle_th.properties +13 -3
  471. package/src/i18n/messagebundle_tr.properties +10 -0
  472. package/src/i18n/messagebundle_uk.properties +11 -1
  473. package/src/i18n/messagebundle_vi.properties +10 -0
  474. package/src/i18n/messagebundle_zh_CN.properties +10 -0
  475. package/src/i18n/messagebundle_zh_TW.properties +10 -0
  476. package/src/themes/Avatar.css +51 -0
  477. package/src/themes/AvatarGroup.css +1 -0
  478. package/src/themes/Badge.css +12 -0
  479. package/src/themes/Breadcrumbs.css +3 -0
  480. package/src/themes/BrowserScrollbar.css +6 -6
  481. package/src/themes/Button.css +5 -0
  482. package/src/themes/CalendarHeader.css +2 -2
  483. package/src/themes/DatePicker.css +13 -1
  484. package/src/themes/DayPicker.css +4 -4
  485. package/src/themes/Dialog.css +35 -0
  486. package/src/themes/GroupHeaderListItem.css +1 -0
  487. package/src/themes/Icon.css +1 -1
  488. package/src/themes/Input.css +34 -22
  489. package/src/themes/Menu.css +1 -0
  490. package/src/themes/MonthPicker.css +9 -2
  491. package/src/themes/Panel.css +0 -4
  492. package/src/themes/TextArea.css +7 -7
  493. package/src/themes/Title.css +1 -1
  494. package/src/themes/Tokenizer.css +1 -5
  495. package/src/themes/YearPicker.css +13 -2
  496. package/src/themes/base/DayPicker-parameters.css +3 -0
  497. package/src/themes/base/Dialog-parameters.css +8 -0
  498. package/src/themes/base/Input-parameters.css +2 -1
  499. package/src/themes/sap_belize/DayPicker-parameters.css +1 -1
  500. package/src/themes/sap_belize_hcb/Button-parameters.css +1 -0
  501. package/src/themes/sap_belize_hcb/DayPicker-parameters.css +7 -0
  502. package/src/themes/sap_belize_hcb/Input-parameters.css +3 -0
  503. package/src/themes/sap_belize_hcw/Button-parameters.css +1 -0
  504. package/src/themes/sap_belize_hcw/DayPicker-parameters.css +7 -0
  505. package/src/themes/sap_belize_hcw/Input-parameters.css +3 -0
  506. package/src/themes/sap_fiori_3_hcb/Button-parameters.css +1 -0
  507. package/src/themes/sap_fiori_3_hcb/Dialog-parameters.css +8 -0
  508. package/src/themes/sap_fiori_3_hcb/Input-parameters.css +2 -1
  509. package/src/themes/sap_fiori_3_hcw/Button-parameters.css +1 -0
  510. package/src/themes/sap_fiori_3_hcw/Dialog-parameters.css +8 -0
  511. package/src/themes/sap_fiori_3_hcw/Input-parameters.css +2 -1
  512. package/src/themes/sap_horizon/parameters-bundle.css +1 -1
  513. package/src/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  514. package/src/themes/sap_horizon_hcb/Dialog-parameters.css +4 -0
  515. package/src/themes/sap_horizon_hcb/Input-parameters.css +1 -1
  516. package/src/themes/sap_horizon_hcw/Dialog-parameters.css +4 -0
  517. package/src/themes/sap_horizon_hcw/Input-parameters.css +1 -1
  518. package/dist/assets/SAP-icons-business-suite.60260cdf.js +0 -1
  519. package/dist/assets/SAP-icons.09567bd9.js +0 -1
  520. package/dist/assets/SAP-icons.1f482d05.js +0 -1
  521. package/dist/assets/messagebundle_ar.9c5ee5ed.js +0 -1
  522. package/dist/assets/messagebundle_bg.0e988870.js +0 -1
  523. package/dist/assets/messagebundle_ca.a127ab38.js +0 -1
  524. package/dist/assets/messagebundle_cs.629a9626.js +0 -1
  525. package/dist/assets/messagebundle_cy.9e45bbce.js +0 -1
  526. package/dist/assets/messagebundle_da.773ab830.js +0 -1
  527. package/dist/assets/messagebundle_de.e3b00529.js +0 -1
  528. package/dist/assets/messagebundle_el.40c4d9bd.js +0 -1
  529. package/dist/assets/messagebundle_en.8eab6481.js +0 -1
  530. package/dist/assets/messagebundle_en_GB.43ff6ad4.js +0 -1
  531. package/dist/assets/messagebundle_en_US_sappsd.3123c345.js +0 -1
  532. package/dist/assets/messagebundle_en_US_saprigi.ce3d7e4c.js +0 -1
  533. package/dist/assets/messagebundle_en_US_saptrc.09e99a05.js +0 -1
  534. package/dist/assets/messagebundle_es.827626df.js +0 -1
  535. package/dist/assets/messagebundle_es_MX.a36afbf1.js +0 -1
  536. package/dist/assets/messagebundle_et.ef5644ec.js +0 -1
  537. package/dist/assets/messagebundle_fi.51171aa3.js +0 -1
  538. package/dist/assets/messagebundle_fr.1534fb7f.js +0 -1
  539. package/dist/assets/messagebundle_fr_CA.3ec2f1d9.js +0 -1
  540. package/dist/assets/messagebundle_hi.df105d55.js +0 -1
  541. package/dist/assets/messagebundle_hr.99b625e3.js +0 -1
  542. package/dist/assets/messagebundle_hu.45d5a14f.js +0 -1
  543. package/dist/assets/messagebundle_it.baf6d99f.js +0 -1
  544. package/dist/assets/messagebundle_iw.50133cb0.js +0 -1
  545. package/dist/assets/messagebundle_ja.4684bb4f.js +0 -1
  546. package/dist/assets/messagebundle_kk.153a974f.js +0 -1
  547. package/dist/assets/messagebundle_ko.2cbd9a48.js +0 -1
  548. package/dist/assets/messagebundle_lt.4792b637.js +0 -1
  549. package/dist/assets/messagebundle_lv.1c982a41.js +0 -1
  550. package/dist/assets/messagebundle_ms.6de4a307.js +0 -1
  551. package/dist/assets/messagebundle_nl.346b5b0c.js +0 -1
  552. package/dist/assets/messagebundle_no.55c09a78.js +0 -1
  553. package/dist/assets/messagebundle_pl.24f1673c.js +0 -1
  554. package/dist/assets/messagebundle_pt.a0acef65.js +0 -1
  555. package/dist/assets/messagebundle_pt_PT.d5340844.js +0 -1
  556. package/dist/assets/messagebundle_ro.c47aa2e7.js +0 -1
  557. package/dist/assets/messagebundle_ru.9d147f84.js +0 -1
  558. package/dist/assets/messagebundle_sh.42d912a5.js +0 -1
  559. package/dist/assets/messagebundle_sk.66be6ecd.js +0 -1
  560. package/dist/assets/messagebundle_sl.7aef5bf8.js +0 -1
  561. package/dist/assets/messagebundle_sv.0e001a3d.js +0 -1
  562. package/dist/assets/messagebundle_th.a1ae28b0.js +0 -1
  563. package/dist/assets/messagebundle_tr.91751c7e.js +0 -1
  564. package/dist/assets/messagebundle_uk.3fff2ce5.js +0 -1
  565. package/dist/assets/messagebundle_vi.dcd6b37b.js +0 -1
  566. package/dist/assets/messagebundle_zh_CN.3447b7cf.js +0 -1
  567. package/dist/assets/messagebundle_zh_TW.a6d3c782.js +0 -1
  568. package/dist/assets/parameters-bundle.css.01f054a7.js +0 -1
  569. package/dist/assets/parameters-bundle.css.0a36e0eb.js +0 -1
  570. package/dist/assets/parameters-bundle.css.38e4d904.js +0 -1
  571. package/dist/assets/parameters-bundle.css.40bf20d0.js +0 -1
  572. package/dist/assets/parameters-bundle.css.4260a678.js +0 -1
  573. package/dist/assets/parameters-bundle.css.4cd19aca.js +0 -1
  574. package/dist/assets/parameters-bundle.css.4d47c982.js +0 -1
  575. package/dist/assets/parameters-bundle.css.6993a07a.js +0 -1
  576. package/dist/assets/parameters-bundle.css.6f186b45.js +0 -1
  577. package/dist/assets/parameters-bundle.css.9c6e589c.js +0 -1
  578. package/dist/assets/parameters-bundle.css.c35f092e.js +0 -1
  579. package/dist/assets/parameters-bundle.css.d09464d2.js +0 -1
package/src/Table.hbs CHANGED
@@ -19,13 +19,15 @@
19
19
  >
20
20
  {{#if isMultiSelect}}
21
21
  <th class="ui5-table-select-all-column" role="presentation" aria-hidden="true">
22
- <ui5-checkbox class="ui5-table-select-all-checkbox"
23
- ?checked="{{_allRowsSelected}}"
24
- @ui5-change="{{_selectAll}}"
25
- aria-label="{{ariaLabelSelectAllText}}"
26
- tabindex="-1"
27
- >
28
- </ui5-checkbox>
22
+ {{#if rows.length}}
23
+ <ui5-checkbox class="ui5-table-select-all-checkbox"
24
+ ?checked="{{_allRowsSelected}}"
25
+ @ui5-change="{{_selectAll}}"
26
+ aria-label="{{ariaLabelSelectAllText}}"
27
+ tabindex="-1"
28
+ >
29
+ </ui5-checkbox>
30
+ {{/if}}
29
31
  </th>
30
32
  {{/if}}
31
33
 
package/src/Table.js CHANGED
@@ -253,7 +253,7 @@ const metadata = {
253
253
  },
254
254
 
255
255
  /**
256
- * Defines the accessible aria name of the component.
256
+ * Defines the accessible ARIA name of the component.
257
257
  *
258
258
  * @type {string}
259
259
  * @defaultvalue: ""
package/src/TextArea.hbs CHANGED
@@ -1,5 +1,5 @@
1
1
  <div
2
- class="ui5-textarea-root"
2
+ class="{{classes.root}}"
3
3
  style="{{styles.main}}"
4
4
  @focusin="{{_onfocusin}}"
5
5
  @focusout="{{_onfocusout}}"
package/src/TextArea.js CHANGED
@@ -3,6 +3,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
4
4
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
5
5
  import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
6
+ import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
6
7
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
8
  import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
8
9
  import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
@@ -217,7 +218,7 @@ const metadata = {
217
218
  },
218
219
 
219
220
  /**
220
- * Defines the accessible aria name of the component.
221
+ * Defines the accessible ARIA name of the component.
221
222
  *
222
223
  * @type {string}
223
224
  * @public
@@ -534,9 +535,9 @@ class TextArea extends UI5Element {
534
535
  leftCharactersCount;
535
536
 
536
537
  if (this.showExceededText) {
537
- const maxLength = this.maxlength || 0;
538
+ const maxLength = this.maxlength;
538
539
 
539
- if (maxLength) {
540
+ if (maxLength !== null) {
540
541
  leftCharactersCount = maxLength - this.value.length;
541
542
 
542
543
  if (leftCharactersCount >= 0) {
@@ -556,6 +557,10 @@ class TextArea extends UI5Element {
556
557
 
557
558
  get classes() {
558
559
  return {
560
+ root: {
561
+ "ui5-textarea-root": true,
562
+ "ui5-content-native-scrollbars": getEffectiveScrollbarStyle(),
563
+ },
559
564
  valueStateMsg: {
560
565
  "ui5-valuestatemessage--error": this.valueState === ValueState.Error,
561
566
  "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning,
@@ -14,6 +14,10 @@ import {
14
14
  isPageDownShift,
15
15
  isPageUpShiftCtrl,
16
16
  isPageDownShiftCtrl,
17
+ isTabNext,
18
+ isTabPrevious,
19
+ isF6Next,
20
+ isF6Previous,
17
21
  } from "@ui5/webcomponents-base/dist/Keys.js";
18
22
  import "@ui5/webcomponents-icons/dist/time-entry-request.js";
19
23
  import Icon from "./Icon.js";
@@ -348,6 +352,10 @@ class TimePickerBase extends UI5Element {
348
352
  this.togglePicker();
349
353
  }
350
354
 
355
+ if ((this._getInput().isEqualNode(e.target) && this.isOpen()) && (isTabNext(e) || isTabPrevious(e) || isF6Next(e) || isF6Previous(e))) {
356
+ this.closePicker();
357
+ }
358
+
351
359
  if (this.isOpen()) {
352
360
  return;
353
361
  }
@@ -28,7 +28,6 @@ import {
28
28
  TIMEPICKER_HOURS_LABEL,
29
29
  TIMEPICKER_MINUTES_LABEL,
30
30
  TIMEPICKER_SECONDS_LABEL,
31
- TIMEPICKER_PERIODS_LABEL,
32
31
  } from "./generated/i18n/i18n-defaults.js";
33
32
 
34
33
  // Styles
@@ -478,7 +477,7 @@ class TimeSelection extends UI5Element {
478
477
  }
479
478
 
480
479
  get periodSliderTitle() {
481
- return TimeSelection.i18nBundle.getText(TIMEPICKER_PERIODS_LABEL);
480
+ return "AM/PM";
482
481
  }
483
482
 
484
483
  get classes() {
package/src/Tokenizer.js CHANGED
@@ -25,6 +25,10 @@ import {
25
25
  isEndShift,
26
26
  isHomeCtrl,
27
27
  isEndCtrl,
28
+ isRight,
29
+ isLeft,
30
+ isUp,
31
+ isDown,
28
32
  } from "@ui5/webcomponents-base/dist/Keys.js";
29
33
  import { isPhone } from "@ui5/webcomponents-base/dist/Device.js";
30
34
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
@@ -225,7 +229,16 @@ class Tokenizer extends UI5Element {
225
229
  }
226
230
 
227
231
  onAfterRendering() {
228
- this._scrollEnablement.scrollContainer = this.expanded ? this.contentDom : this;
232
+ this._scrollEnablement.scrollContainer = (this.expanded || !this.narrowContentDom) ? this.expandedContentDom : this.narrowContentDom;
233
+
234
+ if (this.expanded) {
235
+ this._expandedScrollWidth = this.expandedContentDom.scrollWidth;
236
+ this.scrollToEnd();
237
+ }
238
+
239
+ if (!this.expanded) {
240
+ this.scrollToStart();
241
+ }
229
242
  }
230
243
 
231
244
  _delete(event) {
@@ -320,6 +333,11 @@ class Tokenizer extends UI5Element {
320
333
 
321
334
  return this._toggleTokenSelection(tokens);
322
335
  }
336
+
337
+ if (isLeft(event) || isRight(event) || isUp(event) || isDown(event)) {
338
+ const nextTokenIdx = this._calcNextTokenIndex(this._tokens.find(token => token.focused), tokens, (isRight(event) || isDown(event)));
339
+ this._scrollToToken(tokens[nextTokenIdx]);
340
+ }
323
341
  }
324
342
 
325
343
  _handleHome(tokens, endKeyPressed) {
@@ -384,6 +402,8 @@ class Tokenizer extends UI5Element {
384
402
  }
385
403
 
386
404
  setTimeout(() => tokens[nextIndex].focus(), 0);
405
+
406
+ this._scrollToToken(tokens[nextIndex]);
387
407
  this._itemNav.setCurrentItem(tokens[nextIndex]);
388
408
  }
389
409
 
@@ -398,6 +418,8 @@ class Tokenizer extends UI5Element {
398
418
  focusedToken.selected = true;
399
419
  tokens[nextIndex].selected = true;
400
420
  setTimeout(() => tokens[nextIndex].focus(), 0);
421
+
422
+ this._scrollToToken(tokens[nextIndex]);
401
423
  this._itemNav.setCurrentItem(tokens[nextIndex]);
402
424
  }
403
425
 
@@ -407,6 +429,7 @@ class Tokenizer extends UI5Element {
407
429
 
408
430
  _onmousedown(event) {
409
431
  this._itemNav.setCurrentItem(event.target);
432
+ this._scrollToToken(event.target);
410
433
  }
411
434
 
412
435
  _toggleTokenSelection(tokens) {
@@ -455,7 +478,41 @@ class Tokenizer extends UI5Element {
455
478
  * @private
456
479
  */
457
480
  scrollToStart() {
458
- this.contentDom.scrollLeft = 0;
481
+ if (this._scrollEnablement.scrollContainer) {
482
+ this._scrollEnablement.scrollTo(0, 0);
483
+ }
484
+ }
485
+
486
+ /**
487
+ * Scrolls the container of the tokens to its end when expanded.
488
+ * This method is used by MultiInput and MultiComboBox.
489
+ * @private
490
+ */
491
+ scrollToEnd() {
492
+ const expandedTokenizerScrollWidth = this.expandedContentDom && (this.effectiveDir !== "rtl" ? this.expandedContentDom.scrollWidth : -this.expandedContentDom.scrollWidth);
493
+ if (this._scrollEnablement.scrollContainer) {
494
+ this._scrollEnablement.scrollTo(expandedTokenizerScrollWidth, 0, 5, 10);
495
+ }
496
+ }
497
+
498
+ /**
499
+ * Scrolls token to the visible area of the container.
500
+ * Adds 4 pixels to the scroll position to ensure padding and border visibility on both ends
501
+ * @private
502
+ */
503
+ _scrollToToken(token) {
504
+ if (!this.expandedContentDom) {
505
+ return;
506
+ }
507
+
508
+ const tokenRect = token.getBoundingClientRect();
509
+ const tokenContainerRect = this.expandedContentDom.getBoundingClientRect();
510
+
511
+ if (tokenRect.left < tokenContainerRect.left) {
512
+ this._scrollEnablement.scrollTo(this.expandedContentDom.scrollLeft - (tokenContainerRect.left - tokenRect.left + 5), 0);
513
+ } else if (tokenRect.right > tokenContainerRect.right) {
514
+ this._scrollEnablement.scrollTo(this.expandedContentDom.scrollLeft + (tokenRect.right - tokenContainerRect.right + 5), 0);
515
+ }
459
516
  }
460
517
 
461
518
  async closeMorePopover() {
@@ -476,6 +533,14 @@ class Tokenizer extends UI5Element {
476
533
  return this.shadowRoot.querySelector(".ui5-tokenizer--content");
477
534
  }
478
535
 
536
+ get expandedContentDom() {
537
+ return this.shadowRoot.querySelector(".ui5-tokenizer-expanded--content");
538
+ }
539
+
540
+ get narrowContentDom() {
541
+ return this.shadowRoot.querySelector(".ui5-tokenizer-nmore--content");
542
+ }
543
+
479
544
  get tokenizerLabel() {
480
545
  return Tokenizer.i18nBundle.getText(TOKENIZER_ARIA_LABEL);
481
546
  }
@@ -497,14 +562,14 @@ class Tokenizer extends UI5Element {
497
562
  });
498
563
 
499
564
  return this._getTokens().filter(token => {
500
- const isRTL = this.effectiveDir === "rtl";
501
- const elementEnd = isRTL ? "left" : "right";
502
565
  const parentRect = this.contentDom.getBoundingClientRect();
503
566
  const tokenRect = token.getBoundingClientRect();
504
- const tokenEnd = parseInt(tokenRect[elementEnd]);
505
- const parentEnd = parseInt(parentRect[elementEnd]);
567
+ const tokenEnd = parseInt(tokenRect.right);
568
+ const parentEnd = parseInt(parentRect.right);
569
+ const tokenStart = parseInt(tokenRect.left);
570
+ const parentStart = parseInt(parentRect.left);
506
571
 
507
- token.overflows = isRTL ? ((tokenEnd < parentEnd) && !this.expanded) : ((tokenEnd > parentEnd) && !this.expanded);
572
+ token.overflows = !this.expanded && ((tokenStart < parentStart) || (tokenEnd > parentEnd));
508
573
 
509
574
  return token.overflows;
510
575
  });
@@ -549,7 +614,8 @@ class Tokenizer extends UI5Element {
549
614
  },
550
615
  content: {
551
616
  "ui5-tokenizer--content": true,
552
- "ui5-tokenizer-nmore--content": this.showMore,
617
+ "ui5-tokenizer-expanded--content": !this.showNMore,
618
+ "ui5-tokenizer-nmore--content": this.showNMore,
553
619
  },
554
620
  popoverValueState: {
555
621
  "ui5-valuestatemessage-root": true,
package/src/Tree.js CHANGED
@@ -221,12 +221,14 @@ const metadata = {
221
221
  * @event sap.ui.webcomponents.main.Tree#selection-change
222
222
  * @param {Array} selectedItems An array of the selected items.
223
223
  * @param {Array} previouslySelectedItems An array of the previously selected items.
224
+ * @param {HTMLElement} targetItem The item triggering the event.
224
225
  * @public
225
226
  */
226
227
  "selection-change": {
227
228
  detail: {
228
229
  selectedItems: { type: Array },
229
230
  previouslySelectedItems: { type: Array },
231
+ targetItem: { type: HTMLElement },
230
232
  },
231
233
  },
232
234
  },
@@ -382,6 +384,7 @@ class Tree extends UI5Element {
382
384
  _onListSelectionChange(event) {
383
385
  const previouslySelectedItems = event.detail.previouslySelectedItems.map(item => item.treeItem);
384
386
  const selectedItems = event.detail.selectedItems.map(item => item.treeItem);
387
+ const targetItem = event.detail.targetItem.treeItem;
385
388
 
386
389
  previouslySelectedItems.forEach(item => {
387
390
  item.selected = false;
@@ -393,6 +396,7 @@ class Tree extends UI5Element {
393
396
  this.fireEvent("selection-change", {
394
397
  previouslySelectedItems,
395
398
  selectedItems,
399
+ targetItem,
396
400
  });
397
401
  }
398
402
 
package/src/TreeItem.js CHANGED
@@ -32,7 +32,7 @@ const metadata = {
32
32
  /**
33
33
  * Defines whether the selection of a tree node is displayed as partially selected.
34
34
  * <br><br>
35
- * <b>Note:</b> The indeterminate state can be set only programatically and can’t be achieved by user
35
+ * <b>Note:</b> The indeterminate state can be set only programmatically and can’t be achieved by user
36
36
  * interaction, meaning that the resulting visual state depends on the values of the <code>indeterminate</code>
37
37
  * and <code>selected</code> properties:
38
38
  * <ul>
@@ -102,7 +102,7 @@ const metadata = {
102
102
  /**
103
103
  * Defines the state of the <code>additionalText</code>.
104
104
  * <br>
105
- * Available options are: <code>"None"</code> (by default), <code>"Success"</code>, <code>"Warning"</code>, <code>"Information"</code> and <code>"Erorr"</code>.
105
+ * Available options are: <code>"None"</code> (by default), <code>"Success"</code>, <code>"Warning"</code>, <code>"Information"</code> and <code>"Error"</code>.
106
106
  * @type {ValueState}
107
107
  * @defaultvalue "None"
108
108
  * @public
@@ -92,7 +92,7 @@ const metadata = {
92
92
  /**
93
93
  * Defines the state of the <code>additionalText</code>.
94
94
  * <br>
95
- * Available options are: <code>"None"</code> (by default), <code>"Success"</code>, <code>"Warning"</code>, <code>"Information"</code> and <code>"Erorr"</code>.
95
+ * Available options are: <code>"None"</code> (by default), <code>"Success"</code>, <code>"Warning"</code>, <code>"Information"</code> and <code>"Error"</code>.
96
96
  * @type {ValueState}
97
97
  * @defaultvalue "None"
98
98
  * @public
@@ -19,7 +19,14 @@
19
19
  role="gridcell"
20
20
  aria-selected="{{this.ariaSelected}}"
21
21
  >
22
+ <span>
22
23
  {{this.year}}
24
+ </span>
25
+ {{#if this.yearInSecType}}
26
+ <span class="ui5-yp-item-sec-type">
27
+ {{this.yearInSecType}}
28
+ </span>
29
+ {{/if}}
23
30
  </div>
24
31
  {{/each}}
25
32
  </div>
package/src/YearPicker.js CHANGED
@@ -15,6 +15,7 @@ import {
15
15
  } from "@ui5/webcomponents-base/dist/Keys.js";
16
16
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
17
17
  import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
18
+ import transformDateToSecondaryType from "@ui5/webcomponents-localization/dist/dates/transformDateToSecondaryType.js";
18
19
  import CalendarDate from "@ui5/webcomponents-localization/dist/dates/CalendarDate.js";
19
20
  import { getMaxCalendarDate } from "@ui5/webcomponents-localization/dist/dates/ExtremeDates.js";
20
21
  import CalendarPart from "./CalendarPart.js";
@@ -65,9 +66,6 @@ const metadata = {
65
66
  },
66
67
  };
67
68
 
68
- const PAGE_SIZE = 20; // Total years on a single page
69
- const ROW_SIZE = 4; // Years per row (5 rows of 4 years each)
70
-
71
69
  /**
72
70
  * @class
73
71
  *
@@ -97,27 +95,39 @@ class YearPicker extends CalendarPart {
97
95
  this._buildYears();
98
96
  }
99
97
 
98
+ _getPageSize() {
99
+ // Total years on a single page depending on using on one or two calendar type
100
+ return this.secondaryCalendarType ? 8 : 20;
101
+ }
102
+
103
+ _getRowSize() {
104
+ // Years per row (5 rows of 4 years each) for one claendar type and (4 row of 2 years each) for two calendar type
105
+ return this.secondaryCalendarType ? 2 : 4;
106
+ }
107
+
100
108
  _buildYears() {
101
109
  if (this._hidden) {
102
110
  return;
103
111
  }
104
-
112
+ const pageSize = this._getPageSize();
105
113
  const oYearFormat = DateFormat.getDateInstance({ format: "y", calendarType: this._primaryCalendarType }, getLocale());
106
-
114
+ const oYearFormatInSecType = DateFormat.getDateInstance({ format: "y", calendarType: this.secondaryCalendarType }, getLocale());
107
115
  this._calculateFirstYear();
108
- this._lastYear = this._firstYear + PAGE_SIZE - 1;
116
+ this._lastYear = this._firstYear + pageSize - 1;
109
117
 
110
118
  const calendarDate = this._calendarDate; // store the value of the expensive getter
111
119
  const minDate = this._minDate; // store the value of the expensive getter
112
120
  const maxDate = this._maxDate; // store the value of the expensive getter
113
121
  const tempDate = new CalendarDate(calendarDate, this._primaryCalendarType);
122
+ let tempDateInSecType;
123
+ let textInSecType;
114
124
  tempDate.setYear(this._firstYear);
115
125
 
116
126
  const intervals = [];
117
127
  let timestamp;
118
128
 
119
129
  /* eslint-disable no-loop-func */
120
- for (let i = 0; i < PAGE_SIZE; i++) {
130
+ for (let i = 0; i < pageSize; i++) {
121
131
  timestamp = tempDate.valueOf() / 1000;
122
132
 
123
133
  const isSelected = this.selectedDates.some(itemTimestamp => {
@@ -127,6 +137,13 @@ class YearPicker extends CalendarPart {
127
137
  const isFocused = tempDate.getYear() === calendarDate.getYear();
128
138
  const isDisabled = tempDate.getYear() < minDate.getYear() || tempDate.getYear() > maxDate.getYear();
129
139
 
140
+ if (this.secondaryCalendarType) {
141
+ tempDateInSecType = transformDateToSecondaryType(this._primaryCalendarType, this.secondaryCalendarType, timestamp, true);
142
+ textInSecType = tempDateInSecType.firstDate.getYear() === tempDateInSecType.lastDate.getYear
143
+ ? `${oYearFormatInSecType.format(tempDateInSecType.firstDate.toLocalJSDate(), true)}`
144
+ : `${oYearFormatInSecType.format(tempDateInSecType.firstDate.toLocalJSDate(), true)} - ${oYearFormatInSecType.format(tempDateInSecType.lastDate.toLocalJSDate(), true)}`;
145
+ }
146
+
130
147
  const year = {
131
148
  timestamp: timestamp.toString(),
132
149
  _tabIndex: isFocused ? "0" : "-1",
@@ -134,6 +151,7 @@ class YearPicker extends CalendarPart {
134
151
  selected: isSelected,
135
152
  ariaSelected: isSelected ? "true" : "false",
136
153
  year: oYearFormat.format(tempDate.toLocalJSDate()),
154
+ yearInSecType: this.secondaryCalendarType && textInSecType,
137
155
  disabled: isDisabled,
138
156
  classes: "ui5-yp-item",
139
157
  };
@@ -146,7 +164,10 @@ class YearPicker extends CalendarPart {
146
164
  year.classes += " ui5-yp-item--disabled";
147
165
  }
148
166
 
149
- const intervalIndex = parseInt(i / ROW_SIZE);
167
+ if (this.secondaryCalendarType) {
168
+ year.classes += " ui5-yp-item-secondary-type";
169
+ }
170
+ const intervalIndex = parseInt(i / this._getRowSize());
150
171
 
151
172
  if (intervals[intervalIndex]) {
152
173
  intervals[intervalIndex].push(year);
@@ -161,24 +182,25 @@ class YearPicker extends CalendarPart {
161
182
  }
162
183
 
163
184
  _calculateFirstYear() {
185
+ const pageSize = this._getPageSize();
164
186
  const absoluteMaxYear = getMaxCalendarDate(this._primaryCalendarType).getYear(); // 9999
165
187
  const currentYear = this._calendarDate.getYear();
166
188
 
167
189
  // 1. If first load - center the current year (set first year to be current year minus half page size)
168
190
  if (!this._firstYear) {
169
- this._firstYear = currentYear - PAGE_SIZE / 2;
191
+ this._firstYear = currentYear - pageSize / 2;
170
192
  }
171
193
 
172
194
  // 2. If out of range - change by a page (20) - do not center in order to keep the same position as the last page
173
195
  if (currentYear < this._firstYear) {
174
- this._firstYear -= PAGE_SIZE;
175
- } else if (currentYear >= this._firstYear + PAGE_SIZE) {
176
- this._firstYear += PAGE_SIZE;
196
+ this._firstYear -= pageSize;
197
+ } else if (currentYear >= this._firstYear + pageSize) {
198
+ this._firstYear += pageSize;
177
199
  }
178
200
 
179
201
  // 3. If the date was changed by more than 20 years - reset _firstYear completely
180
- if (Math.abs(this._firstYear - currentYear) >= PAGE_SIZE) {
181
- this._firstYear = currentYear - PAGE_SIZE / 2;
202
+ if (Math.abs(this._firstYear - currentYear) >= pageSize) {
203
+ this._firstYear = currentYear - pageSize / 2;
182
204
  }
183
205
 
184
206
  // Keep it in the range between the min and max year
@@ -186,8 +208,8 @@ class YearPicker extends CalendarPart {
186
208
  this._firstYear = Math.min(this._firstYear, this._maxDate.getYear());
187
209
 
188
210
  // If first year is > 9980, make it 9980 to not show any years beyond 9999
189
- if (this._firstYear > absoluteMaxYear - PAGE_SIZE + 1) {
190
- this._firstYear = absoluteMaxYear - PAGE_SIZE + 1;
211
+ if (this._firstYear > absoluteMaxYear - pageSize + 1) {
212
+ this._firstYear = absoluteMaxYear - pageSize + 1;
191
213
  }
192
214
  }
193
215
 
@@ -199,6 +221,8 @@ class YearPicker extends CalendarPart {
199
221
 
200
222
  _onkeydown(event) {
201
223
  let preventDefault = true;
224
+ const pageSize = this._getPageSize();
225
+ const rowSize = this._getRowSize();
202
226
 
203
227
  if (isEnter(event)) {
204
228
  this._selectYear(event);
@@ -209,19 +233,19 @@ class YearPicker extends CalendarPart {
209
233
  } else if (isRight(event)) {
210
234
  this._modifyTimestampBy(1);
211
235
  } else if (isUp(event)) {
212
- this._modifyTimestampBy(-ROW_SIZE);
236
+ this._modifyTimestampBy(-rowSize);
213
237
  } else if (isDown(event)) {
214
- this._modifyTimestampBy(ROW_SIZE);
238
+ this._modifyTimestampBy(rowSize);
215
239
  } else if (isPageUp(event)) {
216
- this._modifyTimestampBy(-PAGE_SIZE);
240
+ this._modifyTimestampBy(-pageSize);
217
241
  } else if (isPageDown(event)) {
218
- this._modifyTimestampBy(PAGE_SIZE);
242
+ this._modifyTimestampBy(pageSize);
219
243
  } else if (isHome(event) || isEnd(event)) {
220
244
  this._onHomeOrEnd(isHome(event));
221
245
  } else if (isHomeCtrl(event)) {
222
246
  this._setTimestamp(parseInt(this._years[0][0].timestamp)); // first year of first row
223
247
  } else if (isEndCtrl(event)) {
224
- this._setTimestamp(parseInt(this._years[PAGE_SIZE / ROW_SIZE - 1][ROW_SIZE - 1].timestamp)); // last year of last row
248
+ this._setTimestamp(parseInt(this._years[pageSize / rowSize - 1][rowSize - 1].timestamp)); // last year of last row
225
249
  } else {
226
250
  preventDefault = false;
227
251
  }
@@ -235,7 +259,7 @@ class YearPicker extends CalendarPart {
235
259
  this._years.forEach(row => {
236
260
  const indexInRow = row.findIndex(item => CalendarDate.fromTimestamp(parseInt(item.timestamp) * 1000).getYear() === this._calendarDate.getYear());
237
261
  if (indexInRow !== -1) { // The current year is on this row
238
- const index = homePressed ? 0 : ROW_SIZE - 1; // select the first (if Home) or last (if End) year on the row
262
+ const index = homePressed ? 0 : this._getRowSize() - 1; // select the first (if Home) or last (if End) year on the row
239
263
  this._setTimestamp(parseInt(row[index].timestamp));
240
264
  }
241
265
  });
@@ -297,7 +321,7 @@ class YearPicker extends CalendarPart {
297
321
  * @protected
298
322
  */
299
323
  _hasNextPage() {
300
- return this._firstYear + PAGE_SIZE - 1 < this._maxDate.getYear();
324
+ return this._firstYear + this._getPageSize() - 1 < this._maxDate.getYear();
301
325
  }
302
326
 
303
327
  /**
@@ -306,7 +330,8 @@ class YearPicker extends CalendarPart {
306
330
  * @protected
307
331
  */
308
332
  _showPreviousPage() {
309
- this._modifyTimestampBy(-PAGE_SIZE);
333
+ const pageSize = this._getPageSize();
334
+ this._modifyTimestampBy(-pageSize);
310
335
  }
311
336
 
312
337
  /**
@@ -315,7 +340,7 @@ class YearPicker extends CalendarPart {
315
340
  * @protected
316
341
  */
317
342
  _showNextPage() {
318
- this._modifyTimestampBy(PAGE_SIZE);
343
+ this._modifyTimestampBy(this._getPageSize());
319
344
  }
320
345
  }
321
346
 
@@ -82,12 +82,16 @@ class FormSupport {
82
82
 
83
83
  if (currentElement) {
84
84
  // eslint-disable-next-line no-undef
85
- currentElement.dispatchEvent(new SubmitEvent("submit", {
85
+ const submitPrevented = !currentElement.dispatchEvent(new SubmitEvent("submit", {
86
86
  bubbles: true,
87
87
  cancelable: true,
88
88
  submitter: element,
89
89
  }));
90
90
 
91
+ if (submitPrevented) {
92
+ return;
93
+ }
94
+
91
95
  currentElement.submit();
92
96
  }
93
97
  }
@@ -259,8 +259,24 @@ class Suggestions {
259
259
  }
260
260
 
261
261
  /* Private methods */
262
- onItemPress(oEvent) {
263
- this.onItemSelected(oEvent.detail.selectedItems[0], false /* keyboardUsed */);
262
+ onItemPress(event) {
263
+ let pressedItem;
264
+ const isPressEvent = event.type === "ui5-item-click";
265
+
266
+ // Only use the press event if the item is already selected, in all other cases we are listening for 'ui5-selection-change' from the list
267
+ // Also we have to check if the selection-change is fired by the list's 'item-click' event handling, to avoid double handling on our side
268
+ if ((isPressEvent && !event.detail.item.selected) || (this._handledPress && !isPressEvent)) {
269
+ return;
270
+ }
271
+
272
+ if (isPressEvent && event.detail.item.selected) {
273
+ pressedItem = event.detail.item;
274
+ this._handledPress = true;
275
+ } else {
276
+ pressedItem = event.detail.selectedItems[0];
277
+ }
278
+
279
+ this.onItemSelected(pressedItem, false /* keyboardUsed */);
264
280
  }
265
281
 
266
282
  _beforeOpen() {
@@ -270,6 +286,8 @@ class Suggestions {
270
286
 
271
287
  async _attachItemsListeners() {
272
288
  const list = await this._getList();
289
+ list.removeEventListener("ui5-item-click", this.fnOnSuggestionItemPress);
290
+ list.addEventListener("ui5-item-click", this.fnOnSuggestionItemPress);
273
291
  list.removeEventListener("ui5-selection-change", this.fnOnSuggestionItemPress);
274
292
  list.addEventListener("ui5-selection-change", this.fnOnSuggestionItemPress);
275
293
  list.removeEventListener("ui5-item-focused", this.fnOnSuggestionItemFocus);
@@ -303,6 +321,7 @@ class Suggestions {
303
321
 
304
322
  _onClose() {
305
323
  this._getComponent().onClose();
324
+ this._handledPress = false;
306
325
  }
307
326
 
308
327
  _applyFocus() {
@@ -169,6 +169,9 @@ LIST_ITEM_SELECTED=Selected
169
169
  #XACT: ARIA announcement for the list item selected=false state
170
170
  LIST_ITEM_NOT_SELECTED=Not Selected
171
171
 
172
+ #XACT: ARIA announcement for the list item selected=false state
173
+ LIST_ITEM_GROUP_HEADER=Group Header
174
+
172
175
  #XBUT: List Multi Selection Mode Checkbox aria-label text
173
176
  ARIA_LABEL_LIST_ITEM_CHECKBOX = Multiple Selection mode.
174
177
 
@@ -295,9 +298,6 @@ TIMEPICKER_MINUTES_LABEL=Minutes
295
298
  #XFLD: Timepicker slider header
296
299
  TIMEPICKER_SECONDS_LABEL=Seconds
297
300
 
298
- #XFLD: Timepicker slider header
299
- TIMEPICKER_PERIODS_LABEL=AM/PM
300
-
301
301
  #XFLD: Timepicker popover button
302
302
  TIMEPICKER_SUBMIT_BUTTON=OK
303
303
 
@@ -340,9 +340,21 @@ TREE_ITEM_ARIA_LABEL=Tree Item
340
340
  #XTOL: tooltip for expand icon in a tree item
341
341
  TREE_ITEM_EXPAND_NODE=Expand Node
342
342
 
343
- #XTOL: tooltip for collapse icon in a tree item
343
+ #XACT: tooltip for collapse icon in a tree item
344
344
  TREE_ITEM_COLLAPSE_NODE=Collapse Node
345
345
 
346
+ #XACT: the value state type that is preppended to value state error message text
347
+ VALUE_STATE_TYPE_ERROR=Value State Error
348
+
349
+ #XACT: the value state type that is preppended to value state warning message text
350
+ VALUE_STATE_TYPE_WARNING=Value State Warning
351
+
352
+ #XACT: the value state type that is preppended to value state success message text
353
+ VALUE_STATE_TYPE_SUCCESS=Value State Success
354
+
355
+ #XACT: the value state type that is preppended to value state information message text
356
+ VALUE_STATE_TYPE_INFORMATION=Value State Information
357
+
346
358
  #XTOL: text that is appended to the tooltips of input fields etc. which are marked to have an error
347
359
  VALUE_STATE_ERROR=Invalid entry
348
360