@ui5/webcomponents 1.0.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/dist/Breadcrumbs.js +8 -6
  3. package/dist/BreadcrumbsItem.js +1 -1
  4. package/dist/BusyIndicator.js +2 -3
  5. package/dist/Button.js +28 -1
  6. package/dist/Calendar.js +7 -0
  7. package/dist/Carousel.js +9 -0
  8. package/dist/CheckBox.js +34 -1
  9. package/dist/ColorPalette.js +5 -4
  10. package/dist/ColorPalettePopover.js +27 -2
  11. package/dist/ComboBox.js +91 -23
  12. package/dist/DateComponentBase.js +6 -8
  13. package/dist/DatePicker.js +10 -2
  14. package/dist/DateRangePicker.js +22 -0
  15. package/dist/Dialog.js +5 -22
  16. package/dist/Icon.js +11 -8
  17. package/dist/Input.js +107 -15
  18. package/dist/Link.js +32 -14
  19. package/dist/List.js +14 -4
  20. package/dist/MessageStrip.js +39 -2
  21. package/dist/MultiComboBox.js +7 -3
  22. package/dist/MultiComboBoxItem.js +1 -1
  23. package/dist/MultiInput.js +55 -8
  24. package/dist/Option.js +12 -1
  25. package/dist/Panel.js +9 -0
  26. package/dist/Popover.js +106 -57
  27. package/dist/Popup.js +16 -2
  28. package/dist/RadioButton.js +15 -3
  29. package/dist/RatingIndicator.js +37 -7
  30. package/dist/ResponsivePopover.js +1 -0
  31. package/dist/SegmentedButton.js +14 -1
  32. package/dist/Select.js +2 -1
  33. package/dist/SliderBase.js +4 -0
  34. package/dist/SplitButton.js +425 -0
  35. package/dist/Switch.js +18 -0
  36. package/dist/Tab.js +10 -6
  37. package/dist/TabContainer.js +480 -108
  38. package/dist/TabSeparator.js +42 -3
  39. package/dist/Table.js +15 -5
  40. package/dist/TextArea.js +9 -3
  41. package/dist/ToggleButton.js +5 -0
  42. package/dist/Tokenizer.js +134 -7
  43. package/dist/TreeItem.js +21 -0
  44. package/dist/TreeListItem.js +8 -0
  45. package/dist/api.json +299 -26
  46. package/dist/css/themes/Badge.css +1 -1
  47. package/dist/css/themes/Breadcrumbs.css +1 -1
  48. package/dist/css/themes/BrowserScrollbar.css +1 -1
  49. package/dist/css/themes/BusyIndicator.css +1 -1
  50. package/dist/css/themes/CardHeader.css +1 -1
  51. package/dist/css/themes/CheckBox.css +1 -1
  52. package/dist/css/themes/ComboBox.css +1 -1
  53. package/dist/css/themes/CustomListItem.css +1 -1
  54. package/dist/css/themes/Dialog.css +1 -1
  55. package/dist/css/themes/Input.css +1 -1
  56. package/dist/css/themes/List.css +1 -1
  57. package/dist/css/themes/MultiComboBox.css +1 -1
  58. package/dist/css/themes/Panel.css +1 -1
  59. package/dist/css/themes/Popover.css +1 -1
  60. package/dist/css/themes/PopupsCommon.css +1 -1
  61. package/dist/css/themes/RadioButton.css +1 -1
  62. package/dist/css/themes/RatingIndicator.css +1 -1
  63. package/dist/css/themes/Select.css +1 -1
  64. package/dist/css/themes/SliderBase.css +1 -1
  65. package/dist/css/themes/SplitButton.css +1 -0
  66. package/dist/css/themes/TabContainer.css +1 -1
  67. package/dist/css/themes/TabInOverflow.css +1 -1
  68. package/dist/css/themes/TabInStrip.css +1 -1
  69. package/dist/css/themes/TabSeparatorInOverflow.css +1 -0
  70. package/dist/css/themes/TabSeparatorInStrip.css +1 -0
  71. package/dist/css/themes/Table.css +1 -1
  72. package/dist/css/themes/TableColumn.css +1 -1
  73. package/dist/css/themes/TextArea.css +1 -1
  74. package/dist/css/themes/TimeSelection.css +1 -1
  75. package/dist/css/themes/Token.css +1 -1
  76. package/dist/css/themes/ValueStateMessage.css +1 -1
  77. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  78. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  79. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  80. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  81. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  82. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  83. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  84. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  85. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  86. package/dist/features/InputSuggestions.js +88 -15
  87. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  105. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  110. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  111. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  113. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  115. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  134. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  135. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  136. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  142. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  143. package/dist/generated/i18n/i18n-defaults.js +2 -2
  144. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +1 -1
  145. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  146. package/dist/generated/templates/BusyIndicatorTemplate.lit.js +1 -1
  147. package/dist/generated/templates/ButtonTemplate.lit.js +1 -1
  148. package/dist/generated/templates/CardHeaderTemplate.lit.js +1 -1
  149. package/dist/generated/templates/CarouselTemplate.lit.js +1 -1
  150. package/dist/generated/templates/CheckBoxTemplate.lit.js +1 -1
  151. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +1 -1
  152. package/dist/generated/templates/ComboBoxPopoverTemplate.lit.js +1 -1
  153. package/dist/generated/templates/ComboBoxTemplate.lit.js +1 -1
  154. package/dist/generated/templates/CustomListItemTemplate.lit.js +2 -2
  155. package/dist/generated/templates/DialogTemplate.lit.js +1 -1
  156. package/dist/generated/templates/InputPopoverTemplate.lit.js +3 -3
  157. package/dist/generated/templates/InputTemplate.lit.js +1 -1
  158. package/dist/generated/templates/LinkTemplate.lit.js +1 -1
  159. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  160. package/dist/generated/templates/MessageStripTemplate.lit.js +1 -1
  161. package/dist/generated/templates/MultiComboBoxPopoverTemplate.lit.js +1 -1
  162. package/dist/generated/templates/MultiInputTemplate.lit.js +1 -1
  163. package/dist/generated/templates/PanelTemplate.lit.js +1 -1
  164. package/dist/generated/templates/PopupBlockLayerTemplate.lit.js +1 -1
  165. package/dist/generated/templates/RangeSliderTemplate.lit.js +1 -1
  166. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +1 -1
  167. package/dist/generated/templates/SegmentedButtonTemplate.lit.js +1 -1
  168. package/dist/generated/templates/SelectPopoverTemplate.lit.js +2 -2
  169. package/dist/generated/templates/SliderBaseTemplate.lit.js +1 -1
  170. package/dist/generated/templates/SliderTemplate.lit.js +1 -1
  171. package/dist/generated/templates/SplitButtonTemplate.lit.js +7 -0
  172. package/dist/generated/templates/StandardListItemTemplate.lit.js +2 -2
  173. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +2 -2
  174. package/dist/generated/templates/SwitchTemplate.lit.js +1 -1
  175. package/dist/generated/templates/TabContainerPopoverTemplate.lit.js +4 -2
  176. package/dist/generated/templates/TabContainerTemplate.lit.js +9 -10
  177. package/dist/generated/templates/TabInOverflowTemplate.lit.js +1 -1
  178. package/dist/generated/templates/TabInStripTemplate.lit.js +1 -1
  179. package/dist/generated/templates/TabSeparatorInOverflowTemplate.lit.js +7 -0
  180. package/dist/generated/templates/TabSeparatorInStripTemplate.lit.js +7 -0
  181. package/dist/generated/templates/TableTemplate.lit.js +1 -1
  182. package/dist/generated/templates/TextAreaPopoverTemplate.lit.js +1 -1
  183. package/dist/generated/templates/ToggleButtonTemplate.lit.js +1 -1
  184. package/dist/generated/templates/TreeListItemTemplate.lit.js +2 -2
  185. package/dist/generated/templates/TreeTemplate.lit.js +1 -1
  186. package/dist/generated/themes/Badge.css.js +1 -1
  187. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  188. package/dist/generated/themes/BrowserScrollbar.css.js +1 -1
  189. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  190. package/dist/generated/themes/CardHeader.css.js +1 -1
  191. package/dist/generated/themes/CheckBox.css.js +1 -1
  192. package/dist/generated/themes/ComboBox.css.js +1 -1
  193. package/dist/generated/themes/CustomListItem.css.js +1 -1
  194. package/dist/generated/themes/Dialog.css.js +1 -1
  195. package/dist/generated/themes/Input.css.js +1 -1
  196. package/dist/generated/themes/List.css.js +1 -1
  197. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  198. package/dist/generated/themes/Panel.css.js +1 -1
  199. package/dist/generated/themes/Popover.css.js +1 -1
  200. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  201. package/dist/generated/themes/RadioButton.css.js +1 -1
  202. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  203. package/dist/generated/themes/Select.css.js +1 -1
  204. package/dist/generated/themes/SliderBase.css.js +1 -1
  205. package/dist/generated/themes/SplitButton.css.js +8 -0
  206. package/dist/generated/themes/TabContainer.css.js +1 -1
  207. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  208. package/dist/generated/themes/TabInStrip.css.js +1 -1
  209. package/dist/generated/themes/TabSeparatorInOverflow.css.js +8 -0
  210. package/dist/generated/themes/TabSeparatorInStrip.css.js +8 -0
  211. package/dist/generated/themes/Table.css.js +1 -1
  212. package/dist/generated/themes/TableColumn.css.js +1 -1
  213. package/dist/generated/themes/TextArea.css.js +1 -1
  214. package/dist/generated/themes/TimeSelection.css.js +1 -1
  215. package/dist/generated/themes/Token.css.js +1 -1
  216. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  217. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  218. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  219. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  220. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  221. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  222. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  223. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  224. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  225. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  226. package/dist/i18n/messagebundle.properties +26 -1
  227. package/dist/i18n/messagebundle_ar.properties +13 -1
  228. package/dist/i18n/messagebundle_bg.properties +13 -1
  229. package/dist/i18n/messagebundle_ca.properties +13 -1
  230. package/dist/i18n/messagebundle_cs.properties +13 -1
  231. package/dist/i18n/messagebundle_cy.properties +13 -1
  232. package/dist/i18n/messagebundle_da.properties +13 -1
  233. package/dist/i18n/messagebundle_de.properties +13 -1
  234. package/dist/i18n/messagebundle_el.properties +13 -1
  235. package/dist/i18n/messagebundle_en.properties +13 -1
  236. package/dist/i18n/messagebundle_en_GB.properties +13 -1
  237. package/dist/i18n/messagebundle_en_US_sappsd.properties +18 -1
  238. package/dist/i18n/messagebundle_en_US_saprigi.properties +18 -1
  239. package/dist/i18n/messagebundle_en_US_saptrc.properties +18 -1
  240. package/dist/i18n/messagebundle_es.properties +13 -1
  241. package/dist/i18n/messagebundle_es_MX.properties +13 -1
  242. package/dist/i18n/messagebundle_et.properties +13 -1
  243. package/dist/i18n/messagebundle_fi.properties +14 -2
  244. package/dist/i18n/messagebundle_fr.properties +13 -1
  245. package/dist/i18n/messagebundle_fr_CA.properties +13 -1
  246. package/dist/i18n/messagebundle_hi.properties +13 -1
  247. package/dist/i18n/messagebundle_hr.properties +13 -1
  248. package/dist/i18n/messagebundle_hu.properties +13 -1
  249. package/dist/i18n/messagebundle_id.properties +13 -1
  250. package/dist/i18n/messagebundle_it.properties +13 -1
  251. package/dist/i18n/messagebundle_iw.properties +13 -1
  252. package/dist/i18n/messagebundle_ja.properties +13 -1
  253. package/dist/i18n/messagebundle_kk.properties +13 -1
  254. package/dist/i18n/messagebundle_ko.properties +13 -1
  255. package/dist/i18n/messagebundle_lt.properties +13 -1
  256. package/dist/i18n/messagebundle_lv.properties +13 -1
  257. package/dist/i18n/messagebundle_ms.properties +13 -1
  258. package/dist/i18n/messagebundle_nl.properties +13 -1
  259. package/dist/i18n/messagebundle_no.properties +13 -1
  260. package/dist/i18n/messagebundle_pl.properties +13 -1
  261. package/dist/i18n/messagebundle_pt.properties +13 -1
  262. package/dist/i18n/messagebundle_pt_PT.properties +13 -1
  263. package/dist/i18n/messagebundle_ro.properties +13 -1
  264. package/dist/i18n/messagebundle_ru.properties +13 -1
  265. package/dist/i18n/messagebundle_sh.properties +13 -1
  266. package/dist/i18n/messagebundle_sk.properties +13 -1
  267. package/dist/i18n/messagebundle_sl.properties +13 -1
  268. package/dist/i18n/messagebundle_sv.properties +13 -1
  269. package/dist/i18n/messagebundle_th.properties +12 -0
  270. package/dist/i18n/messagebundle_tr.properties +13 -1
  271. package/dist/i18n/messagebundle_uk.properties +13 -1
  272. package/dist/i18n/messagebundle_vi.properties +13 -1
  273. package/dist/i18n/messagebundle_zh_CN.properties +13 -1
  274. package/dist/i18n/messagebundle_zh_TW.properties +12 -0
  275. package/dist/types/HasPopup.js +62 -0
  276. package/dist/types/TabsOverflowMode.js +40 -0
  277. package/package.json +9 -9
  278. package/src/Breadcrumbs.hbs +3 -2
  279. package/src/Breadcrumbs.js +8 -6
  280. package/src/BreadcrumbsItem.js +1 -1
  281. package/src/BreadcrumbsPopover.hbs +2 -2
  282. package/src/BusyIndicator.hbs +1 -1
  283. package/src/BusyIndicator.js +2 -3
  284. package/src/Button.hbs +1 -1
  285. package/src/Button.js +28 -1
  286. package/src/Calendar.js +7 -0
  287. package/src/CardHeader.hbs +12 -5
  288. package/src/Carousel.hbs +1 -0
  289. package/src/Carousel.js +9 -0
  290. package/src/CheckBox.hbs +1 -0
  291. package/src/CheckBox.js +34 -1
  292. package/src/ColorPalette.js +5 -4
  293. package/src/ColorPalettePopover.hbs +7 -5
  294. package/src/ColorPalettePopover.js +27 -2
  295. package/src/ComboBox.hbs +1 -0
  296. package/src/ComboBox.js +91 -23
  297. package/src/ComboBoxPopover.hbs +1 -0
  298. package/src/DateComponentBase.js +6 -8
  299. package/src/DatePicker.js +10 -2
  300. package/src/DateRangePicker.js +22 -0
  301. package/src/Dialog.hbs +1 -1
  302. package/src/Dialog.js +5 -22
  303. package/src/Icon.js +11 -8
  304. package/src/Input.hbs +1 -1
  305. package/src/Input.js +107 -15
  306. package/src/InputPopover.hbs +2 -3
  307. package/src/Link.hbs +2 -1
  308. package/src/Link.js +32 -14
  309. package/src/List.js +14 -4
  310. package/src/ListItem.hbs +1 -0
  311. package/src/MessageStrip.hbs +1 -1
  312. package/src/MessageStrip.js +39 -2
  313. package/src/MultiComboBox.js +7 -3
  314. package/src/MultiComboBoxItem.js +1 -1
  315. package/src/MultiComboBoxPopover.hbs +1 -1
  316. package/src/MultiInput.js +55 -8
  317. package/src/Option.js +12 -1
  318. package/src/Panel.hbs +1 -1
  319. package/src/Panel.js +9 -0
  320. package/src/Popover.js +106 -57
  321. package/src/Popup.js +16 -2
  322. package/src/PopupBlockLayer.hbs +1 -1
  323. package/src/RadioButton.js +15 -3
  324. package/src/RatingIndicator.js +37 -7
  325. package/src/ResponsivePopover.hbs +2 -0
  326. package/src/ResponsivePopover.js +1 -0
  327. package/src/SegmentedButton.hbs +1 -0
  328. package/src/SegmentedButton.js +14 -1
  329. package/src/Select.js +2 -1
  330. package/src/SelectPopover.hbs +2 -1
  331. package/src/SliderBase.hbs +1 -1
  332. package/src/SliderBase.js +4 -0
  333. package/src/SplitButton.hbs +53 -0
  334. package/src/SplitButton.js +425 -0
  335. package/src/Switch.hbs +1 -0
  336. package/src/Switch.js +18 -0
  337. package/src/Tab.js +10 -6
  338. package/src/TabContainer.hbs +48 -58
  339. package/src/TabContainer.js +480 -108
  340. package/src/TabContainerPopover.hbs +9 -6
  341. package/src/TabInOverflow.hbs +0 -1
  342. package/src/TabInStrip.hbs +3 -8
  343. package/src/TabSeparator.js +42 -3
  344. package/src/TabSeparatorInOverflow.hbs +8 -0
  345. package/src/TabSeparatorInStrip.hbs +6 -0
  346. package/src/Table.hbs +1 -1
  347. package/src/Table.js +15 -5
  348. package/src/TextArea.js +9 -3
  349. package/src/TextAreaPopover.hbs +1 -1
  350. package/src/ToggleButton.js +5 -0
  351. package/src/Tokenizer.js +134 -7
  352. package/src/Tree.hbs +1 -0
  353. package/src/TreeItem.js +21 -0
  354. package/src/TreeListItem.js +8 -0
  355. package/src/features/InputSuggestions.js +88 -15
  356. package/src/i18n/messagebundle.properties +26 -1
  357. package/src/i18n/messagebundle_ar.properties +13 -1
  358. package/src/i18n/messagebundle_bg.properties +13 -1
  359. package/src/i18n/messagebundle_ca.properties +13 -1
  360. package/src/i18n/messagebundle_cs.properties +13 -1
  361. package/src/i18n/messagebundle_cy.properties +13 -1
  362. package/src/i18n/messagebundle_da.properties +13 -1
  363. package/src/i18n/messagebundle_de.properties +13 -1
  364. package/src/i18n/messagebundle_el.properties +13 -1
  365. package/src/i18n/messagebundle_en.properties +13 -1
  366. package/src/i18n/messagebundle_en_GB.properties +13 -1
  367. package/src/i18n/messagebundle_en_US_sappsd.properties +18 -1
  368. package/src/i18n/messagebundle_en_US_saprigi.properties +18 -1
  369. package/src/i18n/messagebundle_en_US_saptrc.properties +18 -1
  370. package/src/i18n/messagebundle_es.properties +13 -1
  371. package/src/i18n/messagebundle_es_MX.properties +13 -1
  372. package/src/i18n/messagebundle_et.properties +13 -1
  373. package/src/i18n/messagebundle_fi.properties +14 -2
  374. package/src/i18n/messagebundle_fr.properties +13 -1
  375. package/src/i18n/messagebundle_fr_CA.properties +13 -1
  376. package/src/i18n/messagebundle_hi.properties +13 -1
  377. package/src/i18n/messagebundle_hr.properties +13 -1
  378. package/src/i18n/messagebundle_hu.properties +13 -1
  379. package/src/i18n/messagebundle_id.properties +13 -1
  380. package/src/i18n/messagebundle_it.properties +13 -1
  381. package/src/i18n/messagebundle_iw.properties +13 -1
  382. package/src/i18n/messagebundle_ja.properties +13 -1
  383. package/src/i18n/messagebundle_kk.properties +13 -1
  384. package/src/i18n/messagebundle_ko.properties +13 -1
  385. package/src/i18n/messagebundle_lt.properties +13 -1
  386. package/src/i18n/messagebundle_lv.properties +13 -1
  387. package/src/i18n/messagebundle_ms.properties +13 -1
  388. package/src/i18n/messagebundle_nl.properties +13 -1
  389. package/src/i18n/messagebundle_no.properties +13 -1
  390. package/src/i18n/messagebundle_pl.properties +13 -1
  391. package/src/i18n/messagebundle_pt.properties +13 -1
  392. package/src/i18n/messagebundle_pt_PT.properties +13 -1
  393. package/src/i18n/messagebundle_ro.properties +13 -1
  394. package/src/i18n/messagebundle_ru.properties +13 -1
  395. package/src/i18n/messagebundle_sh.properties +13 -1
  396. package/src/i18n/messagebundle_sk.properties +13 -1
  397. package/src/i18n/messagebundle_sl.properties +13 -1
  398. package/src/i18n/messagebundle_sv.properties +13 -1
  399. package/src/i18n/messagebundle_th.properties +12 -0
  400. package/src/i18n/messagebundle_tr.properties +13 -1
  401. package/src/i18n/messagebundle_uk.properties +13 -1
  402. package/src/i18n/messagebundle_vi.properties +13 -1
  403. package/src/i18n/messagebundle_zh_CN.properties +13 -1
  404. package/src/i18n/messagebundle_zh_TW.properties +12 -0
  405. package/src/themes/Badge.css +3 -1
  406. package/src/themes/Breadcrumbs.css +100 -99
  407. package/src/themes/BrowserScrollbar.css +2 -0
  408. package/src/themes/BusyIndicator.css +3 -3
  409. package/src/themes/CardHeader.css +7 -3
  410. package/src/themes/CheckBox.css +15 -7
  411. package/src/themes/CustomListItem.css +2 -1
  412. package/src/themes/Dialog.css +1 -0
  413. package/src/themes/Input.css +14 -0
  414. package/src/themes/List.css +1 -0
  415. package/src/themes/Panel.css +4 -0
  416. package/src/themes/Popover.css +4 -0
  417. package/src/themes/PopupsCommon.css +0 -1
  418. package/src/themes/RadioButton.css +4 -3
  419. package/src/themes/RatingIndicator.css +0 -1
  420. package/src/themes/SliderBase.css +3 -2
  421. package/src/themes/SplitButton.css +98 -0
  422. package/src/themes/TabContainer.css +17 -53
  423. package/src/themes/TabInOverflow.css +25 -21
  424. package/src/themes/TabInStrip.css +124 -100
  425. package/src/themes/TabSeparatorInOverflow.css +8 -0
  426. package/src/themes/TabSeparatorInStrip.css +5 -0
  427. package/src/themes/Table.css +1 -1
  428. package/src/themes/TableColumn.css +0 -1
  429. package/src/themes/TextArea.css +9 -1
  430. package/src/themes/TimeSelection.css +4 -0
  431. package/src/themes/Token.css +2 -1
  432. package/src/themes/Tokenizer.css +1 -1
  433. package/src/themes/ValueStateMessage.css +3 -3
  434. package/src/themes/base/BrowserScrollbar-parameters.css +4 -0
  435. package/src/themes/base/Card-parameters.css +1 -1
  436. package/src/themes/base/Input-parameters.css +5 -0
  437. package/src/themes/base/TabContainer-parameters.css +1 -1
  438. package/src/themes/base/TextArea-parameters.css +1 -0
  439. package/src/themes/base/Title-parameters.css +6 -6
  440. package/src/themes/base/Token-parameters.css +1 -0
  441. package/src/themes/base/sizes-parameters.css +2 -2
  442. package/src/themes/sap_belize/BrowserScrollbar-parameters.css +4 -0
  443. package/src/themes/sap_belize/Table-parameters.css +3 -0
  444. package/src/themes/sap_belize/parameters-bundle.css +1 -0
  445. package/src/themes/sap_belize_hcb/BrowserScrollbar-parameters.css +4 -0
  446. package/src/themes/sap_belize_hcb/Input-parameters.css +1 -0
  447. package/src/themes/sap_belize_hcb/Table-parameters.css +1 -0
  448. package/src/themes/sap_belize_hcb/Token-parameters.css +1 -0
  449. package/src/themes/sap_belize_hcb/parameters-bundle.css +1 -0
  450. package/src/themes/sap_belize_hcw/BrowserScrollbar-parameters.css +4 -0
  451. package/src/themes/sap_belize_hcw/Input-parameters.css +1 -0
  452. package/src/themes/sap_belize_hcw/Table-parameters.css +1 -0
  453. package/src/themes/sap_belize_hcw/Token-parameters.css +1 -0
  454. package/src/themes/sap_belize_hcw/parameters-bundle.css +1 -0
  455. package/src/themes/sap_fiori_3/TabContainer-parameters.css +1 -1
  456. package/src/themes/sap_fiori_3/parameters-bundle.css +1 -0
  457. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +1 -0
  458. package/src/themes/sap_fiori_3_hcb/Input-parameters.css +7 -0
  459. package/src/themes/sap_fiori_3_hcb/TextArea-parameters.css +2 -0
  460. package/src/themes/sap_fiori_3_hcb/Token-parameters.css +2 -1
  461. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -0
  462. package/src/themes/sap_fiori_3_hcw/Input-parameters.css +7 -0
  463. package/src/themes/sap_fiori_3_hcw/TextArea-parameters.css +2 -0
  464. package/src/themes/sap_fiori_3_hcw/Token-parameters.css +2 -1
  465. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -0
  466. package/src/themes/sap_horizon/Card-parameters.css +0 -1
  467. package/src/themes/sap_horizon/Table-parameters.css +1 -0
  468. package/src/themes/sap_horizon/parameters-bundle.css +1 -0
  469. package/src/themes/sap_horizon_exp/parameters-bundle.css +1 -0
  470. package/src/types/HasPopup.js +62 -0
  471. package/src/types/TabsOverflowMode.js +40 -0
  472. package/csp.js +0 -7
  473. package/dist/generated/templates/TabSeparatorTemplate.lit.js +0 -7
  474. package/src/TabSeparator.hbs +0 -1
@@ -3,17 +3,20 @@
3
3
  horizontal-align="Right"
4
4
  placement-type="Bottom"
5
5
  content-only-on-desktop
6
- with-padding
7
6
  hide-arrow
8
7
  _hide-header
9
8
  class="ui5-tab-container-responsive-popover"
10
9
  >
11
- <ui5-list @ui5-item-press="{{_onOverflowListItemSelect}}">
12
- {{#each items}}
13
- {{#unless this.isSeparator}}
10
+ <ui5-list mode="SingleSelect" separators="None" @ui5-item-click="{{_onOverflowListItemClick}}">
11
+ {{#if _endOverflowItems.length}}
12
+ {{#each _endOverflowItems}}
14
13
  {{this.overflowPresentation}}
15
- {{/unless}}
16
- {{/each}}
14
+ {{/each}}
15
+ {{else}}
16
+ {{#each _startOverflowItems}}
17
+ {{this.overflowPresentation}}
18
+ {{/each}}
19
+ {{/if}}
17
20
  </ui5-list>
18
21
  <div slot="footer" class="ui5-responsive-popover-footer">
19
22
  <ui5-button
@@ -2,7 +2,6 @@
2
2
  id="{{this._id}}"
3
3
  class="{{this.overflowClasses}}"
4
4
  type="{{this.overflowState}}"
5
- ?selected="{{this.effectiveSelected}}"
6
5
  ?disabled="{{this.effectiveDisabled}}"
7
6
  aria-disabled="{{this.effectiveDisabled}}"
8
7
  aria-selected="{{this.effectiveSelected}}"
@@ -1,5 +1,5 @@
1
- <li id="{{this._id}}"
2
- class="{{this.headerClasses}}"
1
+ <div id="{{this._id}}"
2
+ class="{{this.stripClasses}}"
3
3
  tabindex="{{this._tabIndex}}"
4
4
  role="tab"
5
5
  aria-posinset="{{this._posinset}}"
@@ -11,7 +11,6 @@
11
11
  aria-labelledby="{{this.ariaLabelledBy}}"
12
12
  data-ui5-stable="{{this.stableDomRef}}"
13
13
  >
14
-
15
14
  {{#if this.icon}}
16
15
  <div class="ui5-tab-strip-item-icon-outer">
17
16
  <ui5-icon name="{{this.icon}}" class="ui5-tab-strip-item-icon"></ui5-icon>
@@ -19,7 +18,6 @@
19
18
  {{/if}}
20
19
 
21
20
  <div class="ui5-tab-strip-itemContent">
22
-
23
21
  {{#unless this._isInline}}
24
22
  {{> additionalText}}
25
23
  {{/unless}}
@@ -30,12 +28,9 @@
30
28
  {{this.displayText}}
31
29
  </span>
32
30
  {{/if}}
33
-
34
31
  </div>
32
+ </div>
35
33
 
36
- </li>
37
-
38
- <!-- Additional text -->
39
34
  {{#*inline additionalText}}
40
35
  {{#if this.additionalText}}
41
36
  <span class="ui5-tab-strip-itemAdditionalText" id="{{this._id}}-additionalText">{{this.additionalText}}</span>
@@ -1,6 +1,16 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
- import TabSeparatorTemplate from "./generated/templates/TabSeparatorTemplate.lit.js";
3
+ import executeTemplate from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
4
+
5
+ import TabContainer from "./TabContainer.js";
6
+
7
+ // Templates
8
+ import TabSeparatorInStripTemplate from "./generated/templates/TabSeparatorInStripTemplate.lit.js";
9
+ import TabSeparatorInOverflowTemplate from "./generated/templates/TabSeparatorInOverflowTemplate.lit.js";
10
+
11
+ // Styles
12
+ import stripCss from "./generated/themes/TabSeparatorInStrip.css.js";
13
+ import overflowCss from "./generated/themes/TabSeparatorInOverflow.css.js";
4
14
 
5
15
  /**
6
16
  * @public
@@ -30,15 +40,44 @@ class TabSeparator extends UI5Element {
30
40
  return litRender;
31
41
  }
32
42
 
33
- static get template() {
34
- return TabSeparatorTemplate;
43
+ static get stripTemplate() {
44
+ return TabSeparatorInStripTemplate;
45
+ }
46
+
47
+ static get overflowTemplate() {
48
+ return TabSeparatorInOverflowTemplate;
49
+ }
50
+
51
+ get classes() {
52
+ return {
53
+ "ui5-tc__separator": true,
54
+ };
35
55
  }
36
56
 
37
57
  get isSeparator() {
38
58
  return true;
39
59
  }
60
+
61
+ getTabInStripDomRef() {
62
+ return this._getTabInStripDomRef;
63
+ }
64
+
65
+ get stableDomRef() {
66
+ return this.getAttribute("stable-dom-ref") || `${this._id}-stable-dom-ref`;
67
+ }
68
+
69
+ get stripPresentation() {
70
+ return executeTemplate(this.constructor.stripTemplate, this);
71
+ }
72
+
73
+ get overflowPresentation() {
74
+ return executeTemplate(this.constructor.overflowTemplate, this);
75
+ }
40
76
  }
41
77
 
42
78
  TabSeparator.define();
43
79
 
80
+ TabContainer.registerTabStyles(stripCss);
81
+ TabContainer.registerStaticAreaTabStyles(overflowCss);
82
+
44
83
  export default TabSeparator;
@@ -0,0 +1,8 @@
1
+ <ui5-li-custom
2
+ id="{{this._id}}"
3
+ data-ui5-stable="{{this.stableDomRef}}"
4
+ role="separator"
5
+ class="{{classes}}"
6
+ disabled
7
+ >
8
+ </ui5-li-custom>
@@ -0,0 +1,6 @@
1
+ <div
2
+ id="{{this._id}}"
3
+ data-ui5-stable="{{this.stableDomRef}}"
4
+ role="separator"
5
+ class="{{classes}}"
6
+ ></div>
package/src/Table.hbs CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  <table border="0" cellspacing="0" cellpadding="0" @keydown="{{_onkeydown}}" role="table">
7
7
  <thead>
8
- <tr id="{{_columnHeader.id}}" role="row" class="ui5-table-header-row" aria-label="{{ariaLabelText}}" tabindex="{{_columnHeader._tabIndex}}" style="{{styles.table}}" @click="{{_onColumnHeaderClick}}">
8
+ <tr id="{{_columnHeader.id}}" role="row" class="ui5-table-header-row" aria-label="{{ariaLabelText}}" tabindex="{{_columnHeader._tabIndex}}" @click="{{_onColumnHeaderClick}}">
9
9
  {{#if isMultiSelect}}
10
10
  <th class="ui5-table-select-all-column" role="presentation" aria-hidden="true">
11
11
  <ui5-checkbox class="ui5-table-select-all-checkbox"
package/src/Table.js CHANGED
@@ -36,6 +36,7 @@ const GROWING_WITH_SCROLL_DEBOUNCE_RATE = 250; // ms
36
36
  const metadata = {
37
37
  tag: "ui5-table",
38
38
  managedSlots: true,
39
+ fastNavigation: true,
39
40
  slots: /** @lends sap.ui.webcomponents.main.Table.prototype */ {
40
41
 
41
42
  /**
@@ -51,6 +52,7 @@ const metadata = {
51
52
  propertyName: "rows",
52
53
  type: HTMLElement,
53
54
  individualSlots: true,
55
+ invalidateOnChildChange: true,
54
56
  },
55
57
 
56
58
  /**
@@ -143,7 +145,7 @@ const metadata = {
143
145
  * <code>None</code> (default) - The growing is off.
144
146
  * <br><br>
145
147
  *
146
- * <b>Limitations:</b> <code>growing="Scroll"</code> is not supported for Internet Explorer,
148
+ * <b>Restrictions:</b> <code>growing="Scroll"</code> is not supported for Internet Explorer,
147
149
  * and the component will fallback to <code>growing="Button"</code>.
148
150
  * @type {TableGrowingMode}
149
151
  * @defaultvalue "None"
@@ -186,7 +188,7 @@ const metadata = {
186
188
  * Determines whether the column headers remain fixed at the top of the page during
187
189
  * vertical scrolling as long as the Web Component is in the viewport.
188
190
  * <br><br>
189
- * <b>Limitations:</b>
191
+ * <b>Restrictions:</b>
190
192
  * <ul>
191
193
  * <li>Browsers that do not support this feature:
192
194
  * <ul>
@@ -364,6 +366,14 @@ const metadata = {
364
366
  * <br><br>
365
367
  * <b>Note:</b> Currently, when a column is shown as a pop-in, the visual indication for selection is not presented over it.
366
368
  *
369
+ * <h3>Keyboard Handling</h3>
370
+ *
371
+ * <h4>Fast Navigation</h4>
372
+ * 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>.
373
+ * In order to use this functionality, you need to import the following module:
374
+ * <code>import "@ui5/webcomponents-base/dist/features/F6Navigation.js"</code>
375
+ * <br><br>
376
+ *
367
377
  * <h3>ES6 Module Import</h3>
368
378
  *
369
379
  * <code>import "@ui5/webcomponents/dist/Table.js";</code>
@@ -434,6 +444,7 @@ class Table extends UI5Element {
434
444
  const columnSettings = this.getColumnPropagationSettings();
435
445
  const columnSettingsString = JSON.stringify(columnSettings);
436
446
  const rowsCount = this.rows.length;
447
+ const selectedRows = this.selectedRows;
437
448
 
438
449
  this.rows.forEach((row, index) => {
439
450
  if (row._columnsInfoString !== columnSettingsString) {
@@ -455,6 +466,8 @@ class Table extends UI5Element {
455
466
 
456
467
  this._noDataDisplayed = !this.rows.length && !this.hideNoData;
457
468
  this.visibleColumnsCount = this.visibleColumns.length;
469
+
470
+ this._allRowsSelected = selectedRows.length === this.rows.length;
458
471
  }
459
472
 
460
473
  onAfterRendering() {
@@ -688,9 +701,6 @@ class Table extends UI5Element {
688
701
 
689
702
  get styles() {
690
703
  return {
691
- table: {
692
- height: "48px",
693
- },
694
704
  busy: {
695
705
  position: this.busyIndPosition,
696
706
  },
package/src/TextArea.js CHANGED
@@ -24,6 +24,7 @@ import {
24
24
  // Styles
25
25
  import styles from "./generated/themes/TextArea.css.js";
26
26
  import valueStateMessageStyles from "./generated/themes/ValueStateMessage.css.js";
27
+ import browserScrollbarCSS from "./generated/themes/BrowserScrollbar.css.js";
27
28
 
28
29
  /**
29
30
  * @public
@@ -360,7 +361,7 @@ class TextArea extends UI5Element {
360
361
  }
361
362
 
362
363
  static get styles() {
363
- return styles;
364
+ return [browserScrollbarCSS, styles];
364
365
  }
365
366
 
366
367
  static get render() {
@@ -570,6 +571,7 @@ class TextArea extends UI5Element {
570
571
 
571
572
  get styles() {
572
573
  const lineHeight = 1.4 * 16;
574
+ const mainHeight = (this.rows * lineHeight) + (this.showExceededText ? 32 : 0);
573
575
 
574
576
  return {
575
577
  mirror: {
@@ -577,7 +579,7 @@ class TextArea extends UI5Element {
577
579
  },
578
580
  main: {
579
581
  width: "100%",
580
- height: (this.rows && !this.growing) ? `${this.rows * lineHeight}px` : "100%",
582
+ height: (this.rows && !this.growing) ? `${mainHeight}px` : "100%",
581
583
  },
582
584
  focusDiv: {
583
585
  "height": (this.showExceededText ? "calc(100% - 26px)" : "100%"),
@@ -632,7 +634,7 @@ class TextArea extends UI5Element {
632
634
  }
633
635
 
634
636
  get displayValueStateMessagePopover() {
635
- return this.hasCustomValueState || this.hasValueState || this.exceeding;
637
+ return !this.readonly && (this.hasCustomValueState || this.hasValueState || this.exceeding);
636
638
  }
637
639
 
638
640
  get hasCustomValueState() {
@@ -655,6 +657,10 @@ class TextArea extends UI5Element {
655
657
  return this.valueStateTextMappings()[this.valueState];
656
658
  }
657
659
 
660
+ get _valueStatePopoverHorizontalAlign() {
661
+ return this.effectiveDir !== "rtl" ? "Left" : "Right";
662
+ }
663
+
658
664
  /**
659
665
  * This method is relevant for sap_horizon theme only
660
666
  */
@@ -8,7 +8,7 @@
8
8
  class="ui5-valuestatemessage-popover"
9
9
  style="{{styles.valueStateMsgPopover}}"
10
10
  placement-type="Bottom"
11
- horizontal-align="Left"
11
+ horizontal-align="{{_valueStatePopoverHorizontalAlign}}"
12
12
  >
13
13
  <div slot="header" class="ui5-valuestatemessage-root {{classes.valueStateMsg}}">
14
14
  <ui5-icon class="ui5-input-value-state-message-icon" name="{{_valueStateMessageIcon}}"></ui5-icon>
@@ -1,5 +1,6 @@
1
1
  import isLegacyBrowser from "@ui5/webcomponents-base/dist/isLegacyBrowser.js";
2
2
  import { isSpaceShift } from "@ui5/webcomponents-base/dist/Keys.js";
3
+ import { isSafari } from "@ui5/webcomponents-base/dist/Device.js";
3
4
  import Button from "./Button.js";
4
5
  import ToggleButtonTemplate from "./generated/templates/ToggleButtonTemplate.lit.js";
5
6
 
@@ -67,6 +68,10 @@ class ToggleButton extends Button {
67
68
 
68
69
  _onclick() {
69
70
  this.pressed = !this.pressed;
71
+
72
+ if (isSafari()) {
73
+ this.getDomRef().focus();
74
+ }
70
75
  }
71
76
 
72
77
  _onkeyup(event) {
package/src/Tokenizer.js CHANGED
@@ -5,7 +5,17 @@ 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
+ } from "@ui5/webcomponents-base/dist/Keys.js";
9
19
  import { isPhone } from "@ui5/webcomponents-base/dist/Device.js";
10
20
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
11
21
  import ResponsivePopover from "./ResponsivePopover.js";
@@ -237,8 +247,88 @@ class Tokenizer extends UI5Element {
237
247
  if (isSpace(event)) {
238
248
  event.preventDefault();
239
249
 
240
- this._handleTokenSelection(event);
250
+ return this._handleTokenSelection(event, false);
251
+ }
252
+
253
+ this._handleItemNavigation(event, this.tokens);
254
+ }
255
+
256
+ _handleItemNavigation(event, tokens) {
257
+ const isCtrl = !!(event.metaKey || event.ctrlKey);
258
+ if (isLeftCtrl(event) || isRightCtrl(event)) {
259
+ event.preventDefault();
260
+ return this._handleArrowCtrl(event.target, tokens, isRightCtrl(event));
261
+ }
262
+
263
+ if (isLeftCtrl(event)) {
264
+ event.preventDefault();
265
+ return this._handleArrowCtrl(event.target, tokens, false);
266
+ }
267
+
268
+ if (isLeftShift(event) || isRightShift(event) || isLeftShiftCtrl(event) || isRightShiftCtrl(event)) {
269
+ event.preventDefault();
270
+ return this._handleArrowShift(event.target, tokens, (isRightShift(event) || isRightShiftCtrl(event)));
271
+ }
272
+
273
+ if (isHome(event) || isEnd(event)) {
274
+ return this._handleHome(tokens, isEnd(event));
275
+ }
276
+
277
+ if (isCtrl && event.key.toLowerCase() === "a") {
278
+ event.preventDefault();
279
+
280
+ return this._toggleTokenSelection(tokens);
281
+ }
282
+ }
283
+
284
+ _handleHome(tokens, endKeyPressed) {
285
+ if (!tokens || !tokens.length) {
286
+ return -1;
241
287
  }
288
+
289
+ const index = endKeyPressed ? tokens.length - 1 : 0;
290
+
291
+ tokens[index].focus();
292
+ this._itemNav.setCurrentItem(tokens[index]);
293
+ }
294
+
295
+ _calcNextTokenIndex(focusedToken, tokens, backwards) {
296
+ if (!tokens.length) {
297
+ return -1;
298
+ }
299
+ const focusedTokenIndex = tokens.indexOf(focusedToken);
300
+ let nextIndex = backwards ? (focusedTokenIndex + 1) : (focusedTokenIndex - 1);
301
+
302
+ if (nextIndex >= tokens.length) {
303
+ nextIndex = tokens.length - 1;
304
+ }
305
+ if (nextIndex < 0) {
306
+ nextIndex = 0;
307
+ }
308
+
309
+ return nextIndex;
310
+ }
311
+
312
+ _handleArrowCtrl(focusedToken, tokens, backwards) {
313
+ const nextIndex = this._calcNextTokenIndex(focusedToken, tokens, backwards);
314
+ if (nextIndex === -1) {
315
+ return;
316
+ }
317
+
318
+ tokens[nextIndex].focus();
319
+ this._itemNav.setCurrentItem(tokens[nextIndex]);
320
+ }
321
+
322
+ _handleArrowShift(focusedToken, tokens, backwards) {
323
+ const nextIndex = this._calcNextTokenIndex(focusedToken, tokens, backwards);
324
+ if (nextIndex === -1) {
325
+ return;
326
+ }
327
+
328
+ focusedToken.selected = true;
329
+ tokens[nextIndex].selected = true;
330
+ tokens[nextIndex].focus();
331
+ this._itemNav.setCurrentItem(tokens[nextIndex]);
242
332
  }
243
333
 
244
334
  _click(event) {
@@ -249,9 +339,20 @@ class Tokenizer extends UI5Element {
249
339
  this._itemNav.setCurrentItem(event.target);
250
340
  }
251
341
 
252
- _handleTokenSelection(event) {
253
- if (event.target.localName === "ui5-token") {
254
- this._tokens.forEach(token => {
342
+ _toggleTokenSelection(tokens) {
343
+ if (!tokens || !tokens.length) {
344
+ return;
345
+ }
346
+
347
+ const tokensAreSelected = tokens.every(token => token.selected);
348
+ tokens.forEach(token => { token.selected = !tokensAreSelected; });
349
+ }
350
+
351
+ _handleTokenSelection(event, deselectAll = true) {
352
+ if (event.target.hasAttribute("ui5-token")) {
353
+ const deselectTokens = deselectAll ? this._tokens : [event.target];
354
+
355
+ deselectTokens.forEach(token => {
255
356
  if (token !== event.target) {
256
357
  token.selected = false;
257
358
  }
@@ -259,6 +360,25 @@ class Tokenizer extends UI5Element {
259
360
  }
260
361
  }
261
362
 
363
+ _fillClipboard(shortcutName, tokens) {
364
+ const tokensTexts = tokens.filter(token => token.selected).map(token => token.text).join("\r\n");
365
+
366
+ /* fill clipboard with tokens' texts so parent can handle creation */
367
+ const cutToClipboard = event => {
368
+ if (event.clipboardData) {
369
+ event.clipboardData.setData("text/plain", tokensTexts);
370
+ } else {
371
+ event.originalEvent.clipboardData.setData("text/plain", tokensTexts);
372
+ }
373
+
374
+ event.preventDefault();
375
+ };
376
+
377
+ document.addEventListener(shortcutName, cutToClipboard);
378
+ document.execCommand(shortcutName);
379
+ document.removeEventListener(shortcutName, cutToClipboard);
380
+ }
381
+
262
382
  /**
263
383
  * Scrolls the container of the tokens to its beginning.
264
384
  * This method is used by MultiInput and MultiComboBox.
@@ -299,13 +419,20 @@ class Tokenizer extends UI5Element {
299
419
  return [];
300
420
  }
301
421
 
422
+ // Reset the overflow prop of the tokens first in order
423
+ // to use their dimensions for calculation because already
424
+ // hidden tokens are set to 'display: none'
425
+ this._getTokens().forEach(token => {
426
+ token.overflows = false;
427
+ });
428
+
302
429
  return this._getTokens().filter(token => {
303
430
  const isRTL = this.effectiveDir === "rtl";
304
431
  const elementEnd = isRTL ? "left" : "right";
305
432
  const parentRect = this.contentDom.getBoundingClientRect();
306
433
  const tokenRect = token.getBoundingClientRect();
307
- const tokenEnd = tokenRect[elementEnd];
308
- const parentEnd = parentRect[elementEnd];
434
+ const tokenEnd = parseInt(tokenRect[elementEnd]);
435
+ const parentEnd = parseInt(parentRect[elementEnd]);
309
436
 
310
437
  token.overflows = isRTL ? ((tokenEnd < parentEnd) && !this.expanded) : ((tokenEnd > parentEnd) && !this.expanded);
311
438
 
package/src/Tree.hbs CHANGED
@@ -15,6 +15,7 @@
15
15
  type="Active"
16
16
  level="{{this.level}}"
17
17
  icon="{{this.treeItem.icon}}"
18
+ ?indeterminate="{{this.treeItem.indeterminate}}"
18
19
  additional-text="{{this.treeItem.additionalText}}"
19
20
  additional-text-state="{{this.treeItem.additionalTextState}}"
20
21
  title="{{this.treeItem.title}}"
package/src/TreeItem.js CHANGED
@@ -29,6 +29,27 @@ const metadata = {
29
29
  expanded: {
30
30
  type: Boolean,
31
31
  },
32
+ /**
33
+ * Defines whether the selection of a tree node is displayed as partially selected.
34
+ * <br><br>
35
+ * <b>Note:</b> The indeterminate state can be set only programatically and can’t be achieved by user
36
+ * interaction, meaning that the resulting visual state depends on the values of the <code>indeterminate</code>
37
+ * and <code>selected</code> properties:
38
+ * <ul>
39
+ * <li> If a tree node has both <code>selected</code> and <code>indeterminate</code> set to <code>true</code>, it is displayed as partially selected.
40
+ * <li> If a tree node has <code>selected</code> set to <code>true</code> and <code>indeterminate</code> set to <code>false</code>, it is displayed as selected.
41
+ * <li> If a tree node has <code>selected</code> set to <code>false</code>, it is displayed as not selected regardless of the value of the <code>indeterminate</code> property.
42
+ * </ul>
43
+ * <br>
44
+ * <b>Note:</b> This property takes effect only when the <code>ui5-tree</code> is in <code>MultiSelect</code> mode.
45
+ * @type {boolean}
46
+ * @defaultvalue false
47
+ * @public
48
+ * @since 1.1.0
49
+ */
50
+ indeterminate: {
51
+ type: Boolean,
52
+ },
32
53
 
33
54
  /**
34
55
  * Defines whether the tree node has children, even if currently no other tree nodes are slotted inside.
@@ -72,6 +72,14 @@ const metadata = {
72
72
  type: Boolean,
73
73
  },
74
74
 
75
+ /**
76
+ * @private
77
+ * @since 1.1.0
78
+ */
79
+ indeterminate: {
80
+ type: Boolean,
81
+ },
82
+
75
83
  /**
76
84
  * Defines the <code>additionalText</code>, displayed in the end of the tree item.
77
85
  * @type {string}