@ui5/webcomponents 1.0.2 → 1.1.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 (471) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/dist/Breadcrumbs.js +8 -6
  3. package/dist/BreadcrumbsItem.js +1 -1
  4. package/dist/BusyIndicator.js +2 -3
  5. package/dist/Button.js +28 -1
  6. package/dist/Calendar.js +7 -0
  7. package/dist/Carousel.js +9 -0
  8. package/dist/CheckBox.js +34 -1
  9. package/dist/ColorPalette.js +5 -4
  10. package/dist/ColorPalettePopover.js +2 -0
  11. package/dist/ComboBox.js +91 -23
  12. package/dist/DateComponentBase.js +6 -8
  13. package/dist/DatePicker.js +10 -2
  14. package/dist/DateRangePicker.js +22 -0
  15. package/dist/Dialog.js +5 -22
  16. package/dist/Icon.js +10 -8
  17. package/dist/Input.js +107 -15
  18. package/dist/Link.js +32 -14
  19. package/dist/List.js +14 -4
  20. package/dist/MessageStrip.js +39 -2
  21. package/dist/MultiComboBox.js +7 -3
  22. package/dist/MultiComboBoxItem.js +1 -1
  23. package/dist/Option.js +12 -1
  24. package/dist/Panel.js +9 -0
  25. package/dist/Popover.js +106 -57
  26. package/dist/Popup.js +16 -2
  27. package/dist/RadioButton.js +15 -3
  28. package/dist/RatingIndicator.js +37 -7
  29. package/dist/ResponsivePopover.js +1 -0
  30. package/dist/SegmentedButton.js +14 -1
  31. package/dist/Select.js +2 -1
  32. package/dist/SliderBase.js +4 -0
  33. package/dist/SplitButton.js +421 -0
  34. package/dist/Switch.js +18 -0
  35. package/dist/Tab.js +10 -6
  36. package/dist/TabContainer.js +480 -108
  37. package/dist/TabSeparator.js +42 -3
  38. package/dist/Table.js +15 -5
  39. package/dist/TextArea.js +9 -3
  40. package/dist/ToggleButton.js +5 -0
  41. package/dist/Tokenizer.js +10 -3
  42. package/dist/TreeItem.js +21 -0
  43. package/dist/TreeListItem.js +8 -0
  44. package/dist/api.json +258 -26
  45. package/dist/css/themes/Badge.css +1 -1
  46. package/dist/css/themes/Breadcrumbs.css +1 -1
  47. package/dist/css/themes/BrowserScrollbar.css +1 -1
  48. package/dist/css/themes/BusyIndicator.css +1 -1
  49. package/dist/css/themes/CardHeader.css +1 -1
  50. package/dist/css/themes/CheckBox.css +1 -1
  51. package/dist/css/themes/ComboBox.css +1 -1
  52. package/dist/css/themes/CustomListItem.css +1 -1
  53. package/dist/css/themes/Dialog.css +1 -1
  54. package/dist/css/themes/Input.css +1 -1
  55. package/dist/css/themes/List.css +1 -1
  56. package/dist/css/themes/MultiComboBox.css +1 -1
  57. package/dist/css/themes/Panel.css +1 -1
  58. package/dist/css/themes/Popover.css +1 -1
  59. package/dist/css/themes/PopupsCommon.css +1 -1
  60. package/dist/css/themes/RadioButton.css +1 -1
  61. package/dist/css/themes/RatingIndicator.css +1 -1
  62. package/dist/css/themes/Select.css +1 -1
  63. package/dist/css/themes/SliderBase.css +1 -1
  64. package/dist/css/themes/SplitButton.css +1 -0
  65. package/dist/css/themes/TabContainer.css +1 -1
  66. package/dist/css/themes/TabInOverflow.css +1 -1
  67. package/dist/css/themes/TabInStrip.css +1 -1
  68. package/dist/css/themes/TabSeparatorInOverflow.css +1 -0
  69. package/dist/css/themes/TabSeparatorInStrip.css +1 -0
  70. package/dist/css/themes/Table.css +1 -1
  71. package/dist/css/themes/TableColumn.css +1 -1
  72. package/dist/css/themes/TextArea.css +1 -1
  73. package/dist/css/themes/TimeSelection.css +1 -1
  74. package/dist/css/themes/Token.css +1 -1
  75. package/dist/css/themes/ValueStateMessage.css +1 -1
  76. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  77. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  78. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  79. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  80. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  81. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  82. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  83. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  84. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  85. package/dist/features/InputSuggestions.js +88 -15
  86. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  105. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  110. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  111. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  113. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  115. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  133. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  134. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  135. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  142. package/dist/generated/i18n/i18n-defaults.js +2 -2
  143. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  144. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  145. package/dist/generated/templates/BusyIndicatorTemplate.lit.js +1 -1
  146. package/dist/generated/templates/ButtonTemplate.lit.js +1 -1
  147. package/dist/generated/templates/CardHeaderTemplate.lit.js +1 -1
  148. package/dist/generated/templates/CarouselTemplate.lit.js +1 -1
  149. package/dist/generated/templates/CheckBoxTemplate.lit.js +1 -1
  150. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +1 -1
  151. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +1 -1
  152. package/dist/generated/templates/ComboBoxTemplate.lit.js +1 -1
  153. package/dist/generated/templates/CustomListItemTemplate.lit.js +2 -2
  154. package/dist/generated/templates/DialogTemplate.lit.js +1 -1
  155. package/dist/generated/templates/InputPopoverTemplate.lit.js +3 -3
  156. package/dist/generated/templates/InputTemplate.lit.js +1 -1
  157. package/dist/generated/templates/LinkTemplate.lit.js +1 -1
  158. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  159. package/dist/generated/templates/MessageStripTemplate.lit.js +1 -1
  160. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +1 -1
  161. package/dist/generated/templates/MultiInputTemplate.lit.js +1 -1
  162. package/dist/generated/templates/PanelTemplate.lit.js +1 -1
  163. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +1 -1
  164. package/dist/generated/templates/RangeSliderTemplate.lit.js +1 -1
  165. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +1 -1
  166. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +1 -1
  167. package/dist/generated/templates/SelectPopoverTemplate.lit.js +2 -2
  168. package/dist/generated/templates/SliderBaseTemplate.lit.js +1 -1
  169. package/dist/generated/templates/SliderTemplate.lit.js +1 -1
  170. package/dist/generated/templates/SplitButtonTemplate.lit.js +7 -0
  171. package/dist/generated/templates/StandardListItemTemplate.lit.js +2 -2
  172. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +2 -2
  173. package/dist/generated/templates/SwitchTemplate.lit.js +1 -1
  174. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +4 -2
  175. package/dist/generated/templates/TabContainerTemplate.lit.js +9 -10
  176. package/dist/generated/templates/TabInOverflowTemplate.lit.js +1 -1
  177. package/dist/generated/templates/TabInStripTemplate.lit.js +1 -1
  178. package/dist/generated/templates/TabSeparatorInOverflowTemplate.lit.js +7 -0
  179. package/dist/generated/templates/TabSeparatorInStripTemplate.lit.js +7 -0
  180. package/dist/generated/templates/TableTemplate.lit.js +1 -1
  181. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +1 -1
  182. package/dist/generated/templates/ToggleButtonTemplate.lit.js +1 -1
  183. package/dist/generated/templates/TreeListItemTemplate.lit.js +2 -2
  184. package/dist/generated/templates/TreeTemplate.lit.js +1 -1
  185. package/dist/generated/themes/Badge.css.js +1 -1
  186. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  187. package/dist/generated/themes/BrowserScrollbar.css.js +1 -1
  188. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  189. package/dist/generated/themes/CardHeader.css.js +1 -1
  190. package/dist/generated/themes/CheckBox.css.js +1 -1
  191. package/dist/generated/themes/ComboBox.css.js +1 -1
  192. package/dist/generated/themes/CustomListItem.css.js +1 -1
  193. package/dist/generated/themes/Dialog.css.js +1 -1
  194. package/dist/generated/themes/Input.css.js +1 -1
  195. package/dist/generated/themes/List.css.js +1 -1
  196. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  197. package/dist/generated/themes/Panel.css.js +1 -1
  198. package/dist/generated/themes/Popover.css.js +1 -1
  199. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  200. package/dist/generated/themes/RadioButton.css.js +1 -1
  201. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  202. package/dist/generated/themes/Select.css.js +1 -1
  203. package/dist/generated/themes/SliderBase.css.js +1 -1
  204. package/dist/generated/themes/SplitButton.css.js +8 -0
  205. package/dist/generated/themes/TabContainer.css.js +1 -1
  206. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  207. package/dist/generated/themes/TabInStrip.css.js +1 -1
  208. package/dist/generated/themes/TabSeparatorInOverflow.css.js +8 -0
  209. package/dist/generated/themes/TabSeparatorInStrip.css.js +8 -0
  210. package/dist/generated/themes/Table.css.js +1 -1
  211. package/dist/generated/themes/TableColumn.css.js +1 -1
  212. package/dist/generated/themes/TextArea.css.js +1 -1
  213. package/dist/generated/themes/TimeSelection.css.js +1 -1
  214. package/dist/generated/themes/Token.css.js +1 -1
  215. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  216. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  217. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  218. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  219. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  220. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  221. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  222. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  223. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  224. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  225. package/dist/i18n/messagebundle.properties +26 -1
  226. package/dist/i18n/messagebundle_ar.properties +13 -1
  227. package/dist/i18n/messagebundle_bg.properties +13 -1
  228. package/dist/i18n/messagebundle_ca.properties +13 -1
  229. package/dist/i18n/messagebundle_cs.properties +13 -1
  230. package/dist/i18n/messagebundle_cy.properties +13 -1
  231. package/dist/i18n/messagebundle_da.properties +13 -1
  232. package/dist/i18n/messagebundle_de.properties +13 -1
  233. package/dist/i18n/messagebundle_el.properties +13 -1
  234. package/dist/i18n/messagebundle_en.properties +13 -1
  235. package/dist/i18n/messagebundle_en_GB.properties +13 -1
  236. package/dist/i18n/messagebundle_en_US_sappsd.properties +13 -1
  237. package/dist/i18n/messagebundle_en_US_saprigi.properties +13 -1
  238. package/dist/i18n/messagebundle_en_US_saptrc.properties +13 -1
  239. package/dist/i18n/messagebundle_es.properties +13 -1
  240. package/dist/i18n/messagebundle_es_MX.properties +13 -1
  241. package/dist/i18n/messagebundle_et.properties +13 -1
  242. package/dist/i18n/messagebundle_fi.properties +14 -2
  243. package/dist/i18n/messagebundle_fr.properties +13 -1
  244. package/dist/i18n/messagebundle_fr_CA.properties +13 -1
  245. package/dist/i18n/messagebundle_hi.properties +13 -1
  246. package/dist/i18n/messagebundle_hr.properties +13 -1
  247. package/dist/i18n/messagebundle_hu.properties +13 -1
  248. package/dist/i18n/messagebundle_id.properties +13 -1
  249. package/dist/i18n/messagebundle_it.properties +13 -1
  250. package/dist/i18n/messagebundle_iw.properties +13 -1
  251. package/dist/i18n/messagebundle_ja.properties +13 -1
  252. package/dist/i18n/messagebundle_kk.properties +13 -1
  253. package/dist/i18n/messagebundle_ko.properties +13 -1
  254. package/dist/i18n/messagebundle_lt.properties +13 -1
  255. package/dist/i18n/messagebundle_lv.properties +13 -1
  256. package/dist/i18n/messagebundle_ms.properties +13 -1
  257. package/dist/i18n/messagebundle_nl.properties +13 -1
  258. package/dist/i18n/messagebundle_no.properties +13 -1
  259. package/dist/i18n/messagebundle_pl.properties +13 -1
  260. package/dist/i18n/messagebundle_pt.properties +13 -1
  261. package/dist/i18n/messagebundle_pt_PT.properties +13 -1
  262. package/dist/i18n/messagebundle_ro.properties +13 -1
  263. package/dist/i18n/messagebundle_ru.properties +13 -1
  264. package/dist/i18n/messagebundle_sh.properties +13 -1
  265. package/dist/i18n/messagebundle_sk.properties +13 -1
  266. package/dist/i18n/messagebundle_sl.properties +13 -1
  267. package/dist/i18n/messagebundle_sv.properties +13 -1
  268. package/dist/i18n/messagebundle_th.properties +12 -0
  269. package/dist/i18n/messagebundle_tr.properties +13 -1
  270. package/dist/i18n/messagebundle_uk.properties +13 -1
  271. package/dist/i18n/messagebundle_vi.properties +13 -1
  272. package/dist/i18n/messagebundle_zh_CN.properties +13 -1
  273. package/dist/i18n/messagebundle_zh_TW.properties +12 -0
  274. package/dist/types/HasPopup.js +62 -0
  275. package/dist/types/TabsOverflowMode.js +40 -0
  276. package/package.json +8 -8
  277. package/src/Breadcrumbs.hbs +3 -2
  278. package/src/Breadcrumbs.js +8 -6
  279. package/src/BreadcrumbsItem.js +1 -1
  280. package/src/BreadcrumbsPopover.hbs +2 -2
  281. package/src/BusyIndicator.hbs +1 -1
  282. package/src/BusyIndicator.js +2 -3
  283. package/src/Button.hbs +1 -1
  284. package/src/Button.js +28 -1
  285. package/src/Calendar.js +7 -0
  286. package/src/CardHeader.hbs +12 -5
  287. package/src/Carousel.hbs +1 -0
  288. package/src/Carousel.js +9 -0
  289. package/src/CheckBox.hbs +1 -0
  290. package/src/CheckBox.js +34 -1
  291. package/src/ColorPalette.js +5 -4
  292. package/src/ColorPalettePopover.hbs +7 -5
  293. package/src/ColorPalettePopover.js +2 -0
  294. package/src/ComboBox.hbs +1 -0
  295. package/src/ComboBox.js +91 -23
  296. package/src/ComboBoxPopover.hbs +1 -0
  297. package/src/DateComponentBase.js +6 -8
  298. package/src/DatePicker.js +10 -2
  299. package/src/DateRangePicker.js +22 -0
  300. package/src/Dialog.hbs +1 -1
  301. package/src/Dialog.js +5 -22
  302. package/src/Icon.js +10 -8
  303. package/src/Input.hbs +1 -1
  304. package/src/Input.js +107 -15
  305. package/src/InputPopover.hbs +2 -3
  306. package/src/Link.hbs +2 -1
  307. package/src/Link.js +32 -14
  308. package/src/List.js +14 -4
  309. package/src/ListItem.hbs +1 -0
  310. package/src/MessageStrip.hbs +1 -1
  311. package/src/MessageStrip.js +39 -2
  312. package/src/MultiComboBox.js +7 -3
  313. package/src/MultiComboBoxItem.js +1 -1
  314. package/src/MultiComboBoxPopover.hbs +1 -1
  315. package/src/Option.js +12 -1
  316. package/src/Panel.hbs +1 -1
  317. package/src/Panel.js +9 -0
  318. package/src/Popover.js +106 -57
  319. package/src/Popup.js +16 -2
  320. package/src/PopupBlockLayer.hbs +1 -1
  321. package/src/RadioButton.js +15 -3
  322. package/src/RatingIndicator.js +37 -7
  323. package/src/ResponsivePopover.hbs +2 -0
  324. package/src/ResponsivePopover.js +1 -0
  325. package/src/SegmentedButton.hbs +1 -0
  326. package/src/SegmentedButton.js +14 -1
  327. package/src/Select.js +2 -1
  328. package/src/SelectPopover.hbs +2 -1
  329. package/src/SliderBase.hbs +1 -1
  330. package/src/SliderBase.js +4 -0
  331. package/src/SplitButton.hbs +53 -0
  332. package/src/SplitButton.js +421 -0
  333. package/src/Switch.hbs +1 -0
  334. package/src/Switch.js +18 -0
  335. package/src/Tab.js +10 -6
  336. package/src/TabContainer.hbs +48 -58
  337. package/src/TabContainer.js +480 -108
  338. package/src/TabContainerPopover.hbs +9 -6
  339. package/src/TabInOverflow.hbs +0 -1
  340. package/src/TabInStrip.hbs +3 -8
  341. package/src/TabSeparator.js +42 -3
  342. package/src/TabSeparatorInOverflow.hbs +8 -0
  343. package/src/TabSeparatorInStrip.hbs +6 -0
  344. package/src/Table.hbs +1 -1
  345. package/src/Table.js +15 -5
  346. package/src/TextArea.js +9 -3
  347. package/src/TextAreaPopover.hbs +1 -1
  348. package/src/ToggleButton.js +5 -0
  349. package/src/Tokenizer.js +10 -3
  350. package/src/Tree.hbs +1 -0
  351. package/src/TreeItem.js +21 -0
  352. package/src/TreeListItem.js +8 -0
  353. package/src/features/InputSuggestions.js +88 -15
  354. package/src/i18n/messagebundle.properties +26 -1
  355. package/src/i18n/messagebundle_ar.properties +13 -1
  356. package/src/i18n/messagebundle_bg.properties +13 -1
  357. package/src/i18n/messagebundle_ca.properties +13 -1
  358. package/src/i18n/messagebundle_cs.properties +13 -1
  359. package/src/i18n/messagebundle_cy.properties +13 -1
  360. package/src/i18n/messagebundle_da.properties +13 -1
  361. package/src/i18n/messagebundle_de.properties +13 -1
  362. package/src/i18n/messagebundle_el.properties +13 -1
  363. package/src/i18n/messagebundle_en.properties +13 -1
  364. package/src/i18n/messagebundle_en_GB.properties +13 -1
  365. package/src/i18n/messagebundle_en_US_sappsd.properties +13 -1
  366. package/src/i18n/messagebundle_en_US_saprigi.properties +13 -1
  367. package/src/i18n/messagebundle_en_US_saptrc.properties +13 -1
  368. package/src/i18n/messagebundle_es.properties +13 -1
  369. package/src/i18n/messagebundle_es_MX.properties +13 -1
  370. package/src/i18n/messagebundle_et.properties +13 -1
  371. package/src/i18n/messagebundle_fi.properties +14 -2
  372. package/src/i18n/messagebundle_fr.properties +13 -1
  373. package/src/i18n/messagebundle_fr_CA.properties +13 -1
  374. package/src/i18n/messagebundle_hi.properties +13 -1
  375. package/src/i18n/messagebundle_hr.properties +13 -1
  376. package/src/i18n/messagebundle_hu.properties +13 -1
  377. package/src/i18n/messagebundle_id.properties +13 -1
  378. package/src/i18n/messagebundle_it.properties +13 -1
  379. package/src/i18n/messagebundle_iw.properties +13 -1
  380. package/src/i18n/messagebundle_ja.properties +13 -1
  381. package/src/i18n/messagebundle_kk.properties +13 -1
  382. package/src/i18n/messagebundle_ko.properties +13 -1
  383. package/src/i18n/messagebundle_lt.properties +13 -1
  384. package/src/i18n/messagebundle_lv.properties +13 -1
  385. package/src/i18n/messagebundle_ms.properties +13 -1
  386. package/src/i18n/messagebundle_nl.properties +13 -1
  387. package/src/i18n/messagebundle_no.properties +13 -1
  388. package/src/i18n/messagebundle_pl.properties +13 -1
  389. package/src/i18n/messagebundle_pt.properties +13 -1
  390. package/src/i18n/messagebundle_pt_PT.properties +13 -1
  391. package/src/i18n/messagebundle_ro.properties +13 -1
  392. package/src/i18n/messagebundle_ru.properties +13 -1
  393. package/src/i18n/messagebundle_sh.properties +13 -1
  394. package/src/i18n/messagebundle_sk.properties +13 -1
  395. package/src/i18n/messagebundle_sl.properties +13 -1
  396. package/src/i18n/messagebundle_sv.properties +13 -1
  397. package/src/i18n/messagebundle_th.properties +12 -0
  398. package/src/i18n/messagebundle_tr.properties +13 -1
  399. package/src/i18n/messagebundle_uk.properties +13 -1
  400. package/src/i18n/messagebundle_vi.properties +13 -1
  401. package/src/i18n/messagebundle_zh_CN.properties +13 -1
  402. package/src/i18n/messagebundle_zh_TW.properties +12 -0
  403. package/src/themes/Badge.css +3 -1
  404. package/src/themes/Breadcrumbs.css +100 -99
  405. package/src/themes/BrowserScrollbar.css +2 -0
  406. package/src/themes/BusyIndicator.css +3 -3
  407. package/src/themes/CardHeader.css +7 -3
  408. package/src/themes/CheckBox.css +15 -7
  409. package/src/themes/CustomListItem.css +2 -1
  410. package/src/themes/Dialog.css +1 -0
  411. package/src/themes/Input.css +14 -0
  412. package/src/themes/List.css +1 -0
  413. package/src/themes/Panel.css +4 -0
  414. package/src/themes/Popover.css +4 -0
  415. package/src/themes/PopupsCommon.css +0 -1
  416. package/src/themes/RadioButton.css +4 -3
  417. package/src/themes/RatingIndicator.css +0 -1
  418. package/src/themes/SliderBase.css +3 -2
  419. package/src/themes/SplitButton.css +98 -0
  420. package/src/themes/TabContainer.css +17 -53
  421. package/src/themes/TabInOverflow.css +25 -21
  422. package/src/themes/TabInStrip.css +124 -100
  423. package/src/themes/TabSeparatorInOverflow.css +8 -0
  424. package/src/themes/TabSeparatorInStrip.css +5 -0
  425. package/src/themes/Table.css +1 -1
  426. package/src/themes/TableColumn.css +0 -1
  427. package/src/themes/TextArea.css +9 -1
  428. package/src/themes/TimeSelection.css +4 -0
  429. package/src/themes/Token.css +2 -1
  430. package/src/themes/Tokenizer.css +1 -1
  431. package/src/themes/ValueStateMessage.css +3 -3
  432. package/src/themes/base/BrowserScrollbar-parameters.css +4 -0
  433. package/src/themes/base/Card-parameters.css +1 -1
  434. package/src/themes/base/Input-parameters.css +5 -0
  435. package/src/themes/base/TabContainer-parameters.css +1 -1
  436. package/src/themes/base/TextArea-parameters.css +1 -0
  437. package/src/themes/base/Token-parameters.css +1 -0
  438. package/src/themes/base/sizes-parameters.css +2 -2
  439. package/src/themes/sap_belize/BrowserScrollbar-parameters.css +4 -0
  440. package/src/themes/sap_belize/Table-parameters.css +3 -0
  441. package/src/themes/sap_belize/parameters-bundle.css +1 -0
  442. package/src/themes/sap_belize_hcb/BrowserScrollbar-parameters.css +4 -0
  443. package/src/themes/sap_belize_hcb/Input-parameters.css +1 -0
  444. package/src/themes/sap_belize_hcb/Table-parameters.css +1 -0
  445. package/src/themes/sap_belize_hcb/Token-parameters.css +1 -0
  446. package/src/themes/sap_belize_hcb/parameters-bundle.css +1 -0
  447. package/src/themes/sap_belize_hcw/BrowserScrollbar-parameters.css +4 -0
  448. package/src/themes/sap_belize_hcw/Input-parameters.css +1 -0
  449. package/src/themes/sap_belize_hcw/Table-parameters.css +1 -0
  450. package/src/themes/sap_belize_hcw/Token-parameters.css +1 -0
  451. package/src/themes/sap_belize_hcw/parameters-bundle.css +1 -0
  452. package/src/themes/sap_fiori_3/TabContainer-parameters.css +1 -1
  453. package/src/themes/sap_fiori_3/parameters-bundle.css +1 -0
  454. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +1 -0
  455. package/src/themes/sap_fiori_3_hcb/Input-parameters.css +7 -0
  456. package/src/themes/sap_fiori_3_hcb/TextArea-parameters.css +2 -0
  457. package/src/themes/sap_fiori_3_hcb/Token-parameters.css +2 -1
  458. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -0
  459. package/src/themes/sap_fiori_3_hcw/Input-parameters.css +7 -0
  460. package/src/themes/sap_fiori_3_hcw/TextArea-parameters.css +2 -0
  461. package/src/themes/sap_fiori_3_hcw/Token-parameters.css +2 -1
  462. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -0
  463. package/src/themes/sap_horizon/Card-parameters.css +0 -1
  464. package/src/themes/sap_horizon/Table-parameters.css +1 -0
  465. package/src/themes/sap_horizon/parameters-bundle.css +1 -0
  466. package/src/themes/sap_horizon_exp/parameters-bundle.css +1 -0
  467. package/src/types/HasPopup.js +62 -0
  468. package/src/types/TabsOverflowMode.js +40 -0
  469. package/csp.js +0 -7
  470. package/dist/generated/templates/TabSeparatorTemplate.lit.js +0 -7
  471. package/src/TabSeparator.hbs +0 -1
@@ -26,7 +26,7 @@
26
26
 
27
27
  <slot></slot>
28
28
 
29
- {{#if active}}
29
+ {{#if _isBusy}}
30
30
  <span data-ui5-focus-redirect tabindex="0" @focusin="{{_redirectFocus}}"></span>
31
31
  {{/if}}
32
32
  </div>
@@ -98,7 +98,6 @@ const metadata = {
98
98
  */
99
99
  _isBusy: {
100
100
  type: Boolean,
101
- noAttribute: true,
102
101
  },
103
102
  },
104
103
  };
@@ -231,7 +230,7 @@ class BusyIndicator extends UI5Element {
231
230
  }
232
231
 
233
232
  _handleKeydown(event) {
234
- if (!this.active) {
233
+ if (!this._isBusy) {
235
234
  return;
236
235
  }
237
236
 
@@ -246,7 +245,7 @@ class BusyIndicator extends UI5Element {
246
245
  }
247
246
 
248
247
  _preventEvent(event) {
249
- if (this.active) {
248
+ if (this._isBusy) {
250
249
  event.stopImmediatePropagation();
251
250
  }
252
251
  }
package/src/Button.hbs CHANGED
@@ -18,7 +18,7 @@
18
18
  aria-expanded="{{accInfo.ariaExpanded}}"
19
19
  aria-controls="{{accInfo.ariaControls}}"
20
20
  aria-haspopup="{{accInfo.ariaHaspopup}}"
21
- aria-label="{{accessibleName}}"
21
+ aria-label="{{ariaLabelText}}"
22
22
  title="{{accInfo.title}}"
23
23
  part="button"
24
24
  >
package/src/Button.js CHANGED
@@ -1,10 +1,16 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
4
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
4
5
  import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
5
6
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
6
7
  import isLegacyBrowser from "@ui5/webcomponents-base/dist/isLegacyBrowser.js";
7
- import { isPhone, isTablet, isCombi } from "@ui5/webcomponents-base/dist/Device.js";
8
+ import {
9
+ isPhone,
10
+ isTablet,
11
+ isCombi,
12
+ isSafari,
13
+ } from "@ui5/webcomponents-base/dist/Device.js";
8
14
  import ButtonDesign from "./types/ButtonDesign.js";
9
15
  import ButtonTemplate from "./generated/templates/ButtonTemplate.lit.js";
10
16
  import Icon from "./Icon.js";
@@ -163,6 +169,19 @@ const metadata = {
163
169
  defaultValue: undefined,
164
170
  },
165
171
 
172
+ /**
173
+ * Receives id(or many ids) of the elements that label the component.
174
+ *
175
+ * @type {String}
176
+ * @defaultvalue ""
177
+ * @public
178
+ * @since 1.1.0
179
+ */
180
+ accessibleNameRef: {
181
+ type: String,
182
+ defaultValue: "",
183
+ },
184
+
166
185
  /**
167
186
  * @type {String}
168
187
  * @defaultvalue ""
@@ -343,6 +362,10 @@ class Button extends UI5Element {
343
362
  if (FormSupport) {
344
363
  FormSupport.triggerFormSubmit(this);
345
364
  }
365
+
366
+ if (isSafari()) {
367
+ this.getDomRef().focus();
368
+ }
346
369
  }
347
370
 
348
371
  _onmousedown(event) {
@@ -453,6 +476,10 @@ class Button extends UI5Element {
453
476
  return this.iconOnly && !this.title;
454
477
  }
455
478
 
479
+ get ariaLabelText() {
480
+ return getEffectiveAriaLabelText(this);
481
+ }
482
+
456
483
  static async onDefine() {
457
484
  Button.i18nBundle = await getI18nBundle("@ui5/webcomponents");
458
485
  }
package/src/Calendar.js CHANGED
@@ -29,6 +29,7 @@ import calendarCSS from "./generated/themes/Calendar.css.js";
29
29
  */
30
30
  const metadata = {
31
31
  tag: "ui5-calendar",
32
+ fastNavigation: true,
32
33
  properties: /** @lends sap.ui.webcomponents.main.Calendar.prototype */ {
33
34
  /**
34
35
  * Defines the type of selection used in the calendar component.
@@ -194,6 +195,12 @@ const metadata = {
194
195
  * </ul>
195
196
  * <br>
196
197
  *
198
+ * <h4>Fast Navigation</h4>
199
+ * This component provides a build in fast navigation group which can be used via <code>F6 / Shift + F6</code> or <code> Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up</code>.
200
+ * In order to use this functionality, you need to import the following module:
201
+ * <code>import "@ui5/webcomponents-base/dist/features/F6Navigation.js"</code>
202
+ * <br><br>
203
+ *
197
204
  * <h3>Calendar types</h3>
198
205
  * The component supports several calendar types - Gregorian, Buddhist, Islamic, Japanese and Persian.
199
206
  * By default the Gregorian Calendar is used. In order to use the Buddhist, Islamic, Japanese or Persian calendar,
@@ -27,9 +27,16 @@
27
27
  {{/if}}
28
28
  </div>
29
29
 
30
- {{#if hasAction}}
31
- <slot name="action"></slot>
32
- {{else}}
33
- <span id="{{_id}}-status" part="status" class="ui5-card-header-status" dir="auto">{{status}}</span>
34
- {{/if}}
30
+ <div class="ui5-card-header-action">
31
+ {{#if hasAction}}
32
+ <slot name="action"></slot>
33
+ {{else}}
34
+ <span
35
+ id="{{_id}}-status"
36
+ part="status"
37
+ class="ui5-card-header-status"
38
+ dir="auto"
39
+ >{{status}}</span>
40
+ {{/if}}
41
+ </div>
35
42
  </div>
package/src/Carousel.hbs CHANGED
@@ -17,6 +17,7 @@
17
17
  role="option"
18
18
  aria-posinset="{{posinset}}"
19
19
  aria-setsize="{{setsize}}"
20
+ part="item"
20
21
  >
21
22
  <slot name="{{this.item._individualSlot}}" tabindex="{{this.tabIndex}}"></slot>
22
23
  </div>
package/src/Carousel.js CHANGED
@@ -38,6 +38,7 @@ import CarouselCss from "./generated/themes/Carousel.css.js";
38
38
  const metadata = {
39
39
  tag: "ui5-carousel",
40
40
  languageAware: true,
41
+ fastNavigation: true,
41
42
  properties: /** @lends sap.ui.webcomponents.main.Carousel.prototype */ {
42
43
  /**
43
44
  * Defines whether the carousel should loop, i.e show the first page after the last page is reached and vice versa.
@@ -231,10 +232,18 @@ const metadata = {
231
232
  * </ul>
232
233
  *
233
234
  * <h3>Keyboard Handling</h3>
235
+ *
236
+ * <h4>Basic Navigation</h4>
234
237
  * When the <code>ui5-carousel</code> is focused the user can navigate between the items
235
238
  * with the following keyboard shortcuts:
236
239
  * <br>
237
240
  *
241
+ * * <h4>Fast Navigation</h4>
242
+ * This component provides a build in fast navigation group which can be used via <code>F6 / Shift + F6</code> or <code> Ctrl + Alt(Option) + Down / Ctrl + Alt(Option) + Up</code>.
243
+ * In order to use this functionality, you need to import the following module:
244
+ * <code>import "@ui5/webcomponents-base/dist/features/F6Navigation.js"</code>
245
+ * <br><br>
246
+ *
238
247
  * <ul>
239
248
  * <li>[UP/DOWN] - Navigates to previous and next item</li>
240
249
  * <li>[LEFT/RIGHT] - Navigates to previous and next item</li>
package/src/CheckBox.hbs CHANGED
@@ -4,6 +4,7 @@
4
4
  aria-checked="{{ariaChecked}}"
5
5
  aria-readonly="{{ariaReadonly}}"
6
6
  aria-disabled="{{ariaDisabled}}"
7
+ aria-label="{{ariaLabelText}}"
7
8
  aria-labelledby="{{ariaLabelledBy}}"
8
9
  aria-describedby="{{ariaDescribedBy}}"
9
10
  tabindex="{{tabIndex}}"
package/src/CheckBox.js CHANGED
@@ -4,6 +4,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
4
4
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
5
5
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
6
6
  import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
7
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
7
8
  import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
8
9
  import "@ui5/webcomponents-icons/dist/accept.js";
9
10
  import Icon from "./Icon.js";
@@ -32,6 +33,30 @@ const metadata = {
32
33
  languageAware: true,
33
34
  properties: /** @lends sap.ui.webcomponents.main.CheckBox.prototype */ {
34
35
 
36
+ /**
37
+ * Receives id(or many ids) of the elements that label the component
38
+ * @type {String}
39
+ * @defaultvalue ""
40
+ * @public
41
+ * @since 1.1.0
42
+ */
43
+ accessibleNameRef: {
44
+ type: String,
45
+ defaultValue: "",
46
+ },
47
+
48
+ /**
49
+ * Sets the accessible aria name of the component.
50
+ *
51
+ * @type {String}
52
+ * @public
53
+ * @defaultvalue ""
54
+ * @since 1.1.0
55
+ */
56
+ accessibleName: {
57
+ type: String,
58
+ },
59
+
35
60
  /**
36
61
  * Defines whether the component is disabled.
37
62
  * <br><br>
@@ -362,6 +387,10 @@ class CheckBox extends UI5Element {
362
387
  };
363
388
  }
364
389
 
390
+ get ariaLabelText() {
391
+ return getEffectiveAriaLabelText(this);
392
+ }
393
+
365
394
  get classes() {
366
395
  return {
367
396
  main: {
@@ -383,7 +412,11 @@ class CheckBox extends UI5Element {
383
412
  }
384
413
 
385
414
  get ariaLabelledBy() {
386
- return this.text ? `${this._id}-label` : undefined;
415
+ if (!this.ariaLabelText) {
416
+ return this.text ? `${this._id}-label` : undefined;
417
+ }
418
+
419
+ return undefined;
387
420
  }
388
421
 
389
422
  get ariaDescribedBy() {
@@ -16,6 +16,7 @@ import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
16
16
  import ColorPaletteTemplate from "./generated/templates/ColorPaletteTemplate.lit.js";
17
17
  import ColorPaletteDialogTemplate from "./generated/templates/ColorPaletteDialogTemplate.lit.js";
18
18
  import ColorPaletteItem from "./ColorPaletteItem.js";
19
+ import Button from "./Button.js";
19
20
  import {
20
21
  COLORPALETTE_CONTAINER_LABEL,
21
22
  COLOR_PALETTE_MORE_COLORS_TEXT,
@@ -178,7 +179,7 @@ class ColorPalette extends UI5Element {
178
179
 
179
180
  static get dependencies() {
180
181
  const ColorPaletteMoreColors = getFeature("ColorPaletteMoreColors");
181
- return [ColorPaletteItem].concat(ColorPaletteMoreColors ? ColorPaletteMoreColors.dependencies : []);
182
+ return [ColorPaletteItem, Button].concat(ColorPaletteMoreColors ? ColorPaletteMoreColors.dependencies : []);
182
183
  }
183
184
 
184
185
  static async onDefine() {
@@ -252,20 +253,20 @@ class ColorPalette extends UI5Element {
252
253
  }
253
254
 
254
255
  _onclick(event) {
255
- if (event.target.localName === "ui5-color-palette-item") {
256
+ if (event.target.hasAttribute("ui5-color-palette-item")) {
256
257
  this.selectColor(event.target);
257
258
  }
258
259
  }
259
260
 
260
261
  _onkeyup(event) {
261
- if (isSpace(event) && event.target.localName === "ui5-color-palette-item") {
262
+ if (isSpace(event) && event.target.hasAttribute("ui5-color-palette-item")) {
262
263
  event.preventDefault();
263
264
  this.selectColor(event.target);
264
265
  }
265
266
  }
266
267
 
267
268
  _onkeydown(event) {
268
- if (isEnter(event) && event.target.localName === "ui5-color-palette-item") {
269
+ if (isEnter(event) && event.target.hasAttribute("ui5-color-palette-item")) {
269
270
  this.selectColor(event.target);
270
271
  }
271
272
  }
@@ -2,19 +2,21 @@
2
2
  hide-arrow
3
3
  content-only-on-desktop
4
4
  placement-type="Bottom"
5
- >
5
+ >
6
6
  <div slot="header" class="ui5-cp-header">
7
7
  <ui5-title
8
- class="ui5-cp-title">{{_colorPaletteTitle}}</ui5-title>
8
+ class="ui5-cp-title"
9
+ >{{_colorPaletteTitle}}</ui5-title>
9
10
  </div>
10
11
  <div>
11
- <ui5-color-palette
12
+ <ui5-color-palette
12
13
  ?show-more-colors="{{this.showMoreColors}}"
13
14
  ?show-recent-colors="{{this.showRecentColors}}"
14
15
  ?show-default-color="{{this.defaultColor}}"
15
16
  default-color="{{this.defaultColor}}"
16
17
  popup-mode
17
- @item-click="{{onSelectedColor}}">
18
+ @ui5-item-click="{{onSelectedColor}}"
19
+ >
18
20
  {{#each colorPaletteColors}}
19
21
  <slot name="{{this._individualSlot}}"></slot>
20
22
  {{/each}}
@@ -26,4 +28,4 @@
26
28
  @click="{{closePopover}}"
27
29
  >{{_cancelButtonLabel}}</ui5-button>
28
30
  </div>
29
- </ui5-responsive-popover>
31
+ </ui5-responsive-popover>
@@ -13,6 +13,7 @@ import {
13
13
  } from "./generated/i18n/i18n-defaults.js";
14
14
 
15
15
  import Button from "./Button.js";
16
+ import Title from "./Title.js";
16
17
  import ResponsivePopover from "./ResponsivePopover.js";
17
18
  import ColorPalette from "./ColorPalette.js";
18
19
 
@@ -145,6 +146,7 @@ class ColorPalettePopover extends UI5Element {
145
146
  return [
146
147
  ResponsivePopover,
147
148
  Button,
149
+ Title,
148
150
  ColorPalette,
149
151
  ];
150
152
  }
package/src/ComboBox.hbs CHANGED
@@ -14,6 +14,7 @@
14
14
  @change="{{_inputChange}}"
15
15
  @click={{_click}}
16
16
  @keydown="{{_keydown}}"
17
+ @keyup="{{_keyup}}"
17
18
  @focusin="{{_focusin}}"
18
19
  @focusout="{{_focusout}}"
19
20
  aria-expanded="{{open}}"
package/src/ComboBox.js CHANGED
@@ -19,6 +19,10 @@ import {
19
19
  isEscape,
20
20
  isTabNext,
21
21
  isTabPrevious,
22
+ isPageUp,
23
+ isPageDown,
24
+ isHome,
25
+ isEnd,
22
26
  } from "@ui5/webcomponents-base/dist/Keys.js";
23
27
  import * as Filters from "./ComboBoxFilters.js";
24
28
 
@@ -215,7 +219,7 @@ const metadata = {
215
219
  },
216
220
 
217
221
  /**
218
- * Receives id(or many ids) of the elements that label the combo box
222
+ * Receives id(or many ids) of the elements that label the component
219
223
  * @type {String}
220
224
  * @defaultvalue ""
221
225
  * @public
@@ -326,6 +330,7 @@ const metadata = {
326
330
  * The <code>ui5-combobox</code> component represents a drop-down menu with a list of the available options and a text input field to narrow down the options.
327
331
  *
328
332
  * It is commonly used to enable users to select an option from a predefined list.
333
+ *
329
334
  * <h3>Structure</h3>
330
335
  * The <code>ui5-combobox</code> consists of the following elements:
331
336
  * <ul>
@@ -333,15 +338,24 @@ const metadata = {
333
338
  * <li> Drop-down arrow - expands\collapses the option list.</li>
334
339
  * <li> Option list - the list of available options.</li>
335
340
  * </ul>
341
+ *
336
342
  * <h3>Keyboard Handling</h3>
337
343
  *
338
344
  * The <code>ui5-combobox</code> provides advanced keyboard handling.
339
- *
340
- * <h4>Picker</h4>
341
- * If the <code>ui5-combobox</code> is focused,
342
- * you can open or close the drop-down by pressing <code>F4</code>, <code>ALT+UP</code> or <code>ALT+DOWN</code> keys.
343
345
  * <br>
344
346
  *
347
+ * <ul>
348
+ * <li>[F4], [ALT]+[UP], or [ALT]+[DOWN] - Toggles the picker.</li>
349
+ * <li>[ESC] - Closes the picker, if open. If closed, cancels changes and reverts the typed in value.</li>
350
+ * <li>[ENTER] or [RETURN] - If picker is open, takes over the currently selected item and closes it.</li>
351
+ * <li>[DOWN] - Selects the next matching item in the picker.</li>
352
+ * <li>[UP] - Selects the previous matching item in the picker.</li>
353
+ * <li>[PAGEDOWN] - Moves selection down by page size (10 items by default).</li>
354
+ * <li>[PAGEUP] - Moves selection up by page size (10 items by default). </li>
355
+ * <li>[HOME] - If focus is in the ComboBox, moves cursor at the beginning of text. If focus is in the picker, selects the first item.</li>
356
+ * <li>[END] - If focus is in the ComboBox, moves cursor at the end of text. If focus is in the picker, selects the last item.</li>
357
+ * </ul>
358
+ *
345
359
  *
346
360
  * <h3>ES6 Module Import</h3>
347
361
  *
@@ -517,6 +531,8 @@ class ComboBox extends UI5Element {
517
531
  }
518
532
 
519
533
  _resetFilter() {
534
+ this._userTypedValue = null;
535
+ this.inner.setSelectionRange(0, this.value.length);
520
536
  this._filteredItems = this._filterItems("");
521
537
  this._selectMatchingItem();
522
538
  }
@@ -588,14 +604,12 @@ class ComboBox extends UI5Element {
588
604
  });
589
605
  }
590
606
 
591
- async handleArrowKeyPress(event) {
592
- if (this.readonly || !this._filteredItems.length) {
607
+ handleNavKeyPress(event) {
608
+ if (this.focused && (isHome(event) || isEnd(event)) && this.value) {
593
609
  return;
594
610
  }
595
611
 
596
612
  const isOpen = this.open;
597
- const isArrowDown = isDown(event);
598
- const isArrowUp = isUp(event);
599
613
  const currentItem = this._filteredItems.find(item => {
600
614
  return isOpen ? item.focused : item.selected;
601
615
  });
@@ -603,19 +617,17 @@ class ComboBox extends UI5Element {
603
617
 
604
618
  event.preventDefault();
605
619
 
606
- if ((this.focused === true && isArrowUp && isOpen) || (this._filteredItems.length - 1 === indexOfItem && isArrowDown)) {
620
+ if (this.focused && isOpen && (isUp(event) || isPageUp(event) || isPageDown(event))) {
607
621
  return;
608
622
  }
609
623
 
610
- this._isKeyNavigation = true;
611
-
612
- if (isArrowDown) {
613
- this._handleArrowDown(event, indexOfItem);
624
+ if (this._filteredItems.length - 1 === indexOfItem && isDown(event)) {
625
+ return;
614
626
  }
615
627
 
616
- if (isArrowUp) {
617
- this._handleArrowUp(event, indexOfItem);
618
- }
628
+ this._isKeyNavigation = true;
629
+
630
+ this[`_handle${event.key}`](event, indexOfItem);
619
631
  }
620
632
 
621
633
  _handleItemNavigation(event, indexOfItem, isForward) {
@@ -632,7 +644,7 @@ class ComboBox extends UI5Element {
632
644
 
633
645
  if (isOpen) {
634
646
  this._itemFocused = true;
635
- this.value = isGroupItem ? this.filterValue : currentItem.text;
647
+ this.value = isGroupItem ? "" : currentItem.text;
636
648
  this.focused = false;
637
649
  currentItem.focused = true;
638
650
  } else {
@@ -652,7 +664,7 @@ class ComboBox extends UI5Element {
652
664
 
653
665
  // autocomplete
654
666
  const item = this._getFirstMatchingItem(this.value);
655
- this._applyAtomicValueAndSelection(item, "", true);
667
+ this._applyAtomicValueAndSelection(item, (this.open ? this._userTypedValue : null), true);
656
668
 
657
669
  if ((item && !item.selected)) {
658
670
  this.fireEvent("selection-change", {
@@ -706,13 +718,59 @@ class ComboBox extends UI5Element {
706
718
  this._handleItemNavigation(event, --indexOfItem, false /* isForward */);
707
719
  }
708
720
 
721
+ _handlePageUp(event, indexOfItem) {
722
+ const isProposedIndexValid = indexOfItem - ComboBox.SKIP_ITEMS_SIZE > -1;
723
+ indexOfItem = isProposedIndexValid ? indexOfItem - ComboBox.SKIP_ITEMS_SIZE : 0;
724
+ const shouldMoveForward = this._filteredItems[indexOfItem].isGroupItem && !this.open;
725
+
726
+ if (!isProposedIndexValid && this.hasValueStateText && this.open) {
727
+ this._clearFocus();
728
+ this._itemFocused = false;
729
+ this._isValueStateFocused = true;
730
+ return;
731
+ }
732
+
733
+ this._handleItemNavigation(event, indexOfItem, shouldMoveForward);
734
+ }
735
+
736
+ _handlePageDown(event, indexOfItem) {
737
+ const itemsLength = this._filteredItems.length;
738
+ const isProposedIndexValid = indexOfItem + ComboBox.SKIP_ITEMS_SIZE < itemsLength;
739
+
740
+ indexOfItem = isProposedIndexValid ? indexOfItem + ComboBox.SKIP_ITEMS_SIZE : itemsLength - 1;
741
+ const shouldMoveForward = this._filteredItems[indexOfItem].isGroupItem && !this.open;
742
+
743
+ this._handleItemNavigation(event, indexOfItem, shouldMoveForward);
744
+ }
745
+
746
+ _handleHome(event, indexOfItem) {
747
+ const shouldMoveForward = this._filteredItems[0].isGroupItem && !this.open;
748
+
749
+ if (this.hasValueStateText && this.open) {
750
+ this._clearFocus();
751
+ this._itemFocused = false;
752
+ this._isValueStateFocused = true;
753
+ return;
754
+ }
755
+
756
+ this._handleItemNavigation(event, indexOfItem = 0, shouldMoveForward);
757
+ }
758
+
759
+ _handleEnd(event, indexOfItem) {
760
+ this._handleItemNavigation(event, indexOfItem = this._filteredItems.length - 1, true /* isForward */);
761
+ }
762
+
763
+ _keyup(event) {
764
+ this._userTypedValue = this.value.substring(0, this.inner.selectionStart);
765
+ }
766
+
709
767
  _keydown(event) {
710
- const isArrowKey = isDown(event) || isUp(event);
768
+ const isNavKey = isDown(event) || isUp(event) || isPageUp(event) || isPageDown(event) || isHome(event) || isEnd(event);
711
769
  this._autocomplete = !(isBackSpace(event) || isDelete(event));
712
770
  this._isKeyNavigation = false;
713
771
 
714
- if (isArrowKey) {
715
- this.handleArrowKeyPress(event);
772
+ if (isNavKey && !this.readonly && this._filteredItems.length) {
773
+ this.handleNavKeyPress(event);
716
774
  }
717
775
 
718
776
  if (isEnter(event)) {
@@ -745,6 +803,9 @@ class ComboBox extends UI5Element {
745
803
  this._itemFocused = true;
746
804
  selectedItem.focused = true;
747
805
  this.focused = false;
806
+ } else if (this.open && this._filteredItems.length) {
807
+ // If no item is selected, select the first one on "Show" (F4, Alt+Up/Down)
808
+ this._handleItemNavigation(event, 0, true /* isForward */);
748
809
  } else {
749
810
  this.focused = true;
750
811
  }
@@ -822,6 +883,7 @@ class ComboBox extends UI5Element {
822
883
  const value = (item && item.text) || "";
823
884
  this.inner.value = value;
824
885
  if (highlightValue) {
886
+ filterValue = filterValue || "";
825
887
  this.inner.setSelectionRange(filterValue.length, value.length);
826
888
  }
827
889
  this.value = value;
@@ -950,7 +1012,7 @@ class ComboBox extends UI5Element {
950
1012
  }
951
1013
 
952
1014
  get shouldOpenValueStateMessagePopover() {
953
- return this.focused && this.hasValueStateText && !this._iconPressed
1015
+ return this.focused && !this.readonly && this.hasValueStateText && !this._iconPressed
954
1016
  && !this.open && !this._isPhone;
955
1017
  }
956
1018
 
@@ -958,6 +1020,10 @@ class ComboBox extends UI5Element {
958
1020
  return !this.valueStateMessage.length && this.hasValueStateText;
959
1021
  }
960
1022
 
1023
+ get _valueStatePopoverHorizontalAlign() {
1024
+ return this.effectiveDir !== "rtl" ? "Left" : "Right";
1025
+ }
1026
+
961
1027
  /**
962
1028
  * This method is relevant for sap_horizon theme only
963
1029
  */
@@ -1036,6 +1102,8 @@ class ComboBox extends UI5Element {
1036
1102
  }
1037
1103
  }
1038
1104
 
1105
+ ComboBox.SKIP_ITEMS_SIZE = 10;
1106
+
1039
1107
  ComboBox.define();
1040
1108
 
1041
1109
  export default ComboBox;
@@ -105,6 +105,7 @@
105
105
  no-padding
106
106
  hide-arrow
107
107
  class="ui5-valuestatemessage-popover"
108
+ horizontal-align="{{_valueStatePopoverHorizontalAlign}}"
108
109
  placement-type="Bottom"
109
110
  >
110
111
  <div slot="header" class="{{classes.popoverValueState}}" style="{{styles.popoverHeader}}">
@@ -144,19 +144,17 @@ class DateComponentBase extends UI5Element {
144
144
  }
145
145
 
146
146
  getFormat() {
147
- let dateFormat;
148
- if (this._isPattern) {
149
- dateFormat = DateFormat.getInstance({
147
+ return this._isPattern
148
+ ? DateFormat.getInstance({
149
+ strictParsing: true,
150
150
  pattern: this._formatPattern,
151
151
  calendarType: this._primaryCalendarType,
152
- });
153
- } else {
154
- dateFormat = DateFormat.getInstance({
152
+ })
153
+ : DateFormat.getInstance({
154
+ strictParsing: true,
155
155
  style: this._formatPattern,
156
156
  calendarType: this._primaryCalendarType,
157
157
  });
158
- }
159
- return dateFormat;
160
158
  }
161
159
 
162
160
  static async onDefine() {
package/src/DatePicker.js CHANGED
@@ -14,6 +14,7 @@ import {
14
14
  isPageDownShiftCtrl,
15
15
  isShow,
16
16
  isF4,
17
+ isEnter,
17
18
  } from "@ui5/webcomponents-base/dist/Keys.js";
18
19
  import { isPhone, isIE } from "@ui5/webcomponents-base/dist/Device.js";
19
20
  import "@ui5/webcomponents-icons/dist/appointment-2.js";
@@ -319,8 +320,8 @@ const metadata = {
319
320
  * use TAB to reach the buttons for changing month and year.
320
321
  * <br>
321
322
  *
322
- * If the <code>ui5-date-picker</code> is focused and the picker dialog is not opened the user can
323
- * increment or decrement the corresponding field of the JS date object referenced by <code>dateValue</code> propery
323
+ * If the <code>ui5-date-picker</code> input field is focused and its corresponding picker dialog is not opened,
324
+ * then users can increment or decrement the date referenced by <code>dateValue</code> property
324
325
  * by using the following shortcuts:
325
326
  * <br>
326
327
  * <ul>
@@ -469,6 +470,10 @@ class DatePicker extends DateComponentBase {
469
470
  return;
470
471
  }
471
472
 
473
+ if (isEnter(event)) {
474
+ this._updateValueAndFireEvents(event.target.value, true, ["change", "value-changed"]);
475
+ }
476
+
472
477
  if (isPageUpShiftCtrl(event)) {
473
478
  event.preventDefault();
474
479
  this._modifyDateValue(1, "year");
@@ -527,6 +532,9 @@ class DatePicker extends DateComponentBase {
527
532
  }
528
533
 
529
534
  if (updateValue) {
535
+ this._getInput().getInputDOMRef().then(innnerInput => {
536
+ innnerInput.value = value;
537
+ });
530
538
  this.value = value;
531
539
  this._updateValueState(); // Change the value state to Error/None, but only if needed
532
540
  }