@ui5/webcomponents 1.0.1 → 1.1.2

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 (474) hide show
  1. package/CHANGELOG.md +118 -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 +27 -2
  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 +11 -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/MultiInput.js +55 -8
  24. package/dist/Option.js +12 -1
  25. package/dist/Panel.js +9 -0
  26. package/dist/Popover.js +106 -57
  27. package/dist/Popup.js +16 -2
  28. package/dist/RadioButton.js +15 -3
  29. package/dist/RatingIndicator.js +37 -7
  30. package/dist/ResponsivePopover.js +1 -0
  31. package/dist/SegmentedButton.js +14 -1
  32. package/dist/Select.js +2 -1
  33. package/dist/SliderBase.js +4 -0
  34. package/dist/SplitButton.js +425 -0
  35. package/dist/Switch.js +18 -0
  36. package/dist/Tab.js +10 -6
  37. package/dist/TabContainer.js +480 -108
  38. package/dist/TabSeparator.js +42 -3
  39. package/dist/Table.js +15 -5
  40. package/dist/TextArea.js +9 -3
  41. package/dist/ToggleButton.js +5 -0
  42. package/dist/Tokenizer.js +134 -7
  43. package/dist/TreeItem.js +21 -0
  44. package/dist/TreeListItem.js +8 -0
  45. package/dist/api.json +299 -26
  46. package/dist/css/themes/Badge.css +1 -1
  47. package/dist/css/themes/Breadcrumbs.css +1 -1
  48. package/dist/css/themes/BrowserScrollbar.css +1 -1
  49. package/dist/css/themes/BusyIndicator.css +1 -1
  50. package/dist/css/themes/CardHeader.css +1 -1
  51. package/dist/css/themes/CheckBox.css +1 -1
  52. package/dist/css/themes/ComboBox.css +1 -1
  53. package/dist/css/themes/CustomListItem.css +1 -1
  54. package/dist/css/themes/Dialog.css +1 -1
  55. package/dist/css/themes/Input.css +1 -1
  56. package/dist/css/themes/List.css +1 -1
  57. package/dist/css/themes/MultiComboBox.css +1 -1
  58. package/dist/css/themes/Panel.css +1 -1
  59. package/dist/css/themes/Popover.css +1 -1
  60. package/dist/css/themes/PopupsCommon.css +1 -1
  61. package/dist/css/themes/RadioButton.css +1 -1
  62. package/dist/css/themes/RatingIndicator.css +1 -1
  63. package/dist/css/themes/Select.css +1 -1
  64. package/dist/css/themes/SliderBase.css +1 -1
  65. package/dist/css/themes/SplitButton.css +1 -0
  66. package/dist/css/themes/TabContainer.css +1 -1
  67. package/dist/css/themes/TabInOverflow.css +1 -1
  68. package/dist/css/themes/TabInStrip.css +1 -1
  69. package/dist/css/themes/TabSeparatorInOverflow.css +1 -0
  70. package/dist/css/themes/TabSeparatorInStrip.css +1 -0
  71. package/dist/css/themes/Table.css +1 -1
  72. package/dist/css/themes/TableColumn.css +1 -1
  73. package/dist/css/themes/TextArea.css +1 -1
  74. package/dist/css/themes/TimeSelection.css +1 -1
  75. package/dist/css/themes/Token.css +1 -1
  76. package/dist/css/themes/ValueStateMessage.css +1 -1
  77. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  78. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  79. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  80. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  81. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  82. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  83. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  84. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  85. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  86. package/dist/features/InputSuggestions.js +88 -15
  87. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  105. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  110. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  111. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  113. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  115. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  134. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  135. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  142. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  143. package/dist/generated/i18n/i18n-defaults.js +2 -2
  144. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  145. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  146. package/dist/generated/templates/BusyIndicatorTemplate.lit.js +1 -1
  147. package/dist/generated/templates/ButtonTemplate.lit.js +1 -1
  148. package/dist/generated/templates/CardHeaderTemplate.lit.js +1 -1
  149. package/dist/generated/templates/CarouselTemplate.lit.js +1 -1
  150. package/dist/generated/templates/CheckBoxTemplate.lit.js +1 -1
  151. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +1 -1
  152. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +1 -1
  153. package/dist/generated/templates/ComboBoxTemplate.lit.js +1 -1
  154. package/dist/generated/templates/CustomListItemTemplate.lit.js +2 -2
  155. package/dist/generated/templates/DialogTemplate.lit.js +1 -1
  156. package/dist/generated/templates/InputPopoverTemplate.lit.js +3 -3
  157. package/dist/generated/templates/InputTemplate.lit.js +1 -1
  158. package/dist/generated/templates/LinkTemplate.lit.js +1 -1
  159. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  160. package/dist/generated/templates/MessageStripTemplate.lit.js +1 -1
  161. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +1 -1
  162. package/dist/generated/templates/MultiInputTemplate.lit.js +1 -1
  163. package/dist/generated/templates/PanelTemplate.lit.js +1 -1
  164. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +1 -1
  165. package/dist/generated/templates/RangeSliderTemplate.lit.js +1 -1
  166. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +1 -1
  167. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +1 -1
  168. package/dist/generated/templates/SelectPopoverTemplate.lit.js +2 -2
  169. package/dist/generated/templates/SliderBaseTemplate.lit.js +1 -1
  170. package/dist/generated/templates/SliderTemplate.lit.js +1 -1
  171. package/dist/generated/templates/SplitButtonTemplate.lit.js +7 -0
  172. package/dist/generated/templates/StandardListItemTemplate.lit.js +2 -2
  173. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +2 -2
  174. package/dist/generated/templates/SwitchTemplate.lit.js +1 -1
  175. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +4 -2
  176. package/dist/generated/templates/TabContainerTemplate.lit.js +9 -10
  177. package/dist/generated/templates/TabInOverflowTemplate.lit.js +1 -1
  178. package/dist/generated/templates/TabInStripTemplate.lit.js +1 -1
  179. package/dist/generated/templates/TabSeparatorInOverflowTemplate.lit.js +7 -0
  180. package/dist/generated/templates/TabSeparatorInStripTemplate.lit.js +7 -0
  181. package/dist/generated/templates/TableTemplate.lit.js +1 -1
  182. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +1 -1
  183. package/dist/generated/templates/ToggleButtonTemplate.lit.js +1 -1
  184. package/dist/generated/templates/TreeListItemTemplate.lit.js +2 -2
  185. package/dist/generated/templates/TreeTemplate.lit.js +1 -1
  186. package/dist/generated/themes/Badge.css.js +1 -1
  187. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  188. package/dist/generated/themes/BrowserScrollbar.css.js +1 -1
  189. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  190. package/dist/generated/themes/CardHeader.css.js +1 -1
  191. package/dist/generated/themes/CheckBox.css.js +1 -1
  192. package/dist/generated/themes/ComboBox.css.js +1 -1
  193. package/dist/generated/themes/CustomListItem.css.js +1 -1
  194. package/dist/generated/themes/Dialog.css.js +1 -1
  195. package/dist/generated/themes/Input.css.js +1 -1
  196. package/dist/generated/themes/List.css.js +1 -1
  197. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  198. package/dist/generated/themes/Panel.css.js +1 -1
  199. package/dist/generated/themes/Popover.css.js +1 -1
  200. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  201. package/dist/generated/themes/RadioButton.css.js +1 -1
  202. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  203. package/dist/generated/themes/Select.css.js +1 -1
  204. package/dist/generated/themes/SliderBase.css.js +1 -1
  205. package/dist/generated/themes/SplitButton.css.js +8 -0
  206. package/dist/generated/themes/TabContainer.css.js +1 -1
  207. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  208. package/dist/generated/themes/TabInStrip.css.js +1 -1
  209. package/dist/generated/themes/TabSeparatorInOverflow.css.js +8 -0
  210. package/dist/generated/themes/TabSeparatorInStrip.css.js +8 -0
  211. package/dist/generated/themes/Table.css.js +1 -1
  212. package/dist/generated/themes/TableColumn.css.js +1 -1
  213. package/dist/generated/themes/TextArea.css.js +1 -1
  214. package/dist/generated/themes/TimeSelection.css.js +1 -1
  215. package/dist/generated/themes/Token.css.js +1 -1
  216. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  217. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  218. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  219. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  220. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  221. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  222. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  223. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  224. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  225. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  226. package/dist/i18n/messagebundle.properties +26 -1
  227. package/dist/i18n/messagebundle_ar.properties +13 -1
  228. package/dist/i18n/messagebundle_bg.properties +13 -1
  229. package/dist/i18n/messagebundle_ca.properties +13 -1
  230. package/dist/i18n/messagebundle_cs.properties +13 -1
  231. package/dist/i18n/messagebundle_cy.properties +13 -1
  232. package/dist/i18n/messagebundle_da.properties +13 -1
  233. package/dist/i18n/messagebundle_de.properties +13 -1
  234. package/dist/i18n/messagebundle_el.properties +13 -1
  235. package/dist/i18n/messagebundle_en.properties +13 -1
  236. package/dist/i18n/messagebundle_en_GB.properties +13 -1
  237. package/dist/i18n/messagebundle_en_US_sappsd.properties +18 -1
  238. package/dist/i18n/messagebundle_en_US_saprigi.properties +18 -1
  239. package/dist/i18n/messagebundle_en_US_saptrc.properties +18 -1
  240. package/dist/i18n/messagebundle_es.properties +13 -1
  241. package/dist/i18n/messagebundle_es_MX.properties +13 -1
  242. package/dist/i18n/messagebundle_et.properties +13 -1
  243. package/dist/i18n/messagebundle_fi.properties +14 -2
  244. package/dist/i18n/messagebundle_fr.properties +13 -1
  245. package/dist/i18n/messagebundle_fr_CA.properties +13 -1
  246. package/dist/i18n/messagebundle_hi.properties +13 -1
  247. package/dist/i18n/messagebundle_hr.properties +13 -1
  248. package/dist/i18n/messagebundle_hu.properties +13 -1
  249. package/dist/i18n/messagebundle_id.properties +13 -1
  250. package/dist/i18n/messagebundle_it.properties +13 -1
  251. package/dist/i18n/messagebundle_iw.properties +13 -1
  252. package/dist/i18n/messagebundle_ja.properties +13 -1
  253. package/dist/i18n/messagebundle_kk.properties +13 -1
  254. package/dist/i18n/messagebundle_ko.properties +13 -1
  255. package/dist/i18n/messagebundle_lt.properties +13 -1
  256. package/dist/i18n/messagebundle_lv.properties +13 -1
  257. package/dist/i18n/messagebundle_ms.properties +13 -1
  258. package/dist/i18n/messagebundle_nl.properties +13 -1
  259. package/dist/i18n/messagebundle_no.properties +13 -1
  260. package/dist/i18n/messagebundle_pl.properties +13 -1
  261. package/dist/i18n/messagebundle_pt.properties +13 -1
  262. package/dist/i18n/messagebundle_pt_PT.properties +13 -1
  263. package/dist/i18n/messagebundle_ro.properties +13 -1
  264. package/dist/i18n/messagebundle_ru.properties +13 -1
  265. package/dist/i18n/messagebundle_sh.properties +13 -1
  266. package/dist/i18n/messagebundle_sk.properties +13 -1
  267. package/dist/i18n/messagebundle_sl.properties +13 -1
  268. package/dist/i18n/messagebundle_sv.properties +13 -1
  269. package/dist/i18n/messagebundle_th.properties +12 -0
  270. package/dist/i18n/messagebundle_tr.properties +13 -1
  271. package/dist/i18n/messagebundle_uk.properties +13 -1
  272. package/dist/i18n/messagebundle_vi.properties +13 -1
  273. package/dist/i18n/messagebundle_zh_CN.properties +13 -1
  274. package/dist/i18n/messagebundle_zh_TW.properties +12 -0
  275. package/dist/types/HasPopup.js +62 -0
  276. package/dist/types/TabsOverflowMode.js +40 -0
  277. package/package.json +9 -9
  278. package/src/Breadcrumbs.hbs +3 -2
  279. package/src/Breadcrumbs.js +8 -6
  280. package/src/BreadcrumbsItem.js +1 -1
  281. package/src/BreadcrumbsPopover.hbs +2 -2
  282. package/src/BusyIndicator.hbs +1 -1
  283. package/src/BusyIndicator.js +2 -3
  284. package/src/Button.hbs +1 -1
  285. package/src/Button.js +28 -1
  286. package/src/Calendar.js +7 -0
  287. package/src/CardHeader.hbs +12 -5
  288. package/src/Carousel.hbs +1 -0
  289. package/src/Carousel.js +9 -0
  290. package/src/CheckBox.hbs +1 -0
  291. package/src/CheckBox.js +34 -1
  292. package/src/ColorPalette.js +5 -4
  293. package/src/ColorPalettePopover.hbs +7 -5
  294. package/src/ColorPalettePopover.js +27 -2
  295. package/src/ComboBox.hbs +1 -0
  296. package/src/ComboBox.js +91 -23
  297. package/src/ComboBoxPopover.hbs +1 -0
  298. package/src/DateComponentBase.js +6 -8
  299. package/src/DatePicker.js +10 -2
  300. package/src/DateRangePicker.js +22 -0
  301. package/src/Dialog.hbs +1 -1
  302. package/src/Dialog.js +5 -22
  303. package/src/Icon.js +11 -8
  304. package/src/Input.hbs +1 -1
  305. package/src/Input.js +107 -15
  306. package/src/InputPopover.hbs +2 -3
  307. package/src/Link.hbs +2 -1
  308. package/src/Link.js +32 -14
  309. package/src/List.js +14 -4
  310. package/src/ListItem.hbs +1 -0
  311. package/src/MessageStrip.hbs +1 -1
  312. package/src/MessageStrip.js +39 -2
  313. package/src/MultiComboBox.js +7 -3
  314. package/src/MultiComboBoxItem.js +1 -1
  315. package/src/MultiComboBoxPopover.hbs +1 -1
  316. package/src/MultiInput.js +55 -8
  317. package/src/Option.js +12 -1
  318. package/src/Panel.hbs +1 -1
  319. package/src/Panel.js +9 -0
  320. package/src/Popover.js +106 -57
  321. package/src/Popup.js +16 -2
  322. package/src/PopupBlockLayer.hbs +1 -1
  323. package/src/RadioButton.js +15 -3
  324. package/src/RatingIndicator.js +37 -7
  325. package/src/ResponsivePopover.hbs +2 -0
  326. package/src/ResponsivePopover.js +1 -0
  327. package/src/SegmentedButton.hbs +1 -0
  328. package/src/SegmentedButton.js +14 -1
  329. package/src/Select.js +2 -1
  330. package/src/SelectPopover.hbs +2 -1
  331. package/src/SliderBase.hbs +1 -1
  332. package/src/SliderBase.js +4 -0
  333. package/src/SplitButton.hbs +53 -0
  334. package/src/SplitButton.js +425 -0
  335. package/src/Switch.hbs +1 -0
  336. package/src/Switch.js +18 -0
  337. package/src/Tab.js +10 -6
  338. package/src/TabContainer.hbs +48 -58
  339. package/src/TabContainer.js +480 -108
  340. package/src/TabContainerPopover.hbs +9 -6
  341. package/src/TabInOverflow.hbs +0 -1
  342. package/src/TabInStrip.hbs +3 -8
  343. package/src/TabSeparator.js +42 -3
  344. package/src/TabSeparatorInOverflow.hbs +8 -0
  345. package/src/TabSeparatorInStrip.hbs +6 -0
  346. package/src/Table.hbs +1 -1
  347. package/src/Table.js +15 -5
  348. package/src/TextArea.js +9 -3
  349. package/src/TextAreaPopover.hbs +1 -1
  350. package/src/ToggleButton.js +5 -0
  351. package/src/Tokenizer.js +134 -7
  352. package/src/Tree.hbs +1 -0
  353. package/src/TreeItem.js +21 -0
  354. package/src/TreeListItem.js +8 -0
  355. package/src/features/InputSuggestions.js +88 -15
  356. package/src/i18n/messagebundle.properties +26 -1
  357. package/src/i18n/messagebundle_ar.properties +13 -1
  358. package/src/i18n/messagebundle_bg.properties +13 -1
  359. package/src/i18n/messagebundle_ca.properties +13 -1
  360. package/src/i18n/messagebundle_cs.properties +13 -1
  361. package/src/i18n/messagebundle_cy.properties +13 -1
  362. package/src/i18n/messagebundle_da.properties +13 -1
  363. package/src/i18n/messagebundle_de.properties +13 -1
  364. package/src/i18n/messagebundle_el.properties +13 -1
  365. package/src/i18n/messagebundle_en.properties +13 -1
  366. package/src/i18n/messagebundle_en_GB.properties +13 -1
  367. package/src/i18n/messagebundle_en_US_sappsd.properties +18 -1
  368. package/src/i18n/messagebundle_en_US_saprigi.properties +18 -1
  369. package/src/i18n/messagebundle_en_US_saptrc.properties +18 -1
  370. package/src/i18n/messagebundle_es.properties +13 -1
  371. package/src/i18n/messagebundle_es_MX.properties +13 -1
  372. package/src/i18n/messagebundle_et.properties +13 -1
  373. package/src/i18n/messagebundle_fi.properties +14 -2
  374. package/src/i18n/messagebundle_fr.properties +13 -1
  375. package/src/i18n/messagebundle_fr_CA.properties +13 -1
  376. package/src/i18n/messagebundle_hi.properties +13 -1
  377. package/src/i18n/messagebundle_hr.properties +13 -1
  378. package/src/i18n/messagebundle_hu.properties +13 -1
  379. package/src/i18n/messagebundle_id.properties +13 -1
  380. package/src/i18n/messagebundle_it.properties +13 -1
  381. package/src/i18n/messagebundle_iw.properties +13 -1
  382. package/src/i18n/messagebundle_ja.properties +13 -1
  383. package/src/i18n/messagebundle_kk.properties +13 -1
  384. package/src/i18n/messagebundle_ko.properties +13 -1
  385. package/src/i18n/messagebundle_lt.properties +13 -1
  386. package/src/i18n/messagebundle_lv.properties +13 -1
  387. package/src/i18n/messagebundle_ms.properties +13 -1
  388. package/src/i18n/messagebundle_nl.properties +13 -1
  389. package/src/i18n/messagebundle_no.properties +13 -1
  390. package/src/i18n/messagebundle_pl.properties +13 -1
  391. package/src/i18n/messagebundle_pt.properties +13 -1
  392. package/src/i18n/messagebundle_pt_PT.properties +13 -1
  393. package/src/i18n/messagebundle_ro.properties +13 -1
  394. package/src/i18n/messagebundle_ru.properties +13 -1
  395. package/src/i18n/messagebundle_sh.properties +13 -1
  396. package/src/i18n/messagebundle_sk.properties +13 -1
  397. package/src/i18n/messagebundle_sl.properties +13 -1
  398. package/src/i18n/messagebundle_sv.properties +13 -1
  399. package/src/i18n/messagebundle_th.properties +12 -0
  400. package/src/i18n/messagebundle_tr.properties +13 -1
  401. package/src/i18n/messagebundle_uk.properties +13 -1
  402. package/src/i18n/messagebundle_vi.properties +13 -1
  403. package/src/i18n/messagebundle_zh_CN.properties +13 -1
  404. package/src/i18n/messagebundle_zh_TW.properties +12 -0
  405. package/src/themes/Badge.css +3 -1
  406. package/src/themes/Breadcrumbs.css +100 -99
  407. package/src/themes/BrowserScrollbar.css +2 -0
  408. package/src/themes/BusyIndicator.css +3 -3
  409. package/src/themes/CardHeader.css +7 -3
  410. package/src/themes/CheckBox.css +15 -7
  411. package/src/themes/CustomListItem.css +2 -1
  412. package/src/themes/Dialog.css +1 -0
  413. package/src/themes/Input.css +14 -0
  414. package/src/themes/List.css +1 -0
  415. package/src/themes/Panel.css +4 -0
  416. package/src/themes/Popover.css +4 -0
  417. package/src/themes/PopupsCommon.css +0 -1
  418. package/src/themes/RadioButton.css +4 -3
  419. package/src/themes/RatingIndicator.css +0 -1
  420. package/src/themes/SliderBase.css +3 -2
  421. package/src/themes/SplitButton.css +98 -0
  422. package/src/themes/TabContainer.css +17 -53
  423. package/src/themes/TabInOverflow.css +25 -21
  424. package/src/themes/TabInStrip.css +124 -100
  425. package/src/themes/TabSeparatorInOverflow.css +8 -0
  426. package/src/themes/TabSeparatorInStrip.css +5 -0
  427. package/src/themes/Table.css +1 -1
  428. package/src/themes/TableColumn.css +0 -1
  429. package/src/themes/TextArea.css +9 -1
  430. package/src/themes/TimeSelection.css +4 -0
  431. package/src/themes/Token.css +2 -1
  432. package/src/themes/Tokenizer.css +1 -1
  433. package/src/themes/ValueStateMessage.css +3 -3
  434. package/src/themes/base/BrowserScrollbar-parameters.css +4 -0
  435. package/src/themes/base/Card-parameters.css +1 -1
  436. package/src/themes/base/Input-parameters.css +5 -0
  437. package/src/themes/base/TabContainer-parameters.css +1 -1
  438. package/src/themes/base/TextArea-parameters.css +1 -0
  439. package/src/themes/base/Title-parameters.css +6 -6
  440. package/src/themes/base/Token-parameters.css +1 -0
  441. package/src/themes/base/sizes-parameters.css +2 -2
  442. package/src/themes/sap_belize/BrowserScrollbar-parameters.css +4 -0
  443. package/src/themes/sap_belize/Table-parameters.css +3 -0
  444. package/src/themes/sap_belize/parameters-bundle.css +1 -0
  445. package/src/themes/sap_belize_hcb/BrowserScrollbar-parameters.css +4 -0
  446. package/src/themes/sap_belize_hcb/Input-parameters.css +1 -0
  447. package/src/themes/sap_belize_hcb/Table-parameters.css +1 -0
  448. package/src/themes/sap_belize_hcb/Token-parameters.css +1 -0
  449. package/src/themes/sap_belize_hcb/parameters-bundle.css +1 -0
  450. package/src/themes/sap_belize_hcw/BrowserScrollbar-parameters.css +4 -0
  451. package/src/themes/sap_belize_hcw/Input-parameters.css +1 -0
  452. package/src/themes/sap_belize_hcw/Table-parameters.css +1 -0
  453. package/src/themes/sap_belize_hcw/Token-parameters.css +1 -0
  454. package/src/themes/sap_belize_hcw/parameters-bundle.css +1 -0
  455. package/src/themes/sap_fiori_3/TabContainer-parameters.css +1 -1
  456. package/src/themes/sap_fiori_3/parameters-bundle.css +1 -0
  457. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +1 -0
  458. package/src/themes/sap_fiori_3_hcb/Input-parameters.css +7 -0
  459. package/src/themes/sap_fiori_3_hcb/TextArea-parameters.css +2 -0
  460. package/src/themes/sap_fiori_3_hcb/Token-parameters.css +2 -1
  461. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -0
  462. package/src/themes/sap_fiori_3_hcw/Input-parameters.css +7 -0
  463. package/src/themes/sap_fiori_3_hcw/TextArea-parameters.css +2 -0
  464. package/src/themes/sap_fiori_3_hcw/Token-parameters.css +2 -1
  465. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -0
  466. package/src/themes/sap_horizon/Card-parameters.css +0 -1
  467. package/src/themes/sap_horizon/Table-parameters.css +1 -0
  468. package/src/themes/sap_horizon/parameters-bundle.css +1 -0
  469. package/src/themes/sap_horizon_exp/parameters-bundle.css +1 -0
  470. package/src/types/HasPopup.js +62 -0
  471. package/src/types/TabsOverflowMode.js +40 -0
  472. package/csp.js +0 -7
  473. package/dist/generated/templates/TabSeparatorTemplate.lit.js +0 -7
  474. package/src/TabSeparator.hbs +0 -1
@@ -94,7 +94,7 @@ class BreadcrumbsItem extends UI5Element {
94
94
  }
95
95
 
96
96
  get stableDomRef() {
97
- return `${this._id}-stable-dom-ref`;
97
+ return this.getAttribute("stable-dom-ref") || `${this._id}-stable-dom-ref`;
98
98
  }
99
99
  }
100
100
 
@@ -6,9 +6,9 @@
6
6
  with-padding
7
7
  _hide-header
8
8
  @keydown="{{_onkeydown}}">
9
- <ui5-list mode="SingleSelectAuto"
9
+ <ui5-list mode="SingleSelect"
10
10
  separators="None"
11
- @ui5-item-press="{{_onOverflowListItemSelect}}">
11
+ @ui5-selection-change="{{_onOverflowListItemSelect}}">
12
12
 
13
13
  {{#each _overflowItemsData}}
14
14
  <ui5-li
@@ -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
  }
@@ -167,11 +169,30 @@ class ColorPalettePopover extends UI5Element {
167
169
  return this.responsivePopover.content[0].querySelector("[ui5-color-palette]");
168
170
  }
169
171
 
170
- closePopover() {
171
- this.responsivePopover.close();
172
+ /**
173
+ * Shows the ColorPalettePopover.
174
+ * @param {HTMLElement} opener the element that the popover is shown at
175
+ * @public
176
+ * @since 1.1.1
177
+ */
178
+ showAt(opener) {
179
+ this._openPopover(opener);
172
180
  }
173
181
 
182
+ /**
183
+ * Shows the ColorPalettePopover.
184
+ * <b>Note:</b> The method is deprecated and will be removed in future, use <code>showAt</code> instead.
185
+ * @param {HTMLElement} opener the element that the popover is shown at
186
+ * @public
187
+ * @since 1.0.0-rc.16
188
+ * @deprecated The method is deprecated in favour of <code>showAt</code>.
189
+ */
174
190
  openPopover(opener) {
191
+ console.warn("The method 'openPopover' is deprecated and will be removed in future, use 'showAt' instead."); // eslint-disable-line
192
+ this._openPopover(opener);
193
+ }
194
+
195
+ _openPopover(opener) {
175
196
  this._respPopover();
176
197
 
177
198
  this.responsivePopover.showAt(opener, true);
@@ -183,6 +204,10 @@ class ColorPalettePopover extends UI5Element {
183
204
  }
184
205
  }
185
206
 
207
+ closePopover() {
208
+ this.responsivePopover.close();
209
+ }
210
+
186
211
  onSelectedColor(event) {
187
212
  this.closePopover();
188
213
  this.fireEvent("item-click", event.detail);
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}}">