@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
@@ -537,7 +537,7 @@ class MultiComboBox extends UI5Element {
537
537
 
538
538
  const tokensCount = this._tokenizer.tokens.length - 1;
539
539
 
540
- if (!event.relatedTarget || event.relatedTarget.localName !== "ui5-token") {
540
+ if (!event.relatedTarget || !event.relatedTarget.hasAttribute("ui5-token")) {
541
541
  this._tokenizer.tokens.forEach(token => { token.selected = false; });
542
542
  this._tokenizer.scrollToStart();
543
543
  }
@@ -912,7 +912,7 @@ class MultiComboBox extends UI5Element {
912
912
  }
913
913
 
914
914
  inputFocusIn() {
915
- if (!isPhone()) {
915
+ if (!isPhone() || this.readonly) {
916
916
  this.focused = true;
917
917
  } else {
918
918
  this._innerInput.blur();
@@ -1012,7 +1012,7 @@ class MultiComboBox extends UI5Element {
1012
1012
  }
1013
1013
 
1014
1014
  get shouldDisplayOnlyValueStateMessage() {
1015
- return this.focused && this.hasValueStateMessage && !this._iconPressed;
1015
+ return this.focused && !this.readonly && this.hasValueStateMessage && !this._iconPressed;
1016
1016
  }
1017
1017
 
1018
1018
  get valueStateTextMappings() {
@@ -1051,6 +1051,10 @@ class MultiComboBox extends UI5Element {
1051
1051
  return (this._isFocusInside || this.open) && !this.readonly;
1052
1052
  }
1053
1053
 
1054
+ get _valueStatePopoverHorizontalAlign() {
1055
+ return this.effectiveDir !== "rtl" ? "Left" : "Right";
1056
+ }
1057
+
1054
1058
  get classes() {
1055
1059
  return {
1056
1060
  popover: {
@@ -34,7 +34,7 @@ class MultiComboBoxItem extends ComboBoxItem {
34
34
  }
35
35
 
36
36
  get stableDomRef() {
37
- return `${this._id}-stable-dom-ref`;
37
+ return this.getAttribute("stable-dom-ref") || `${this._id}-stable-dom-ref`;
38
38
  }
39
39
  }
40
40
 
@@ -100,7 +100,7 @@
100
100
  hide-arrow
101
101
  class="ui5-valuestatemessage-popover"
102
102
  placement-type="Bottom"
103
- horizontal-align="Left"
103
+ horizontal-align="{{_valueStatePopoverHorizontalAlign}}"
104
104
  >
105
105
  <div slot="header" class="{{classes.popoverValueState}}" style="{{styles.popoverHeader}}">
106
106
  <ui5-icon class="ui5-input-value-state-message-icon" name="{{_valueStateMessageIcon}}"></ui5-icon>
package/src/Option.js CHANGED
@@ -31,6 +31,17 @@ const metadata = {
31
31
  type: Boolean,
32
32
  },
33
33
 
34
+ /**
35
+ * Defines the tooltip of the component.
36
+ * @type {string}
37
+ * @defaultvalue ""
38
+ * @private
39
+ * @since 1.1.0
40
+ */
41
+ title: {
42
+ type: String,
43
+ },
44
+
34
45
  /**
35
46
  * Defines the <code>icon</code> source URI.
36
47
  * <br><br>
@@ -106,7 +117,7 @@ class Option extends UI5Element {
106
117
  }
107
118
 
108
119
  get stableDomRef() {
109
- return `${this._id}-stable-dom-ref`;
120
+ return this.getAttribute("stable-dom-ref") || `${this._id}-stable-dom-ref`;
110
121
  }
111
122
  }
112
123
 
package/src/Panel.hbs CHANGED
@@ -1,8 +1,8 @@
1
1
  <div
2
- data-sap-ui-fastnavgroup="true"
3
2
  class="ui5-panel-root"
4
3
  role="{{accRole}}"
5
4
  aria-label="{{effectiveAccessibleName}}"
5
+ dir="{{effectiveDir}}"
6
6
  >
7
7
  <!-- header: either header or h1 with header text -->
8
8
  <div
package/src/Panel.js CHANGED
@@ -24,6 +24,7 @@ const metadata = {
24
24
  tag: "ui5-panel",
25
25
  languageAware: true,
26
26
  managedSlots: true,
27
+ fastNavigation: true,
27
28
  slots: /** @lends sap.ui.webcomponents.main.Panel.prototype */ {
28
29
 
29
30
  /**
@@ -240,6 +241,14 @@ const metadata = {
240
241
  * <li>content - Used to style the wrapper of the content</li>
241
242
  * </ul>
242
243
  *
244
+ * <h3>Keyboard Handling</h3>
245
+ *
246
+ * <h4>Fast Navigation</h4>
247
+ * 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>.
248
+ * In order to use this functionality, you need to import the following module:
249
+ * <code>import "@ui5/webcomponents-base/dist/features/F6Navigation.js"</code>
250
+ * <br><br>
251
+ *
243
252
  * <h3>ES6 Module Import</h3>
244
253
  *
245
254
  * <code>import "@ui5/webcomponents/dist/Panel";</code>
package/src/Popover.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
2
+ import { isIOS } from "@ui5/webcomponents-base/dist/Device.js";
2
3
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
3
4
  import { getClosedPopupParent } from "@ui5/webcomponents-base/dist/util/PopupUtils.js";
4
5
  import clamp from "@ui5/webcomponents-base/dist/util/clamp.js";
@@ -187,11 +188,11 @@ const metadata = {
187
188
  defaultValue: PopoverPlacementType.Right,
188
189
  },
189
190
 
190
- _maxContentHeight: {
191
+ _maxHeight: {
191
192
  type: Integer,
192
193
  noAttribute: true,
193
194
  },
194
- _maxContentWidth: {
195
+ _maxWidth: {
195
196
  type: Integer,
196
197
  noAttribute: true,
197
198
  },
@@ -283,6 +284,10 @@ class Popover extends Popup {
283
284
  return 10; // px
284
285
  }
285
286
 
287
+ static get ARROW_MARGIN() {
288
+ return 6; // px
289
+ }
290
+
286
291
  onEnterDOM() {
287
292
  ResizeHandler.register(this, this._handleResize);
288
293
  }
@@ -421,41 +426,94 @@ class Popover extends Popup {
421
426
  top = Math.max(top, this._top);
422
427
  }
423
428
 
424
- let { arrowX, arrowY } = placement;
425
- const isVertical = this.actualPlacementType === PopoverPlacementType.Top
426
- || this.actualPlacementType === PopoverPlacementType.Bottom;
429
+ const isVertical = this.actualPlacementType === PopoverPlacementType.Top || this.actualPlacementType === PopoverPlacementType.Bottom;
430
+ const borderRadius = Number.parseInt(window.getComputedStyle(this).getPropertyValue("border-radius"));
431
+ const arrow = this._clampArrowPlacement(placement.arrow, isVertical, this._top, this._left, popoverSize, borderRadius);
432
+
433
+ this.arrowTranslateX = arrow.x;
434
+ this.arrowTranslateY = arrow.y;
435
+
436
+ top = this._adjustForIOSKeyboard(top);
437
+
438
+ Object.assign(this.style, {
439
+ top: `${top}px`,
440
+ left: `${left}px`,
441
+ });
442
+ super._show();
443
+
444
+ if (stretching && this._width) {
445
+ this.style.width = this._width;
446
+ }
447
+ }
448
+
449
+ /**
450
+ * Restricts the arrow's coordinates within the bounds of the popover.
451
+ * @private
452
+ * @param {{x: number, y: number}} arrow arrow's coordinates
453
+ * @param {boolean} isVertical if the popover is placed vertically relative to the opener
454
+ * @param {number} top popover's top
455
+ * @param {number} left popover's left
456
+ * @param {{width: number, height: number}} popoverSize popover's width and height
457
+ * @param {number} borderRadius value of the border-radius property
458
+ * @returns {{x: number, y: number}} Arrow's coordinates
459
+ */
460
+ _clampArrowPlacement({ x, y }, isVertical, top, left, { width, height }, borderRadius) {
461
+ const maxY = this._getArrowRange(height, borderRadius);
462
+ const maxX = this._getArrowRange(width, borderRadius);
427
463
 
428
464
  if (isVertical) {
429
- const popoverOnLeftBorderOffset = Popover.VIEWPORT_MARGIN - this._left;
430
- const popoverOnRightBorderOffset = this._left + popoverSize.width + Popover.VIEWPORT_MARGIN - document.documentElement.clientWidth;
465
+ const popoverOnLeftBorderOffset = Popover.VIEWPORT_MARGIN - left;
466
+ const popoverOnRightBorderOffset = left + width + Popover.VIEWPORT_MARGIN - document.documentElement.clientWidth;
467
+
431
468
  if (popoverOnLeftBorderOffset > 0) {
432
- arrowX -= popoverOnLeftBorderOffset;
469
+ x = Math.max(x - popoverOnLeftBorderOffset, -maxX);
433
470
  } else if (popoverOnRightBorderOffset > 0) {
434
- arrowX += popoverOnRightBorderOffset;
471
+ x = Math.min(x + popoverOnRightBorderOffset, maxX);
435
472
  }
436
473
  }
437
- this.arrowTranslateX = Math.round(arrowX);
438
474
 
439
475
  if (!isVertical) {
440
- const popoverOnTopBorderOffset = Popover.VIEWPORT_MARGIN - this._top;
441
- const popoverOnBottomBorderOffset = this._top + popoverSize.height + Popover.VIEWPORT_MARGIN - document.documentElement.clientHeight;
476
+ const popoverOnTopBorderOffset = Popover.VIEWPORT_MARGIN - top;
477
+ const popoverOnBottomBorderOffset = top + height + Popover.VIEWPORT_MARGIN - document.documentElement.clientHeight;
442
478
  if (popoverOnTopBorderOffset > 0) {
443
- arrowY -= popoverOnTopBorderOffset;
479
+ y = Math.max(y - popoverOnTopBorderOffset, -maxY);
444
480
  } else if (popoverOnBottomBorderOffset > 0) {
445
- arrowY += popoverOnBottomBorderOffset;
481
+ y = Math.min(y + popoverOnBottomBorderOffset, maxY);
446
482
  }
447
483
  }
448
- this.arrowTranslateY = Math.round(arrowY);
449
484
 
450
- Object.assign(this.style, {
451
- top: `${top}px`,
452
- left: `${left}px`,
453
- });
454
- super._show();
485
+ return {
486
+ x: Math.round(x),
487
+ y: Math.round(y),
488
+ };
489
+ }
455
490
 
456
- if (stretching && this._width) {
457
- this.style.width = this._width;
491
+ /**
492
+ * Returns the allowed range for the popover arrow based on its dimension.
493
+ * @private
494
+ * @param {number} dimension the height or width of the popover
495
+ * @param {number} borderRadius border radius of the popover
496
+ * @returns {number}
497
+ */
498
+ _getArrowRange(dimension, borderRadius) {
499
+ return Math.floor((dimension / 2) - (borderRadius + Popover.ARROW_MARGIN));
500
+ }
501
+
502
+ /**
503
+ * Adjust the desired top position to compensate for shift of the screen
504
+ * caused by opened keyboard on iOS which affects all elements with position:fixed.
505
+ * @private
506
+ * @param {int} top The target top in px.
507
+ * @returns {int} The adjusted top in px.
508
+ */
509
+ _adjustForIOSKeyboard(top) {
510
+ if (!isIOS()) {
511
+ return top;
458
512
  }
513
+
514
+ const actualTop = Math.ceil(this.getBoundingClientRect().top);
515
+
516
+ return top + (Number.parseInt(this.style.top || "0") - actualTop);
459
517
  }
460
518
 
461
519
  getPopoverSize() {
@@ -482,6 +540,9 @@ class Popover extends Popup {
482
540
  return this.shadowRoot.querySelector(".ui5-popover-arrow");
483
541
  }
484
542
 
543
+ /**
544
+ * @private
545
+ */
485
546
  calcPlacement(targetRect, popoverSize) {
486
547
  let left = 0;
487
548
  let top = 0;
@@ -493,9 +554,6 @@ class Popover extends Popup {
493
554
  let maxHeight = clientHeight;
494
555
  let maxWidth = clientWidth;
495
556
 
496
- let width = "";
497
- let height = "";
498
-
499
557
  const placementType = this.getActualPlacementType(targetRect, popoverSize);
500
558
 
501
559
  this._preventRepositionAndClose = this.shouldCloseDueToNoOpener(targetRect) || this.shouldCloseDueToOverflow(placementType, targetRect);
@@ -505,15 +563,11 @@ class Popover extends Popup {
505
563
 
506
564
  if (this.horizontalAlign === PopoverHorizontalAlign.Stretch && isVertical) {
507
565
  popoverSize.width = targetRect.width;
508
- width = `${targetRect.width}px`;
566
+ this._width = `${targetRect.width}px`;
509
567
  } else if (this.verticalAlign === PopoverVerticalAlign.Stretch && !isVertical) {
510
568
  popoverSize.height = targetRect.height;
511
- height = `${targetRect.height}px`;
512
569
  }
513
570
 
514
- this._width = width;
515
- this._height = height;
516
-
517
571
  const arrowOffset = this.hideArrow ? 0 : arrowSize;
518
572
 
519
573
  // calc popover positions
@@ -528,11 +582,11 @@ class Popover extends Popup {
528
582
  break;
529
583
  case PopoverPlacementType.Bottom:
530
584
  left = this.getVerticalLeft(targetRect, popoverSize);
585
+ top = targetRect.bottom + arrowOffset;
531
586
 
532
587
  if (allowTargetOverlap) {
533
- top = Math.max(Math.min(targetRect.bottom + arrowOffset, clientHeight - popoverSize.height), 0);
588
+ top = Math.max(Math.min(top, clientHeight - popoverSize.height), 0);
534
589
  } else {
535
- top = targetRect.bottom + arrowOffset;
536
590
  maxHeight = clientHeight - targetRect.bottom - arrowOffset;
537
591
  }
538
592
  break;
@@ -545,14 +599,14 @@ class Popover extends Popup {
545
599
  }
546
600
  break;
547
601
  case PopoverPlacementType.Right:
602
+ left = targetRect.left + targetRect.width + arrowOffset;
603
+ top = this.getHorizontalTop(targetRect, popoverSize);
604
+
548
605
  if (allowTargetOverlap) {
549
- left = Math.max(Math.min(targetRect.left + targetRect.width + arrowOffset, clientWidth - popoverSize.width), 0);
606
+ left = Math.max(Math.min(left, clientWidth - popoverSize.width), 0);
550
607
  } else {
551
- left = targetRect.left + targetRect.width + arrowOffset;
552
608
  maxWidth = clientWidth - targetRect.right - arrowOffset;
553
609
  }
554
-
555
- top = this.getHorizontalTop(targetRect, popoverSize);
556
610
  break;
557
611
  }
558
612
 
@@ -571,21 +625,8 @@ class Popover extends Popup {
571
625
  }
572
626
  }
573
627
 
574
- let maxContentHeight = maxHeight;
575
-
576
- if (this._displayHeader) {
577
- const headerDomRef = this.shadowRoot.querySelector(".ui5-popup-header-root")
578
- || this.shadowRoot.querySelector(".ui5-popup-header-text");
579
-
580
- if (headerDomRef) {
581
- maxContentHeight = maxHeight - headerDomRef.offsetHeight;
582
- }
583
- }
584
-
585
- this._maxContentHeight = Math.round(maxContentHeight - Popover.VIEWPORT_MARGIN);
586
- this._maxContentWidth = Math.round(maxWidth - Popover.VIEWPORT_MARGIN);
587
-
588
- const arrowPos = this.getArrowPosition(targetRect, popoverSize, left, top, isVertical);
628
+ this._maxHeight = Math.round(maxHeight - Popover.VIEWPORT_MARGIN);
629
+ this._maxWidth = Math.round(maxWidth - Popover.VIEWPORT_MARGIN);
589
630
 
590
631
  if (this._left === undefined || Math.abs(this._left - left) > 1.5) {
591
632
  this._left = Math.round(left);
@@ -595,9 +636,10 @@ class Popover extends Popup {
595
636
  this._top = Math.round(top);
596
637
  }
597
638
 
639
+ const arrowPos = this.getArrowPosition(targetRect, popoverSize, left, top, isVertical);
640
+
598
641
  return {
599
- arrowX: arrowPos.x,
600
- arrowY: arrowPos.y,
642
+ arrow: arrowPos,
601
643
  top: this._top,
602
644
  left: this._left,
603
645
  placementType,
@@ -746,7 +788,7 @@ class Popover extends Popup {
746
788
  }
747
789
 
748
790
  get _ariaLabelledBy() { // Required by Popup.js
749
- return this.accessibleName ? undefined : "ui5-popup-header";
791
+ return this._ariaLabel ? undefined : "ui5-popup-header";
750
792
  }
751
793
 
752
794
  get _ariaModal() { // Required by Popup.js
@@ -756,9 +798,9 @@ class Popover extends Popup {
756
798
  get styles() {
757
799
  return {
758
800
  ...super.styles,
759
- content: {
760
- "max-height": `${this._maxContentHeight}px`,
761
- "max-width": `${this._maxContentWidth}px`,
801
+ root: {
802
+ "max-height": `${this._maxHeight}px`,
803
+ "max-width": `${this._maxWidth}px`,
762
804
  },
763
805
  arrow: {
764
806
  transform: `translate(${this.arrowTranslateX}px, ${this.arrowTranslateY}px)`,
@@ -766,6 +808,13 @@ class Popover extends Popup {
766
808
  };
767
809
  }
768
810
 
811
+ get classes() {
812
+ const allClasses = super.classes;
813
+ allClasses.root["ui5-popover-root"] = true;
814
+
815
+ return allClasses;
816
+ }
817
+
769
818
  /**
770
819
  * Hook for descendants to hide header.
771
820
  */
package/src/Popup.js CHANGED
@@ -3,6 +3,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
4
4
  import { isChrome } from "@ui5/webcomponents-base/dist/Device.js";
5
5
  import { getFirstFocusableElement, getLastFocusableElement } from "@ui5/webcomponents-base/dist/util/FocusableElements.js";
6
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
6
7
  import { hasStyle, createStyle } from "@ui5/webcomponents-base/dist/ManagedStyles.js";
7
8
  import { isTabPrevious } from "@ui5/webcomponents-base/dist/Keys.js";
8
9
  import { getNextZIndex, getFocusedElement, isFocusedElementWithinNode } from "@ui5/webcomponents-base/dist/util/PopupUtils.js";
@@ -68,7 +69,7 @@ const metadata = {
68
69
  },
69
70
 
70
71
  /**
71
- * Sets the accessible aria name of the component.
72
+ * Defines the accessible name of the component.
72
73
  *
73
74
  * @type {String}
74
75
  * @defaultvalue ""
@@ -80,6 +81,19 @@ const metadata = {
80
81
  defaultValue: undefined,
81
82
  },
82
83
 
84
+ /**
85
+ * Defines the IDs of the elements that label the component.
86
+ *
87
+ * @type {String}
88
+ * @defaultvalue ""
89
+ * @public
90
+ * @since 1.1.0
91
+ */
92
+ accessibleNameRef: {
93
+ type: String,
94
+ defaultValue: "",
95
+ },
96
+
83
97
  /**
84
98
  * @private
85
99
  */
@@ -535,7 +549,7 @@ class Popup extends UI5Element {
535
549
  * @protected
536
550
  */
537
551
  get _ariaLabel() {
538
- return this.accessibleName || undefined;
552
+ return getEffectiveAriaLabelText(this);
539
553
  }
540
554
 
541
555
  get _root() {
@@ -1,6 +1,6 @@
1
1
  <div class="ui5-block-layer"
2
2
  ?hidden={{_blockLayerHidden}}
3
- tabindex="1"
3
+ tabindex="0"
4
4
  style="{{styles.blockLayer}}"
5
5
  @keydown="{{_preventBlockLayerFocus}}"
6
6
  @mousedown="{{_preventBlockLayerFocus}}">
@@ -4,6 +4,7 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
4
4
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
5
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
6
6
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
7
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
7
8
  import {
8
9
  isSpace,
9
10
  isEnter,
@@ -174,8 +175,7 @@ const metadata = {
174
175
  },
175
176
 
176
177
  /**
177
- * Defines the text alternative of the component.
178
- * If not provided a default text alternative will be set, if present.
178
+ * Defines the accessible name of the component.
179
179
  *
180
180
  * @type {string}
181
181
  * @defaultvalue ""
@@ -186,6 +186,18 @@ const metadata = {
186
186
  type: String,
187
187
  },
188
188
 
189
+ /**
190
+ * Defines the IDs of the elements that label the component.
191
+ *
192
+ * @type {String}
193
+ * @defaultvalue ""
194
+ * @public
195
+ * @since 1.1.0
196
+ */
197
+ accessibleNameRef: {
198
+ type: String,
199
+ },
200
+
189
201
  _tabIndex: {
190
202
  type: String,
191
203
  defaultValue: "-1",
@@ -455,7 +467,7 @@ class RadioButton extends UI5Element {
455
467
  }
456
468
 
457
469
  get ariaLabelText() {
458
- return [this.text, this.accessibleName].filter(Boolean).join(" ");
470
+ return [getEffectiveAriaLabelText(this), this.text].filter(Boolean).join(" ");
459
471
  }
460
472
 
461
473
  get ariaDescribedBy() {
@@ -7,6 +7,8 @@ import {
7
7
  isRight,
8
8
  isSpace,
9
9
  isEnter,
10
+ isHome,
11
+ isEnd,
10
12
  } from "@ui5/webcomponents-base/dist/Keys.js";
11
13
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
12
14
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
@@ -143,6 +145,20 @@ const metadata = {
143
145
  * <br>
144
146
  * Example: <code>&lt;ui5-rating-indicator style="font-size: 3rem;">&lt;/ui5-rating-indicator></code>
145
147
  *
148
+ * <h3>Keyboard Handling</h3>
149
+ * When the <code>ui5-rating-indicator</code> is focused, the user can change the rating
150
+ * with the following keyboard shortcuts:
151
+ * <br>
152
+ *
153
+ * <ul>
154
+ * <li>[RIGHT/UP] - Increases the value of the rating by one step. If the highest value is reached, does nothing</li>
155
+ * <li>[LEFT/DOWN] - Decreases the value of the rating by one step. If the lowest value is reached, does nothing.</li>
156
+ * <li>[HOME] - Sets the lowest value.</li>
157
+ * <li>[END] - Sets the highest value.</li>
158
+ * <li>[SPACE/ENTER/RETURN] - Increases the value of the rating by one step. If the highest value is reached, sets the rating to the lowest value.</li>
159
+ * <li>Any number - Changes value to the corresponding number. If typed number is larger than the number of values, sets the highest value.</li>
160
+ * </ul>
161
+ *
146
162
  * <h3>ES6 Module Import</h3>
147
163
  *
148
164
  * <code>import "@ui5/webcomponents/dist/RatingIndicator.js";</code>
@@ -232,19 +248,33 @@ class RatingIndicator extends UI5Element {
232
248
  return;
233
249
  }
234
250
 
235
- const down = isDown(event) || isLeft(event);
236
- const up = isRight(event) || isUp(event) || isSpace(event) || isEnter(event);
251
+ const isDecrease = isDown(event) || isLeft(event);
252
+ const isIncrease = isRight(event) || isUp(event);
253
+ const isIncreaseWithReset = isSpace(event) || isEnter(event);
254
+ const isMin = isHome(event);
255
+ const isMax = isEnd(event);
256
+ const isNumber = (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105);
237
257
 
238
- if (down || up) {
258
+ if (isDecrease || isIncrease || isIncreaseWithReset || isMin || isMax || isNumber) {
239
259
  event.preventDefault();
240
260
 
241
- if (down && this.value > 0) {
261
+ if (isDecrease && this.value > 0) {
242
262
  this.value = Math.round(this.value - 1);
243
- this.fireEvent("change");
244
- } else if (up && this.value < this.max) {
263
+ } else if (isIncrease && this.value < this.max) {
245
264
  this.value = Math.round(this.value + 1);
246
- this.fireEvent("change");
265
+ } else if (isIncreaseWithReset) {
266
+ const proposedValue = Math.round(this.value + 1);
267
+ this.value = proposedValue > this.max ? 0 : proposedValue;
268
+ } else if (isMin) {
269
+ this.value = 0;
270
+ } else if (isMax) {
271
+ this.value = this.max;
272
+ } else if (isNumber) {
273
+ const pressedNumber = parseInt(event.key);
274
+ this.value = pressedNumber > this.max ? this.max : pressedNumber;
247
275
  }
276
+
277
+ this.fireEvent("change");
248
278
  }
249
279
  }
250
280
 
@@ -1,5 +1,7 @@
1
1
  {{#if _isPhone}}
2
2
  <ui5-dialog
3
+ accessible-name={{accessibleName}}
4
+ accessible-name-ref={{accessibleNameRef}}
3
5
  ?with-padding={{withPadding}}
4
6
  stretch
5
7
  _disable-initial-focus
@@ -107,6 +107,7 @@ class ResponsivePopover extends Popover {
107
107
 
108
108
  static get dependencies() {
109
109
  return [
110
+ ...Popover.dependencies,
110
111
  Button,
111
112
  Dialog,
112
113
  Title,
@@ -9,6 +9,7 @@
9
9
  aria-multiselectable="true"
10
10
  aria-describedby="{{_id}}-invisibleText"
11
11
  aria-roledescription={{ariaDescription}}
12
+ aria-label={{accessibleName}}
12
13
  >
13
14
  <slot></slot>
14
15
 
@@ -25,7 +25,20 @@ const metadata = {
25
25
  tag: "ui5-segmented-button",
26
26
  altTag: "ui5-segmentedbutton",
27
27
  languageAware: true,
28
- properties: /** @lends sap.ui.webcomponents.main.SegmentedButton.prototype */ {},
28
+ properties: /** @lends sap.ui.webcomponents.main.SegmentedButton.prototype */ {
29
+ /**
30
+ * Sets the accessible aria name of the component.
31
+ *
32
+ * @type {String}
33
+ * @defaultvalue: ""
34
+ * @public
35
+ * @since 1.0.3
36
+ */
37
+ accessibleName: {
38
+ type: String,
39
+ defaultValue: undefined,
40
+ },
41
+ },
29
42
  managedSlots: true,
30
43
  slots: /** @lends sap.ui.webcomponents.main.SegmentedButton.prototype */ {
31
44
 
package/src/Select.js CHANGED
@@ -402,6 +402,7 @@ class Select extends UI5Element {
402
402
  icon: opt.icon,
403
403
  value: opt.value,
404
404
  textContent: opt.textContent,
405
+ title: opt.title,
405
406
  id: opt._id,
406
407
  stableDomRef: opt.stableDomRef,
407
408
  };
@@ -554,7 +555,7 @@ class Select extends UI5Element {
554
555
  * @private
555
556
  */
556
557
  _handleItemPress(event) {
557
- const item = event.detail.item;
558
+ const item = event.detail.selectedItems[0];
558
559
  const selectedItemIndex = this._getSelectedItemIndex(item);
559
560
 
560
561
  this._handleSelectionChange(selectedItemIndex);
@@ -42,7 +42,7 @@
42
42
  mode="SingleSelectAuto"
43
43
  separators="None"
44
44
  @mousedown="{{_itemMousedown}}"
45
- @ui5-item-press="{{_handleItemPress}}"
45
+ @ui5-selection-change="{{_handleItemPress}}"
46
46
  >
47
47
  {{#each _syncedOptions}}
48
48
  <ui5-li
@@ -50,6 +50,7 @@
50
50
  icon="{{this.icon}}"
51
51
  ?selected="{{this.selected}}"
52
52
  ?focused="{{this._focused}}"
53
+ title="{{this.title}}"
53
54
  ?aria-selected="{{this.selected}}"
54
55
  data-ui5-stable="{{this.stableDomRef}}"
55
56
  >
@@ -1,5 +1,5 @@
1
1
  <div
2
- class="ui5-slider-root"
2
+ class="ui5-slider-root {{classes.root}}"
3
3
  @mousedown="{{_onmousedown}}"
4
4
  @touchstart="{{_ontouchstart}}"
5
5
  @mouseover="{{_onmouseover}}"