@ui5/webcomponents 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +1 -0
  3. package/dist/Avatar.js +1 -1
  4. package/dist/AvatarGroup.js +2 -2
  5. package/dist/Breadcrumbs.js +11 -4
  6. package/dist/BusyIndicator.js +1 -1
  7. package/dist/Button.js +44 -30
  8. package/dist/Calendar.js +1 -1
  9. package/dist/Card.js +2 -2
  10. package/dist/CheckBox.js +3 -3
  11. package/dist/ColorPalette.js +1 -1
  12. package/dist/ColorPaletteItem.js +2 -2
  13. package/dist/ColorPalettePopover.js +3 -3
  14. package/dist/ColorPicker.js +42 -4
  15. package/dist/ComboBox.js +10 -4
  16. package/dist/DatePicker.js +10 -8
  17. package/dist/DateRangePicker.js +7 -1
  18. package/dist/Dialog.js +35 -5
  19. package/dist/FileUploader.js +2 -1
  20. package/dist/Input.js +87 -19
  21. package/dist/Interfaces.js +1 -1
  22. package/dist/Label.js +7 -1
  23. package/dist/Link.js +16 -5
  24. package/dist/List.js +6 -16
  25. package/dist/ListItem.js +1 -1
  26. package/dist/MessageStrip.js +0 -8
  27. package/dist/MultiComboBox.js +186 -27
  28. package/dist/MultiInput.js +55 -8
  29. package/dist/Panel.js +7 -8
  30. package/dist/Popover.js +39 -9
  31. package/dist/Popup.js +61 -26
  32. package/dist/ProgressIndicator.js +5 -0
  33. package/dist/RadioButton.js +1 -1
  34. package/dist/RangeSlider.js +6 -1
  35. package/dist/RatingIndicator.js +2 -2
  36. package/dist/ResponsivePopover.js +15 -11
  37. package/dist/SegmentedButton.js +2 -2
  38. package/dist/SegmentedButtonItem.js +7 -2
  39. package/dist/Select.js +9 -5
  40. package/dist/Slider.js +5 -0
  41. package/dist/SliderBase.js +4 -3
  42. package/dist/SplitButton.js +11 -5
  43. package/dist/StepInput.js +4 -4
  44. package/dist/Switch.js +13 -1
  45. package/dist/TabContainer.js +44 -3
  46. package/dist/Table.js +243 -4
  47. package/dist/TableColumn.js +0 -7
  48. package/dist/TableGroupRow.js +4 -0
  49. package/dist/TableRow.js +87 -8
  50. package/dist/TextArea.js +9 -4
  51. package/dist/Tokenizer.js +196 -10
  52. package/dist/Tree.js +5 -1
  53. package/dist/TreeItem.js +2 -2
  54. package/dist/TreeListItem.js +5 -2
  55. package/dist/api.json +129 -68
  56. package/dist/css/themes/Avatar.css +1 -1
  57. package/dist/css/themes/Button.css +1 -1
  58. package/dist/css/themes/Calendar.css +1 -1
  59. package/dist/css/themes/ColorPalettePopover.css +1 -1
  60. package/dist/css/themes/ComboBox.css +1 -1
  61. package/dist/css/themes/DatePickerPopover.css +1 -1
  62. package/dist/css/themes/Dialog.css +1 -1
  63. package/dist/css/themes/Input.css +1 -1
  64. package/dist/css/themes/ListItemBase.css +1 -1
  65. package/dist/css/themes/MultiComboBox.css +1 -1
  66. package/dist/css/themes/PopupGlobal.css +1 -1
  67. package/dist/css/themes/PopupsCommon.css +1 -1
  68. package/dist/css/themes/ResponsivePopover.css +1 -1
  69. package/dist/css/themes/SelectPopover.css +1 -1
  70. package/dist/css/themes/SplitButton.css +1 -1
  71. package/dist/css/themes/Suggestions.css +1 -1
  72. package/dist/css/themes/TabInOverflow.css +1 -1
  73. package/dist/css/themes/TableRow.css +1 -1
  74. package/dist/css/themes/TimePickerPopover.css +1 -1
  75. package/dist/css/themes/TokenizerPopover.css +1 -0
  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 +4 -0
  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/AvatarGroupTemplate.lit.js +1 -1
  145. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  146. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  147. package/dist/generated/templates/ButtonTemplate.lit.js +1 -1
  148. package/dist/generated/templates/CalendarTemplate.lit.js +1 -1
  149. package/dist/generated/templates/CarouselTemplate.lit.js +3 -3
  150. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +1 -1
  151. package/dist/generated/templates/ColorPickerTemplate.lit.js +1 -1
  152. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +1 -1
  153. package/dist/generated/templates/CustomListItemTemplate.lit.js +2 -2
  154. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
  155. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  156. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +1 -1
  157. package/dist/generated/templates/DialogTemplate.lit.js +3 -3
  158. package/dist/generated/templates/FileUploaderPopoverTemplate.lit.js +5 -4
  159. package/dist/generated/templates/InputPopoverTemplate.lit.js +2 -2
  160. package/dist/generated/templates/InputTemplate.lit.js +6 -5
  161. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  162. package/dist/generated/templates/ListTemplate.lit.js +1 -1
  163. package/dist/generated/templates/MessageStripTemplate.lit.js +1 -1
  164. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +1 -1
  165. package/dist/generated/templates/MultiInputTemplate.lit.js +7 -6
  166. package/dist/generated/templates/PanelTemplate.lit.js +2 -2
  167. package/dist/generated/templates/PopoverTemplate.lit.js +3 -3
  168. package/dist/generated/templates/PopupTemplate.lit.js +1 -1
  169. package/dist/generated/templates/RatingIndicatorTemplate.lit.js +1 -1
  170. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +5 -5
  171. package/dist/generated/templates/SegmentedButtonItemTemplate.lit.js +1 -1
  172. package/dist/generated/templates/SelectPopoverTemplate.lit.js +1 -1
  173. package/dist/generated/templates/StandardListItemTemplate.lit.js +2 -2
  174. package/dist/generated/templates/StepInputTemplate.lit.js +1 -1
  175. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +2 -2
  176. package/dist/generated/templates/SwitchTemplate.lit.js +1 -1
  177. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +1 -1
  178. package/dist/generated/templates/TabContainerTemplate.lit.js +4 -4
  179. package/dist/generated/templates/TableGroupRowTemplate.lit.js +1 -1
  180. package/dist/generated/templates/TableRowTemplate.lit.js +2 -2
  181. package/dist/generated/templates/TableTemplate.lit.js +3 -3
  182. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +1 -1
  183. package/dist/generated/templates/TextAreaTemplate.lit.js +1 -1
  184. package/dist/generated/templates/TimePickerPopoverTemplate.lit.js +1 -1
  185. package/dist/generated/templates/ToggleButtonTemplate.lit.js +1 -1
  186. package/dist/generated/templates/TokenizerTemplate.lit.js +1 -1
  187. package/dist/generated/templates/TreeListItemTemplate.lit.js +2 -2
  188. package/dist/generated/themes/Avatar.css.js +1 -1
  189. package/dist/generated/themes/Button.css.js +1 -1
  190. package/dist/generated/themes/Calendar.css.js +1 -1
  191. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  192. package/dist/generated/themes/ComboBox.css.js +1 -1
  193. package/dist/generated/themes/DatePickerPopover.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/ListItemBase.css.js +1 -1
  197. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  198. package/dist/generated/themes/PopupGlobal.css.js +1 -1
  199. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  200. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  201. package/dist/generated/themes/SelectPopover.css.js +1 -1
  202. package/dist/generated/themes/SplitButton.css.js +1 -1
  203. package/dist/generated/themes/Suggestions.css.js +1 -1
  204. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  205. package/dist/generated/themes/TableRow.css.js +1 -1
  206. package/dist/generated/themes/TimePickerPopover.css.js +1 -1
  207. package/dist/generated/themes/TokenizerPopover.css.js +8 -0
  208. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  209. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  210. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  211. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  212. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  213. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  214. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  215. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  216. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  217. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  218. package/dist/i18n/messagebundle.properties +3 -0
  219. package/dist/i18n/messagebundle_ar.properties +5 -0
  220. package/dist/i18n/messagebundle_bg.properties +5 -0
  221. package/dist/i18n/messagebundle_ca.properties +5 -0
  222. package/dist/i18n/messagebundle_cs.properties +5 -0
  223. package/dist/i18n/messagebundle_cy.properties +5 -0
  224. package/dist/i18n/messagebundle_da.properties +5 -0
  225. package/dist/i18n/messagebundle_de.properties +5 -0
  226. package/dist/i18n/messagebundle_el.properties +5 -0
  227. package/dist/i18n/messagebundle_en.properties +5 -0
  228. package/dist/i18n/messagebundle_en_GB.properties +5 -0
  229. package/dist/i18n/messagebundle_en_US_sappsd.properties +5 -0
  230. package/dist/i18n/messagebundle_en_US_saprigi.properties +2 -0
  231. package/dist/i18n/messagebundle_en_US_saptrc.properties +5 -0
  232. package/dist/i18n/messagebundle_es.properties +5 -0
  233. package/dist/i18n/messagebundle_es_MX.properties +5 -0
  234. package/dist/i18n/messagebundle_et.properties +5 -0
  235. package/dist/i18n/messagebundle_fi.properties +5 -0
  236. package/dist/i18n/messagebundle_fr.properties +5 -0
  237. package/dist/i18n/messagebundle_fr_CA.properties +5 -0
  238. package/dist/i18n/messagebundle_hi.properties +5 -0
  239. package/dist/i18n/messagebundle_hr.properties +5 -0
  240. package/dist/i18n/messagebundle_hu.properties +5 -0
  241. package/dist/i18n/messagebundle_id.properties +5 -0
  242. package/dist/i18n/messagebundle_it.properties +5 -0
  243. package/dist/i18n/messagebundle_iw.properties +5 -0
  244. package/dist/i18n/messagebundle_ja.properties +7 -2
  245. package/dist/i18n/messagebundle_kk.properties +5 -0
  246. package/dist/i18n/messagebundle_ko.properties +5 -0
  247. package/dist/i18n/messagebundle_lt.properties +5 -0
  248. package/dist/i18n/messagebundle_lv.properties +5 -0
  249. package/dist/i18n/messagebundle_ms.properties +5 -0
  250. package/dist/i18n/messagebundle_nl.properties +5 -0
  251. package/dist/i18n/messagebundle_no.properties +5 -0
  252. package/dist/i18n/messagebundle_pl.properties +5 -0
  253. package/dist/i18n/messagebundle_pt.properties +5 -0
  254. package/dist/i18n/messagebundle_pt_PT.properties +5 -0
  255. package/dist/i18n/messagebundle_ro.properties +5 -0
  256. package/dist/i18n/messagebundle_ru.properties +5 -0
  257. package/dist/i18n/messagebundle_sh.properties +5 -0
  258. package/dist/i18n/messagebundle_sk.properties +5 -0
  259. package/dist/i18n/messagebundle_sl.properties +5 -0
  260. package/dist/i18n/messagebundle_sv.properties +5 -0
  261. package/dist/i18n/messagebundle_th.properties +5 -0
  262. package/dist/i18n/messagebundle_tr.properties +5 -0
  263. package/dist/i18n/messagebundle_uk.properties +5 -0
  264. package/dist/i18n/messagebundle_vi.properties +5 -0
  265. package/dist/i18n/messagebundle_zh_CN.properties +5 -0
  266. package/dist/i18n/messagebundle_zh_TW.properties +5 -0
  267. package/package.json +10 -8
  268. package/src/Avatar.js +1 -1
  269. package/src/AvatarGroup.hbs +1 -1
  270. package/src/AvatarGroup.js +2 -2
  271. package/src/Breadcrumbs.hbs +2 -2
  272. package/src/Breadcrumbs.js +11 -4
  273. package/src/BreadcrumbsPopover.hbs +0 -1
  274. package/src/BusyIndicator.js +1 -1
  275. package/src/Button.hbs +4 -4
  276. package/src/Button.js +44 -30
  277. package/src/Calendar.hbs +1 -1
  278. package/src/Calendar.js +1 -1
  279. package/src/Card.js +2 -2
  280. package/src/Carousel.hbs +2 -2
  281. package/src/CheckBox.js +3 -3
  282. package/src/ColorPalette.js +1 -1
  283. package/src/ColorPaletteItem.js +2 -2
  284. package/src/ColorPalettePopover.hbs +1 -1
  285. package/src/ColorPalettePopover.js +3 -3
  286. package/src/ColorPicker.hbs +1 -0
  287. package/src/ColorPicker.js +42 -4
  288. package/src/ComboBox.js +10 -4
  289. package/src/ComboBoxPopover.hbs +0 -1
  290. package/src/DatePicker.hbs +1 -1
  291. package/src/DatePicker.js +10 -8
  292. package/src/DatePickerPopover.hbs +0 -2
  293. package/src/DateRangePicker.js +7 -1
  294. package/src/Dialog.hbs +3 -2
  295. package/src/Dialog.js +35 -5
  296. package/src/FileUploader.js +2 -1
  297. package/src/FileUploaderPopover.hbs +3 -2
  298. package/src/Input.hbs +5 -1
  299. package/src/Input.js +87 -19
  300. package/src/InputPopover.hbs +3 -4
  301. package/src/Interfaces.js +1 -1
  302. package/src/Label.js +7 -1
  303. package/src/Link.js +16 -5
  304. package/src/List.hbs +1 -1
  305. package/src/List.js +6 -16
  306. package/src/ListItem.hbs +1 -1
  307. package/src/ListItem.js +1 -1
  308. package/src/MessageStrip.hbs +1 -1
  309. package/src/MessageStrip.js +0 -8
  310. package/src/MultiComboBox.js +186 -27
  311. package/src/MultiComboBoxPopover.hbs +0 -1
  312. package/src/MultiInput.js +55 -8
  313. package/src/Panel.hbs +4 -3
  314. package/src/Panel.js +7 -8
  315. package/src/Popover.hbs +2 -2
  316. package/src/Popover.js +39 -9
  317. package/src/Popup.hbs +1 -1
  318. package/src/Popup.js +61 -26
  319. package/src/ProgressIndicator.js +5 -0
  320. package/src/RadioButton.js +1 -1
  321. package/src/RangeSlider.js +6 -1
  322. package/src/RatingIndicator.hbs +2 -0
  323. package/src/RatingIndicator.js +2 -2
  324. package/src/ResponsivePopover.hbs +5 -5
  325. package/src/ResponsivePopover.js +15 -11
  326. package/src/SegmentedButton.js +2 -2
  327. package/src/SegmentedButtonItem.hbs +1 -1
  328. package/src/SegmentedButtonItem.js +7 -2
  329. package/src/Select.js +9 -5
  330. package/src/SelectPopover.hbs +0 -1
  331. package/src/Slider.js +5 -0
  332. package/src/SliderBase.js +4 -3
  333. package/src/SplitButton.js +11 -5
  334. package/src/StepInput.hbs +4 -3
  335. package/src/StepInput.js +4 -4
  336. package/src/Switch.hbs +1 -1
  337. package/src/Switch.js +13 -1
  338. package/src/TabContainer.hbs +3 -3
  339. package/src/TabContainer.js +44 -3
  340. package/src/TabContainerPopover.hbs +1 -1
  341. package/src/Table.hbs +11 -1
  342. package/src/Table.js +243 -4
  343. package/src/TableColumn.js +0 -7
  344. package/src/TableGroupRow.hbs +1 -0
  345. package/src/TableGroupRow.js +4 -0
  346. package/src/TableRow.hbs +2 -0
  347. package/src/TableRow.js +87 -8
  348. package/src/TextArea.hbs +1 -1
  349. package/src/TextArea.js +9 -4
  350. package/src/TextAreaPopover.hbs +0 -1
  351. package/src/TimePickerPopover.hbs +0 -1
  352. package/src/Tokenizer.hbs +2 -1
  353. package/src/Tokenizer.js +196 -10
  354. package/src/Tree.js +5 -1
  355. package/src/TreeItem.js +2 -2
  356. package/src/TreeListItem.js +5 -2
  357. package/src/features/InputSuggestions.js +4 -0
  358. package/src/i18n/messagebundle.properties +3 -0
  359. package/src/i18n/messagebundle_ar.properties +5 -0
  360. package/src/i18n/messagebundle_bg.properties +5 -0
  361. package/src/i18n/messagebundle_ca.properties +5 -0
  362. package/src/i18n/messagebundle_cs.properties +5 -0
  363. package/src/i18n/messagebundle_cy.properties +5 -0
  364. package/src/i18n/messagebundle_da.properties +5 -0
  365. package/src/i18n/messagebundle_de.properties +5 -0
  366. package/src/i18n/messagebundle_el.properties +5 -0
  367. package/src/i18n/messagebundle_en.properties +5 -0
  368. package/src/i18n/messagebundle_en_GB.properties +5 -0
  369. package/src/i18n/messagebundle_en_US_sappsd.properties +5 -0
  370. package/src/i18n/messagebundle_en_US_saprigi.properties +2 -0
  371. package/src/i18n/messagebundle_en_US_saptrc.properties +5 -0
  372. package/src/i18n/messagebundle_es.properties +5 -0
  373. package/src/i18n/messagebundle_es_MX.properties +5 -0
  374. package/src/i18n/messagebundle_et.properties +5 -0
  375. package/src/i18n/messagebundle_fi.properties +5 -0
  376. package/src/i18n/messagebundle_fr.properties +5 -0
  377. package/src/i18n/messagebundle_fr_CA.properties +5 -0
  378. package/src/i18n/messagebundle_hi.properties +5 -0
  379. package/src/i18n/messagebundle_hr.properties +5 -0
  380. package/src/i18n/messagebundle_hu.properties +5 -0
  381. package/src/i18n/messagebundle_id.properties +5 -0
  382. package/src/i18n/messagebundle_it.properties +5 -0
  383. package/src/i18n/messagebundle_iw.properties +5 -0
  384. package/src/i18n/messagebundle_ja.properties +7 -2
  385. package/src/i18n/messagebundle_kk.properties +5 -0
  386. package/src/i18n/messagebundle_ko.properties +5 -0
  387. package/src/i18n/messagebundle_lt.properties +5 -0
  388. package/src/i18n/messagebundle_lv.properties +5 -0
  389. package/src/i18n/messagebundle_ms.properties +5 -0
  390. package/src/i18n/messagebundle_nl.properties +5 -0
  391. package/src/i18n/messagebundle_no.properties +5 -0
  392. package/src/i18n/messagebundle_pl.properties +5 -0
  393. package/src/i18n/messagebundle_pt.properties +5 -0
  394. package/src/i18n/messagebundle_pt_PT.properties +5 -0
  395. package/src/i18n/messagebundle_ro.properties +5 -0
  396. package/src/i18n/messagebundle_ru.properties +5 -0
  397. package/src/i18n/messagebundle_sh.properties +5 -0
  398. package/src/i18n/messagebundle_sk.properties +5 -0
  399. package/src/i18n/messagebundle_sl.properties +5 -0
  400. package/src/i18n/messagebundle_sv.properties +5 -0
  401. package/src/i18n/messagebundle_th.properties +5 -0
  402. package/src/i18n/messagebundle_tr.properties +5 -0
  403. package/src/i18n/messagebundle_uk.properties +5 -0
  404. package/src/i18n/messagebundle_vi.properties +5 -0
  405. package/src/i18n/messagebundle_zh_CN.properties +5 -0
  406. package/src/i18n/messagebundle_zh_TW.properties +5 -0
  407. package/src/themes/Avatar.css +1 -0
  408. package/src/themes/Button.css +1 -1
  409. package/src/themes/Calendar.css +6 -1
  410. package/src/themes/ColorPalettePopover.css +6 -5
  411. package/src/themes/DatePickerPopover.css +4 -0
  412. package/src/themes/Dialog.css +1 -5
  413. package/src/themes/Input.css +1 -0
  414. package/src/themes/ListItemBase.css +11 -5
  415. package/src/themes/MultiComboBox.css +0 -1
  416. package/src/themes/Popover.css +1 -1
  417. package/src/themes/PopupGlobal.css +1 -4
  418. package/src/themes/PopupsCommon.css +44 -4
  419. package/src/themes/ResponsivePopover.css +2 -7
  420. package/src/themes/ResponsivePopoverCommon.css +1 -0
  421. package/src/themes/SelectPopover.css +11 -2
  422. package/src/themes/SplitButton.css +1 -1
  423. package/src/themes/Suggestions.css +15 -1
  424. package/src/themes/TabInOverflow.css +5 -1
  425. package/src/themes/TableRow.css +1 -0
  426. package/src/themes/TimePickerPopover.css +4 -0
  427. package/src/themes/Tokenizer.css +1 -0
  428. package/src/themes/TokenizerPopover.css +4 -0
  429. package/src/themes/ValueStateMessage.css +10 -0
  430. package/src/themes/base/Badge-parameters.css +10 -10
  431. package/src/themes/base/DayPicker-parameters.css +2 -2
  432. package/src/themes/base/Dialog-parameters.css +1 -1
  433. package/src/themes/base/ListItemBase-parameters.css +1 -0
  434. package/src/themes/base/PopupsCommon-parameters.css +6 -1
  435. package/src/themes/base/SliderBase-parameters.css +7 -0
  436. package/src/themes/base/Switch-parameters.css +2 -13
  437. package/src/themes/base/sizes-parameters.css +7 -7
  438. package/src/themes/sap_belize_hcb/Switch-parameters.css +2 -4
  439. package/src/themes/sap_belize_hcw/Switch-parameters.css +2 -4
  440. package/src/themes/sap_fiori_3_hcb/DayPicker-parameters.css +0 -2
  441. package/src/themes/sap_fiori_3_hcb/Switch-parameters.css +2 -4
  442. package/src/themes/sap_fiori_3_hcw/DayPicker-parameters.css +0 -2
  443. package/src/themes/sap_fiori_3_hcw/Switch-parameters.css +2 -4
  444. package/src/themes/sap_horizon/Dialog-parameters.css +1 -1
  445. package/src/themes/sap_horizon/ListItemBase-parameters.css +1 -2
  446. package/src/themes/sap_horizon/PopupsCommon-parameters.css +0 -1
  447. package/src/themes/sap_horizon/Switch-parameters.css +7 -7
  448. package/src/themes/sap_horizon_exp/Switch-parameters.css +1 -1
package/src/TableRow.js CHANGED
@@ -1,7 +1,14 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
- import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
3
2
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
4
3
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
4
+ import {
5
+ isSpace,
6
+ isEnter,
7
+ isF7,
8
+ isTabNext,
9
+ isTabPrevious,
10
+ } from "@ui5/webcomponents-base/dist/Keys.js";
11
+ import CheckBox from "./CheckBox.js";
5
12
  import TableMode from "./types/TableMode.js";
6
13
  import TableRowType from "./types/TableRowType.js";
7
14
  import TableRowTemplate from "./generated/templates/TableRowTemplate.lit.js";
@@ -106,6 +113,13 @@ const metadata = {
106
113
  defaultValue: "",
107
114
  noAttribute: true,
108
115
  },
116
+ _tabbableElements: {
117
+ type: Object,
118
+ multiple: true,
119
+ },
120
+ _tabMarked: {
121
+ type: Boolean,
122
+ },
109
123
  },
110
124
  events: /** @lends sap.ui.webcomponents.main.TableRow.prototype */ {
111
125
  /**
@@ -170,6 +184,10 @@ class TableRow extends UI5Element {
170
184
  return TableRowTemplate;
171
185
  }
172
186
 
187
+ static get dependencies() {
188
+ return [CheckBox];
189
+ }
190
+
173
191
  _onmouseup() {
174
192
  this.deactivate();
175
193
  }
@@ -178,9 +196,17 @@ class TableRow extends UI5Element {
178
196
  const itemActive = this.type === TableRowType.Active;
179
197
  const isSingleSelect = this.isSingleSelect;
180
198
  const itemSelectable = isSingleSelect || this.isMultiSelect;
181
- const isRowFocused = this._getActiveElementTagName() === "ui5-table-row";
199
+ const isRowFocused = this._activeElementHasAttribute("ui5-table-row");
182
200
  const checkboxPressed = event.target.classList.contains("ui5-multi-select-checkbox");
183
201
 
202
+ if (isTabNext(event) || isTabPrevious(event)) {
203
+ this._tabMarked = true;
204
+ }
205
+
206
+ if (isTabNext(event) || isTabPrevious(event)) {
207
+ this._tabMarked = true;
208
+ }
209
+
184
210
  if (isSpace(event) && event.target.tagName.toLowerCase() === "tr") {
185
211
  event.preventDefault();
186
212
  }
@@ -197,6 +223,11 @@ class TableRow extends UI5Element {
197
223
  }
198
224
  }
199
225
  }
226
+
227
+ if (isF7(event)) {
228
+ event.preventDefault();
229
+ this._handleF7(event.target);
230
+ }
200
231
  }
201
232
 
202
233
  _onkeyup(event) {
@@ -213,16 +244,26 @@ class TableRow extends UI5Element {
213
244
  this.deactivate();
214
245
  }
215
246
 
216
- _onfocusout() {
247
+ _onfocusout(event) {
217
248
  this.deactivate();
249
+
250
+ if (!this._tabMarked) {
251
+ this._tabbableElements.forEach(el => el.setAttribute("tabindex", -1));
252
+ } else {
253
+ this._tabMarked = false;
254
+ }
218
255
  }
219
256
 
220
257
  _onfocusin(event, forceSelfFocus = false) {
221
- if (forceSelfFocus || this._getActiveElementTagName() === "ui5-table-cell") {
222
- this.shadowRoot.querySelector(".ui5-table-row-root").focus();
258
+ const tableRowRoot = this.shadowRoot.querySelector(".ui5-table-row-root");
259
+
260
+ if (forceSelfFocus || this._activeElementHasAttribute("ui5-table-cell")) {
261
+ tableRowRoot.focus();
223
262
  this.activate();
224
263
  }
225
264
 
265
+ this._tabbableElements.forEach(el => el.setAttribute("tabindex", 0));
266
+
226
267
  this.fireEvent("_focused", event);
227
268
  }
228
269
 
@@ -244,7 +285,7 @@ class TableRow extends UI5Element {
244
285
  this.deactivate();
245
286
  }
246
287
 
247
- if (this._getActiveElementTagName() === "ui5-table-row") {
288
+ if (this._activeElementHasAttribute("ui5-table-row")) {
248
289
  if (this.isSingleSelect) {
249
290
  this._handleSelection();
250
291
  }
@@ -259,8 +300,46 @@ class TableRow extends UI5Element {
259
300
  this.fireEvent("selection-requested", { row: this });
260
301
  }
261
302
 
262
- _getActiveElementTagName() {
263
- return this.getRootNode().activeElement.localName.toLocaleLowerCase();
303
+ /**
304
+ * Toggles focus between the table row's root and the last focused nested element.
305
+ * @private
306
+ * @param {Object} activeElement The currently focused element
307
+ */
308
+ _handleF7(activeElement) {
309
+ const elements = this._tabbableElements;
310
+
311
+ if (!elements.length) {
312
+ return;
313
+ }
314
+
315
+ const table = this.parentElement;
316
+ const tableRowRoot = this.shadowRoot.querySelector(".ui5-table-row-root");
317
+ const prevFocusedIdx = table._prevNestedElementIndex;
318
+
319
+ if (activeElement === tableRowRoot) {
320
+ const lastFocusedElement = elements[prevFocusedIdx];
321
+
322
+ if (lastFocusedElement) {
323
+ lastFocusedElement.focus();
324
+ } else {
325
+ elements[0].focus();
326
+ }
327
+
328
+ return;
329
+ }
330
+
331
+ const shadowRoot = activeElement.shadowRoot;
332
+ const target = shadowRoot ? shadowRoot.activeElement : activeElement;
333
+ const targetIndex = elements.indexOf(target);
334
+
335
+ if (targetIndex > -1) {
336
+ table._prevNestedElementIndex = targetIndex;
337
+ tableRowRoot.focus();
338
+ }
339
+ }
340
+
341
+ _activeElementHasAttribute(attr) {
342
+ return this.getRootNode().activeElement.hasAttribute(attr);
264
343
  }
265
344
 
266
345
  activate() {
package/src/TextArea.hbs CHANGED
@@ -1,7 +1,6 @@
1
1
  <div
2
2
  class="ui5-textarea-root"
3
3
  style="{{styles.main}}"
4
- ?aria-invalid="{{ariaInvalid}}"
5
4
  @focusin="{{_onfocusin}}"
6
5
  @focusout="{{_onfocusout}}"
7
6
  >
@@ -23,6 +22,7 @@
23
22
  ?readonly="{{readonly}}"
24
23
  aria-label="{{ariaLabelText}}"
25
24
  aria-describedby="{{ariaDescribedBy}}"
25
+ aria-invalid="{{ariaInvalid}}"
26
26
  aria-required="{{required}}"
27
27
  maxlength="{{_exceededTextProps.calcedMaxLength}}"
28
28
  .value="{{value}}"
package/src/TextArea.js CHANGED
@@ -9,6 +9,11 @@ import { isIE } from "@ui5/webcomponents-base/dist/Device.js";
9
9
  import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
10
10
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
11
11
  import Popover from "./Popover.js";
12
+ import Icon from "./Icon.js";
13
+ import "@ui5/webcomponents-icons/dist/error.js";
14
+ import "@ui5/webcomponents-icons/dist/alert.js";
15
+ import "@ui5/webcomponents-icons/dist/sys-enter-2.js";
16
+ import "@ui5/webcomponents-icons/dist/information.js";
12
17
 
13
18
  import TextAreaTemplate from "./generated/templates/TextAreaTemplate.lit.js";
14
19
  import TextAreaPopoverTemplate from "./generated/templates/TextAreaPopoverTemplate.lit.js";
@@ -213,9 +218,9 @@ const metadata = {
213
218
  },
214
219
 
215
220
  /**
216
- * Sets the accessible aria name of the component.
221
+ * Defines the accessible aria name of the component.
217
222
  *
218
- * @type {String}
223
+ * @type {string}
219
224
  * @public
220
225
  * @since 1.0.0-rc.15
221
226
  */
@@ -226,7 +231,7 @@ const metadata = {
226
231
  /**
227
232
  * Receives id(or many ids) of the elements that label the textarea.
228
233
  *
229
- * @type {String}
234
+ * @type {string}
230
235
  * @defaultvalue ""
231
236
  * @public
232
237
  * @since 1.0.0-rc.15
@@ -684,7 +689,7 @@ class TextArea extends UI5Element {
684
689
  }
685
690
 
686
691
  static get dependencies() {
687
- return [Popover];
692
+ return [Popover, Icon];
688
693
  }
689
694
 
690
695
  static async onDefine() {
@@ -2,7 +2,6 @@
2
2
  <ui5-popover
3
3
  skip-registry-update
4
4
  prevent-focus-restore
5
- no-padding
6
5
  hide-arrow
7
6
  _disable-initial-focus
8
7
  class="ui5-valuestatemessage-popover"
@@ -6,7 +6,6 @@
6
6
  allow-target-overlap
7
7
  _hide-header
8
8
  hide-arrow
9
- stay-open-on-scroll
10
9
  @ui5-after-close="{{onResponsivePopoverAfterClose}}"
11
10
  @wheel="{{_handleWheel}}"
12
11
  @keydown="{{_onkeydown}}"
package/src/Tokenizer.hbs CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <div
8
8
  class="{{classes.content}}"
9
- @ui5-delete="{{_tokenDelete}}"
9
+ @ui5-delete="{{_delete}}"
10
10
  @click="{{_click}}"
11
11
  @mousedown="{{_onmousedown}}"
12
12
  @keydown="{{_onkeydown}}"
@@ -25,3 +25,4 @@
25
25
  >{{_nMoreText}}</span>
26
26
  {{/if}}
27
27
  </div>
28
+
package/src/Tokenizer.js CHANGED
@@ -5,11 +5,27 @@ import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation
5
5
  import ScrollEnablement from "@ui5/webcomponents-base/dist/delegate/ScrollEnablement.js";
6
6
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
7
7
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
- import { isSpace } from "@ui5/webcomponents-base/dist/Keys.js";
8
+ import {
9
+ isSpace,
10
+ isLeftCtrl,
11
+ isRightCtrl,
12
+ isLeftShift,
13
+ isRightShift,
14
+ isLeftShiftCtrl,
15
+ isRightShiftCtrl,
16
+ isEnd,
17
+ isHome,
18
+ isHomeShift,
19
+ isEndShift,
20
+ isHomeCtrl,
21
+ isEndCtrl,
22
+ } from "@ui5/webcomponents-base/dist/Keys.js";
9
23
  import { isPhone } from "@ui5/webcomponents-base/dist/Device.js";
10
24
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
11
25
  import ResponsivePopover from "./ResponsivePopover.js";
12
26
  import List from "./List.js";
27
+ import Title from "./Title.js";
28
+ import Button from "./Button.js";
13
29
  import StandardListItem from "./StandardListItem.js";
14
30
  import TokenizerTemplate from "./generated/templates/TokenizerTemplate.lit.js";
15
31
  import TokenizerPopoverTemplate from "./generated/templates/TokenizerPopoverTemplate.lit.js";
@@ -24,6 +40,7 @@ import {
24
40
 
25
41
  // Styles
26
42
  import styles from "./generated/themes/Tokenizer.css.js";
43
+ import TokenizerPopoverCss from "./generated/themes/TokenizerPopover.css.js";
27
44
  import ResponsivePopoverCommonCss from "./generated/themes/ResponsivePopoverCommon.css.js";
28
45
  import ValueStateMessageCss from "./generated/themes/ValueStateMessage.css.js";
29
46
 
@@ -128,7 +145,7 @@ class Tokenizer extends UI5Element {
128
145
  }
129
146
 
130
147
  static get staticAreaStyles() {
131
- return [ResponsivePopoverCommonCss, ValueStateMessageCss, SuggestionsCss];
148
+ return [ResponsivePopoverCommonCss, ValueStateMessageCss, SuggestionsCss, TokenizerPopoverCss];
132
149
  }
133
150
 
134
151
  static get staticAreaTemplate() {
@@ -205,16 +222,36 @@ class Tokenizer extends UI5Element {
205
222
  this._scrollEnablement.scrollContainer = this.expanded ? this.contentDom : this;
206
223
  }
207
224
 
208
- _tokenDelete(event) {
225
+ _delete(event) {
226
+ if (this._selectedTokens.length) {
227
+ this._selectedTokens.forEach(token => this._tokenDelete(event, token));
228
+ } else {
229
+ this._tokenDelete(event);
230
+ }
231
+ }
232
+
233
+ _tokenDelete(event, token) {
209
234
  let nextTokenIndex; // The index of the next token that needs to be focused next due to the deletion
210
- const deletedTokenIndex = this._getVisibleTokens().indexOf(event.target); // The index of the token that just got deleted
235
+
236
+ const tokens = this._getVisibleTokens();
237
+ const deletedTokenIndex = token ? tokens.indexOf(token) : tokens.indexOf(event.target); // The index of the token that just got deleted
238
+ const notSelectedTokens = tokens.filter(t => !t.selected);
211
239
 
212
240
  if (event.detail && event.detail.backSpace) { // on backspace key select the previous item (unless deleting the first)
213
241
  nextTokenIndex = deletedTokenIndex === 0 ? deletedTokenIndex + 1 : deletedTokenIndex - 1;
214
242
  } else { // on delete key or mouse click on the "x" select the next item (unless deleting the last)
215
- nextTokenIndex = deletedTokenIndex === this._getVisibleTokens().length - 1 ? deletedTokenIndex - 1 : deletedTokenIndex + 1;
243
+ nextTokenIndex = deletedTokenIndex === tokens.length - 1 ? deletedTokenIndex - 1 : deletedTokenIndex + 1;
244
+ }
245
+
246
+ let nextToken = tokens[nextTokenIndex]; // if the last item was deleted this will be undefined
247
+
248
+ if (notSelectedTokens.length > 1) {
249
+ while (nextToken && nextToken.selected) {
250
+ nextToken = event.detail.backSpace ? tokens[--nextTokenIndex] : tokens[++nextTokenIndex];
251
+ }
252
+ } else {
253
+ nextToken = notSelectedTokens[0];
216
254
  }
217
- const nextToken = this._getVisibleTokens()[nextTokenIndex]; // if the last item was deleted this will be undefined
218
255
 
219
256
  if (nextToken && !isPhone()) {
220
257
  this._itemNav.setCurrentItem(nextToken); // update the item navigation with the new token or undefined, if the last was deleted
@@ -224,7 +261,7 @@ class Tokenizer extends UI5Element {
224
261
  }, 0);
225
262
  }
226
263
 
227
- this.fireEvent("token-delete", { ref: event.target });
264
+ this.fireEvent("token-delete", { ref: token || event.target });
228
265
  }
229
266
 
230
267
  itemDelete(event) {
@@ -237,8 +274,121 @@ class Tokenizer extends UI5Element {
237
274
  if (isSpace(event)) {
238
275
  event.preventDefault();
239
276
 
240
- this._handleTokenSelection(event);
277
+ return this._handleTokenSelection(event, false);
278
+ }
279
+
280
+ if (isHomeShift(event)) {
281
+ this._handleHomeShift(event);
241
282
  }
283
+
284
+ if (isEndShift(event)) {
285
+ this._handleEndShift(event);
286
+ }
287
+
288
+ this._handleItemNavigation(event, this.tokens);
289
+ }
290
+
291
+ _handleItemNavigation(event, tokens) {
292
+ const isCtrl = !!(event.metaKey || event.ctrlKey);
293
+ if (isLeftCtrl(event) || isRightCtrl(event)) {
294
+ event.preventDefault();
295
+ return this._handleArrowCtrl(event.target, tokens, isRightCtrl(event));
296
+ }
297
+
298
+ if (isLeftCtrl(event)) {
299
+ event.preventDefault();
300
+ return this._handleArrowCtrl(event.target, tokens, false);
301
+ }
302
+
303
+ if (isLeftShift(event) || isRightShift(event) || isLeftShiftCtrl(event) || isRightShiftCtrl(event)) {
304
+ event.preventDefault();
305
+ return this._handleArrowShift(event.target, tokens, (isRightShift(event) || isRightShiftCtrl(event)));
306
+ }
307
+
308
+ if (isHome(event) || isEnd(event) || isHomeCtrl(event) || isEndCtrl(event)) {
309
+ event.preventDefault();
310
+ return this._handleHome(tokens, isEnd(event) || isEndCtrl(event));
311
+ }
312
+
313
+ if (isCtrl && event.key.toLowerCase() === "a") {
314
+ event.preventDefault();
315
+
316
+ return this._toggleTokenSelection(tokens);
317
+ }
318
+ }
319
+
320
+ _handleHome(tokens, endKeyPressed) {
321
+ if (!tokens || !tokens.length) {
322
+ return -1;
323
+ }
324
+
325
+ const index = endKeyPressed ? tokens.length - 1 : 0;
326
+
327
+ tokens[index].focus();
328
+ this._itemNav.setCurrentItem(tokens[index]);
329
+ }
330
+
331
+ _handleHomeShift(event) {
332
+ const tokens = this.tokens;
333
+ const currentTokenIdx = tokens.indexOf(event.target);
334
+
335
+ tokens.filter((token, index) => index <= currentTokenIdx).forEach(token => {
336
+ token.selected = true;
337
+ });
338
+
339
+ tokens[0].focus();
340
+ this._itemNav.setCurrentItem(tokens[0]);
341
+ }
342
+
343
+ _handleEndShift(event) {
344
+ const tokens = this.tokens;
345
+ const currentTokenIdx = tokens.indexOf(event.target);
346
+
347
+ tokens.filter((token, index) => index >= currentTokenIdx).forEach(token => {
348
+ token.selected = true;
349
+ });
350
+
351
+ tokens[tokens.length - 1].focus();
352
+ this._itemNav.setCurrentItem(tokens[tokens.length - 1]);
353
+ }
354
+
355
+ _calcNextTokenIndex(focusedToken, tokens, backwards) {
356
+ if (!tokens.length) {
357
+ return -1;
358
+ }
359
+ const focusedTokenIndex = tokens.indexOf(focusedToken);
360
+ let nextIndex = backwards ? (focusedTokenIndex + 1) : (focusedTokenIndex - 1);
361
+
362
+ if (nextIndex >= tokens.length) {
363
+ nextIndex = tokens.length - 1;
364
+ }
365
+ if (nextIndex < 0) {
366
+ nextIndex = 0;
367
+ }
368
+
369
+ return nextIndex;
370
+ }
371
+
372
+ _handleArrowCtrl(focusedToken, tokens, backwards) {
373
+ const nextIndex = this._calcNextTokenIndex(focusedToken, tokens, backwards);
374
+ if (nextIndex === -1) {
375
+ return;
376
+ }
377
+
378
+ tokens[nextIndex].focus();
379
+ this._itemNav.setCurrentItem(tokens[nextIndex]);
380
+ }
381
+
382
+ _handleArrowShift(focusedToken, tokens, backwards) {
383
+ const nextIndex = this._calcNextTokenIndex(focusedToken, tokens, backwards);
384
+ if (nextIndex === -1) {
385
+ return;
386
+ }
387
+
388
+ focusedToken.selected = true;
389
+ tokens[nextIndex].selected = true;
390
+ tokens[nextIndex].focus();
391
+ this._itemNav.setCurrentItem(tokens[nextIndex]);
242
392
  }
243
393
 
244
394
  _click(event) {
@@ -249,9 +399,20 @@ class Tokenizer extends UI5Element {
249
399
  this._itemNav.setCurrentItem(event.target);
250
400
  }
251
401
 
252
- _handleTokenSelection(event) {
402
+ _toggleTokenSelection(tokens) {
403
+ if (!tokens || !tokens.length) {
404
+ return;
405
+ }
406
+
407
+ const tokensAreSelected = tokens.every(token => token.selected);
408
+ tokens.forEach(token => { token.selected = !tokensAreSelected; });
409
+ }
410
+
411
+ _handleTokenSelection(event, deselectAll = true) {
253
412
  if (event.target.hasAttribute("ui5-token")) {
254
- this._tokens.forEach(token => {
413
+ const deselectTokens = deselectAll ? this._tokens : [event.target];
414
+
415
+ deselectTokens.forEach(token => {
255
416
  if (token !== event.target) {
256
417
  token.selected = false;
257
418
  }
@@ -259,6 +420,25 @@ class Tokenizer extends UI5Element {
259
420
  }
260
421
  }
261
422
 
423
+ _fillClipboard(shortcutName, tokens) {
424
+ const tokensTexts = tokens.filter(token => token.selected).map(token => token.text).join("\r\n");
425
+
426
+ /* fill clipboard with tokens' texts so parent can handle creation */
427
+ const cutToClipboard = event => {
428
+ if (event.clipboardData) {
429
+ event.clipboardData.setData("text/plain", tokensTexts);
430
+ } else {
431
+ event.originalEvent.clipboardData.setData("text/plain", tokensTexts);
432
+ }
433
+
434
+ event.preventDefault();
435
+ };
436
+
437
+ document.addEventListener(shortcutName, cutToClipboard);
438
+ document.execCommand(shortcutName);
439
+ document.removeEventListener(shortcutName, cutToClipboard);
440
+ }
441
+
262
442
  /**
263
443
  * Scrolls the container of the tokens to its beginning.
264
444
  * This method is used by MultiInput and MultiComboBox.
@@ -332,6 +512,10 @@ class Tokenizer extends UI5Element {
332
512
  return isPhone();
333
513
  }
334
514
 
515
+ get _selectedTokens() {
516
+ return this._getTokens().filter(token => token.selected);
517
+ }
518
+
335
519
  get classes() {
336
520
  return {
337
521
  wrapper: {
@@ -404,6 +588,8 @@ class Tokenizer extends UI5Element {
404
588
  ResponsivePopover,
405
589
  List,
406
590
  StandardListItem,
591
+ Title,
592
+ Button,
407
593
  ];
408
594
  }
409
595
 
package/src/Tree.js CHANGED
@@ -188,6 +188,7 @@ const metadata = {
188
188
  * Fired when a tree item is activated.
189
189
  *
190
190
  * @event sap.ui.webcomponents.main.Tree#item-click
191
+ * @allowPreventDefault
191
192
  * @param {HTMLElement} item The clicked item.
192
193
  * @public
193
194
  */
@@ -354,7 +355,10 @@ class Tree extends UI5Element {
354
355
  _onListItemClick(event) {
355
356
  const listItem = event.detail.item;
356
357
  const treeItem = listItem.treeItem;
357
- this.fireEvent("item-click", { item: treeItem });
358
+
359
+ if (!this.fireEvent("item-click", { item: treeItem }, true)) {
360
+ event.preventDefault();
361
+ }
358
362
  }
359
363
 
360
364
  _onListItemDelete(event) {
package/src/TreeItem.js CHANGED
@@ -12,7 +12,7 @@ const metadata = {
12
12
  * Defines the text of the tree item.
13
13
  *
14
14
  * @public
15
- * @type {String}
15
+ * @type {string}
16
16
  * @defaultValue ""
17
17
  */
18
18
  text: {
@@ -82,7 +82,7 @@ const metadata = {
82
82
  * If set, an icon will be displayed before the text, representing the tree item.
83
83
  *
84
84
  * @public
85
- * @type {String}
85
+ * @type {string}
86
86
  * @defaultValue ""
87
87
  */
88
88
  icon: {
@@ -43,7 +43,7 @@ const metadata = {
43
43
  * If set, an icon will be displayed before the text of the tree list item.
44
44
  *
45
45
  * @public
46
- * @type {String}
46
+ * @type {string}
47
47
  * @defaultValue ""
48
48
  */
49
49
  icon: {
@@ -331,7 +331,10 @@ class TreeListItem extends ListItem {
331
331
  }
332
332
 
333
333
  static async onDefine() {
334
- TreeListItem.i18nBundle = await getI18nBundle("@ui5/webcomponents");
334
+ [TreeListItem.i18nBundle] = await Promise.all([
335
+ getI18nBundle("@ui5/webcomponents"),
336
+ super.onDefine(),
337
+ ]);
335
338
  }
336
339
  }
337
340
 
@@ -7,6 +7,8 @@ import ResponsivePopover from "../ResponsivePopover.js";
7
7
  import SuggestionItem from "../SuggestionItem.js";
8
8
  import SuggestionGroupItem from "../SuggestionGroupItem.js";
9
9
  import Button from "../Button.js";
10
+ import Icon from "../Icon.js";
11
+ import Popover from "../Popover.js";
10
12
  import GroupHeaderListItem from "../GroupHeaderListItem.js";
11
13
  import SuggestionListItem from "../SuggestionListItem.js";
12
14
 
@@ -578,6 +580,8 @@ class Suggestions {
578
580
  SuggestionListItem,
579
581
  GroupHeaderListItem,
580
582
  Button,
583
+ Icon,
584
+ Popover,
581
585
  ];
582
586
  }
583
587
 
@@ -256,6 +256,9 @@ TABCONTAINER_OVERFLOW_MENU_TITLE=Overflow Menu
256
256
  #XTXT Text for end overflow button in tab container
257
257
  TABCONTAINER_END_OVERFLOW=More
258
258
 
259
+ #XBUT Text for cancel button, which closes the popover on mobile devices
260
+ TABCONTAINER_POPOVER_CANCEL_BUTTON=Cancel
261
+
259
262
  #XTXT: Text for characters left
260
263
  TEXTAREA_CHARACTERS_LEFT={0} characters remaining
261
264
 
@@ -234,3 +234,8 @@ DAY_PICKER_TODAY=اليوم
234
234
  STEPINPUT_DEC_ICON_TITLE=تخفيض
235
235
 
236
236
  STEPINPUT_INC_ICON_TITLE=زيادة
237
+
238
+ SPLIT_BUTTON_DESCRIPTION=زر التقسيم
239
+
240
+ SPLIT_BUTTON_KEYBOARD_HINT=اضغط على Space أو Enter لبدء تشغيل الإجراء الافتراضي وAlt + Arrow Down أو F4 لبدء تشغيل إجراء السهم
241
+
@@ -234,3 +234,8 @@ DAY_PICKER_TODAY=Днес
234
234
  STEPINPUT_DEC_ICON_TITLE=Намаляване
235
235
 
236
236
  STEPINPUT_INC_ICON_TITLE=Увеличаване
237
+
238
+ SPLIT_BUTTON_DESCRIPTION=Бутон разделяне
239
+
240
+ SPLIT_BUTTON_KEYBOARD_HINT=Натиснете интервал или Enter, за да инициирате действие по подразбиране и Alt + стрелка надолу или F4, за да инициирате действие на стрелка.
241
+
@@ -234,3 +234,8 @@ DAY_PICKER_TODAY=Avui
234
234
  STEPINPUT_DEC_ICON_TITLE=Reduir
235
235
 
236
236
  STEPINPUT_INC_ICON_TITLE=Ampliar
237
+
238
+ SPLIT_BUTTON_DESCRIPTION=Polsador dividit
239
+
240
+ SPLIT_BUTTON_KEYBOARD_HINT=Premeu Espai o Intro per activar l'acció predeterminada i Alt + Fletxa avall o F4 per activar l'acció de fletxa
241
+
@@ -234,3 +234,8 @@ DAY_PICKER_TODAY=Dnes
234
234
  STEPINPUT_DEC_ICON_TITLE=Zmenšení
235
235
 
236
236
  STEPINPUT_INC_ICON_TITLE=Zvětšení
237
+
238
+ SPLIT_BUTTON_DESCRIPTION=Rozdělené tlačítko
239
+
240
+ SPLIT_BUTTON_KEYBOARD_HINT=Stisknutím mezerníku nebo Enter spustíte standardní akci a pomocí Alt + šipky dolů nebo F4 spustíte akci šipky
241
+
@@ -234,3 +234,8 @@ DAY_PICKER_TODAY=Heddiw
234
234
  STEPINPUT_DEC_ICON_TITLE=Lleihau
235
235
 
236
236
  STEPINPUT_INC_ICON_TITLE=Cynyddu
237
+
238
+ SPLIT_BUTTON_DESCRIPTION=Botwm Hollti
239
+
240
+ SPLIT_BUTTON_KEYBOARD_HINT=Pwyswch Space neu Enter i sbarduno cam gweithredu diofyn ac Alt + Saeth i Lawr neu F4 i sbarduno gweithred saeth
241
+
@@ -234,3 +234,8 @@ DAY_PICKER_TODAY=I dag
234
234
  STEPINPUT_DEC_ICON_TITLE=Formindsk
235
235
 
236
236
  STEPINPUT_INC_ICON_TITLE=Forstør
237
+
238
+ SPLIT_BUTTON_DESCRIPTION=Opdelt trykknap
239
+
240
+ SPLIT_BUTTON_KEYBOARD_HINT=Tryk på mellemrumstasten eller Enter for at udløse standardaktion og Alt + pil ned eller F4 for at udløse pileaktion
241
+