@ui5/webcomponents 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/Avatar.js +29 -1
  3. package/dist/AvatarGroup.js +20 -2
  4. package/dist/BreadcrumbsItem.js +1 -1
  5. package/dist/Button.js +3 -3
  6. package/dist/CardHeader.js +1 -0
  7. package/dist/Carousel.js +9 -0
  8. package/dist/CheckBox.js +1 -1
  9. package/dist/DatePicker.js +8 -0
  10. package/dist/DateRangePicker.js +8 -2
  11. package/dist/DateTimePicker.js +1 -1
  12. package/dist/Dialog.js +41 -1
  13. package/dist/Icon.js +8 -8
  14. package/dist/Input.js +13 -8
  15. package/dist/Label.js +1 -3
  16. package/dist/Link.js +3 -1
  17. package/dist/List.js +12 -0
  18. package/dist/Menu.js +4 -4
  19. package/dist/MenuItem.js +20 -4
  20. package/dist/MessageStrip.js +1 -1
  21. package/dist/MultiComboBox.js +18 -4
  22. package/dist/MultiInput.js +9 -2
  23. package/dist/Option.js +1 -1
  24. package/dist/Panel.js +13 -1
  25. package/dist/Popover.js +5 -4
  26. package/dist/Popup.js +13 -2
  27. package/dist/RangeSlider.js +1 -1
  28. package/dist/Select.js +0 -2
  29. package/dist/Slider.js +1 -1
  30. package/dist/SliderBase.js +3 -3
  31. package/dist/SplitButton.js +1 -1
  32. package/dist/StandardListItem.js +1 -1
  33. package/dist/SuggestionItem.js +1 -1
  34. package/dist/Tab.js +17 -10
  35. package/dist/TabContainer.js +154 -140
  36. package/dist/TabSeparator.js +8 -1
  37. package/dist/TextArea.js +7 -2
  38. package/dist/TimePickerBase.js +8 -0
  39. package/dist/TimeSelection.js +1 -2
  40. package/dist/Tokenizer.js +74 -8
  41. package/dist/Tree.js +4 -0
  42. package/dist/TreeItem.js +1 -1
  43. package/dist/api.json +1 -1
  44. package/dist/assets/SAP-icons-business-suite.7cff1fd8.js +1 -0
  45. package/dist/assets/SAP-icons.7f154911.js +1 -0
  46. package/dist/assets/SAP-icons.e76c8241.js +1 -0
  47. package/dist/assets/{messagebundle_ar.5dc913fc.js → messagebundle_ar.f3e988df.js} +1 -1
  48. package/dist/assets/messagebundle_bg.a3f6fdd8.js +1 -0
  49. package/dist/assets/messagebundle_ca.5e72bf09.js +1 -0
  50. package/dist/assets/messagebundle_cs.5720e069.js +1 -0
  51. package/dist/assets/messagebundle_cy.51ed6118.js +1 -0
  52. package/dist/assets/messagebundle_da.d83f1df6.js +1 -0
  53. package/dist/assets/messagebundle_de.00b8fac3.js +1 -0
  54. package/dist/assets/messagebundle_el.54337d1a.js +1 -0
  55. package/dist/assets/{messagebundle_en_US_saprigi.58918baa.js → messagebundle_en_US_saprigi.9e3ec6ce.js} +1 -1
  56. package/dist/assets/messagebundle_es.6edd9aac.js +1 -0
  57. package/dist/assets/messagebundle_es_MX.b9a235b1.js +1 -0
  58. package/dist/assets/messagebundle_et.2f95fbc0.js +1 -0
  59. package/dist/assets/messagebundle_fi.e408238f.js +1 -0
  60. package/dist/assets/messagebundle_fr.023ec658.js +1 -0
  61. package/dist/assets/messagebundle_fr_CA.700b3003.js +1 -0
  62. package/dist/assets/messagebundle_hi.e54398ec.js +1 -0
  63. package/dist/assets/messagebundle_hr.87a5cf12.js +1 -0
  64. package/dist/assets/messagebundle_hu.11f04021.js +1 -0
  65. package/dist/assets/messagebundle_it.aa33f57d.js +1 -0
  66. package/dist/assets/messagebundle_iw.876a2de2.js +1 -0
  67. package/dist/assets/{messagebundle_ja.7ea22999.js → messagebundle_ja.8e38b3b9.js} +1 -1
  68. package/dist/assets/messagebundle_kk.16201d64.js +1 -0
  69. package/dist/assets/messagebundle_ko.efd3d190.js +1 -0
  70. package/dist/assets/messagebundle_lt.8df3235f.js +1 -0
  71. package/dist/assets/messagebundle_lv.1485b0dd.js +1 -0
  72. package/dist/assets/{messagebundle_ms.fa2f722d.js → messagebundle_ms.2801cf14.js} +1 -1
  73. package/dist/assets/messagebundle_nl.fbaa57e5.js +1 -0
  74. package/dist/assets/messagebundle_no.aed62d2d.js +1 -0
  75. package/dist/assets/messagebundle_pl.ec09771e.js +1 -0
  76. package/dist/assets/messagebundle_pt.2ba5f988.js +1 -0
  77. package/dist/assets/messagebundle_pt_PT.f26a67f1.js +1 -0
  78. package/dist/assets/messagebundle_ro.71197951.js +1 -0
  79. package/dist/assets/messagebundle_ru.0bc1939f.js +1 -0
  80. package/dist/assets/messagebundle_sh.097c2c2b.js +1 -0
  81. package/dist/assets/messagebundle_sk.79a87686.js +1 -0
  82. package/dist/assets/messagebundle_sl.9d602bfb.js +1 -0
  83. package/dist/assets/messagebundle_sv.efb6e0ef.js +1 -0
  84. package/dist/assets/messagebundle_th.94c0d1ab.js +1 -0
  85. package/dist/assets/messagebundle_tr.b3a571be.js +1 -0
  86. package/dist/assets/messagebundle_uk.8d0551a9.js +1 -0
  87. package/dist/assets/messagebundle_vi.6819ccf0.js +1 -0
  88. package/dist/assets/messagebundle_zh_CN.0c604a5d.js +1 -0
  89. package/dist/assets/messagebundle_zh_TW.4659173f.js +1 -0
  90. package/dist/assets/{parameters-bundle.css.d35c9c32.js → parameters-bundle.css.13aed676.js} +1 -1
  91. package/dist/assets/{parameters-bundle.css.95d13129.js → parameters-bundle.css.157592af.js} +1 -1
  92. package/dist/assets/parameters-bundle.css.18cb3350.js +1 -0
  93. package/dist/assets/{parameters-bundle.css.e9998509.js → parameters-bundle.css.25017933.js} +1 -1
  94. package/dist/assets/parameters-bundle.css.2be7f26d.js +1 -0
  95. package/dist/assets/parameters-bundle.css.31a66508.js +1 -0
  96. package/dist/assets/parameters-bundle.css.33915181.js +1 -0
  97. package/dist/assets/parameters-bundle.css.41e95390.js +1 -0
  98. package/dist/assets/parameters-bundle.css.4343d807.js +1 -0
  99. package/dist/assets/parameters-bundle.css.4438b4b3.js +1 -0
  100. package/dist/assets/parameters-bundle.css.54a888ff.js +1 -0
  101. package/dist/assets/{parameters-bundle.css.e9339a13.js → parameters-bundle.css.5550ceb2.js} +1 -1
  102. package/dist/assets/{parameters-bundle.css.c967e7ef.js → parameters-bundle.css.60956972.js} +1 -1
  103. package/dist/assets/{parameters-bundle.css.3db3a626.js → parameters-bundle.css.61a5fde8.js} +1 -1
  104. package/dist/assets/parameters-bundle.css.6d229ca8.js +1 -0
  105. package/dist/assets/parameters-bundle.css.7c26b98b.js +1 -0
  106. package/dist/assets/{parameters-bundle.css.780c6a0b.js → parameters-bundle.css.adc7c452.js} +1 -1
  107. package/dist/assets/{parameters-bundle.css.16d388d6.js → parameters-bundle.css.ba38c500.js} +1 -1
  108. package/dist/assets/{parameters-bundle.css.d4f504ed.js → parameters-bundle.css.c64ba63b.js} +1 -1
  109. package/dist/assets/{parameters-bundle.css.f0eeb6a4.js → parameters-bundle.css.cac9f3de.js} +1 -1
  110. package/dist/assets/parameters-bundle.css.cad0773b.js +1 -0
  111. package/dist/assets/parameters-bundle.css.d532d151.js +1 -0
  112. package/dist/assets/{parameters-bundle.css.7be18144.js → parameters-bundle.css.d5d27adb.js} +1 -1
  113. package/dist/assets/{parameters-bundle.css.f6aea851.js → parameters-bundle.css.fbd8d2ab.js} +1 -1
  114. package/dist/css/themes/Avatar.css +1 -1
  115. package/dist/css/themes/AvatarGroup.css +1 -1
  116. package/dist/css/themes/Badge.css +1 -1
  117. package/dist/css/themes/Breadcrumbs.css +1 -1
  118. package/dist/css/themes/BrowserScrollbar.css +1 -1
  119. package/dist/css/themes/Button.css +1 -1
  120. package/dist/css/themes/ComboBox.css +1 -1
  121. package/dist/css/themes/DatePicker.css +1 -1
  122. package/dist/css/themes/DayPicker.css +1 -1
  123. package/dist/css/themes/Dialog.css +1 -1
  124. package/dist/css/themes/GroupHeaderListItem.css +1 -1
  125. package/dist/css/themes/Input.css +1 -1
  126. package/dist/css/themes/Menu.css +1 -1
  127. package/dist/css/themes/MonthPicker.css +1 -1
  128. package/dist/css/themes/MultiComboBox.css +1 -1
  129. package/dist/css/themes/Select.css +1 -1
  130. package/dist/css/themes/TextArea.css +1 -1
  131. package/dist/css/themes/Tokenizer.css +1 -1
  132. package/dist/css/themes/YearPicker.css +1 -1
  133. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  134. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  135. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  136. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  137. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  138. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  139. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  140. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  141. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  142. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  143. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  144. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  145. package/dist/features/InputSuggestions.js +21 -2
  146. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  149. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  150. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  151. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  152. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  153. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  154. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  155. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  156. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  157. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  158. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  159. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  160. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  161. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  162. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  163. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  164. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  165. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  168. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  169. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  171. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  172. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  173. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  174. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  175. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  176. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  177. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  178. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  179. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  180. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  181. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  182. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  183. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  184. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  185. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  186. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  187. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  188. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  189. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  190. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  191. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  192. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  193. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  194. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  195. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  196. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  197. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  198. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  199. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  200. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  201. package/dist/generated/i18n/i18n-defaults.js +2 -2
  202. package/dist/generated/templates/AvatarTemplate.lit.js +1 -1
  203. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  204. package/dist/generated/templates/CalendarHeaderTemplate.lit.js +1 -1
  205. package/dist/generated/templates/CardHeaderTemplate.lit.js +1 -1
  206. package/dist/generated/templates/CarouselTemplate.lit.js +1 -1
  207. package/dist/generated/templates/DialogTemplate.lit.js +7 -6
  208. package/dist/generated/templates/IconTemplate.lit.js +2 -1
  209. package/dist/generated/templates/ListTemplate.lit.js +1 -1
  210. package/dist/generated/templates/MenuTemplate.lit.js +1 -1
  211. package/dist/generated/templates/PanelTemplate.lit.js +2 -2
  212. package/dist/generated/templates/PopoverTemplate.lit.js +1 -1
  213. package/dist/generated/templates/PopupTemplate.lit.js +1 -1
  214. package/dist/generated/templates/RangeSliderTemplate.lit.js +1 -1
  215. package/dist/generated/templates/ResponsivePopoverTemplate.lit.js +1 -1
  216. package/dist/generated/templates/SliderTemplate.lit.js +1 -1
  217. package/dist/generated/templates/TabContainerTemplate.lit.js +1 -1
  218. package/dist/generated/templates/TabInOverflowTemplate.lit.js +1 -1
  219. package/dist/generated/templates/TabInStripTemplate.lit.js +1 -1
  220. package/dist/generated/templates/TextAreaTemplate.lit.js +1 -1
  221. package/dist/generated/themes/Avatar.css.js +1 -1
  222. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  223. package/dist/generated/themes/Badge.css.js +1 -1
  224. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  225. package/dist/generated/themes/BrowserScrollbar.css.js +1 -1
  226. package/dist/generated/themes/Button.css.js +1 -1
  227. package/dist/generated/themes/ComboBox.css.js +1 -1
  228. package/dist/generated/themes/DatePicker.css.js +1 -1
  229. package/dist/generated/themes/DayPicker.css.js +1 -1
  230. package/dist/generated/themes/Dialog.css.js +1 -1
  231. package/dist/generated/themes/GroupHeaderListItem.css.js +1 -1
  232. package/dist/generated/themes/Input.css.js +1 -1
  233. package/dist/generated/themes/Menu.css.js +1 -1
  234. package/dist/generated/themes/MonthPicker.css.js +1 -1
  235. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  236. package/dist/generated/themes/Select.css.js +1 -1
  237. package/dist/generated/themes/TextArea.css.js +1 -1
  238. package/dist/generated/themes/Tokenizer.css.js +1 -1
  239. package/dist/generated/themes/YearPicker.css.js +1 -1
  240. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  241. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  242. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  243. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  244. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  245. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  246. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  247. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  248. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  249. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  250. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  251. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  252. package/dist/i18n/messagebundle.properties +0 -3
  253. package/dist/i18n/messagebundle_ar.properties +4 -4
  254. package/dist/i18n/messagebundle_bg.properties +4 -4
  255. package/dist/i18n/messagebundle_ca.properties +4 -4
  256. package/dist/i18n/messagebundle_cs.properties +4 -4
  257. package/dist/i18n/messagebundle_cy.properties +4 -4
  258. package/dist/i18n/messagebundle_da.properties +4 -4
  259. package/dist/i18n/messagebundle_de.properties +6 -6
  260. package/dist/i18n/messagebundle_el.properties +4 -4
  261. package/dist/i18n/messagebundle_en_US_saprigi.properties +0 -2
  262. package/dist/i18n/messagebundle_es.properties +4 -4
  263. package/dist/i18n/messagebundle_es_MX.properties +4 -4
  264. package/dist/i18n/messagebundle_et.properties +4 -4
  265. package/dist/i18n/messagebundle_fi.properties +4 -4
  266. package/dist/i18n/messagebundle_fr.properties +4 -4
  267. package/dist/i18n/messagebundle_fr_CA.properties +4 -4
  268. package/dist/i18n/messagebundle_hi.properties +4 -4
  269. package/dist/i18n/messagebundle_hr.properties +4 -4
  270. package/dist/i18n/messagebundle_hu.properties +4 -4
  271. package/dist/i18n/messagebundle_id.properties +4 -4
  272. package/dist/i18n/messagebundle_it.properties +6 -6
  273. package/dist/i18n/messagebundle_iw.properties +4 -4
  274. package/dist/i18n/messagebundle_ja.properties +4 -4
  275. package/dist/i18n/messagebundle_kk.properties +4 -4
  276. package/dist/i18n/messagebundle_ko.properties +4 -4
  277. package/dist/i18n/messagebundle_lt.properties +4 -4
  278. package/dist/i18n/messagebundle_lv.properties +4 -4
  279. package/dist/i18n/messagebundle_ms.properties +4 -4
  280. package/dist/i18n/messagebundle_nl.properties +4 -4
  281. package/dist/i18n/messagebundle_no.properties +4 -4
  282. package/dist/i18n/messagebundle_pl.properties +4 -4
  283. package/dist/i18n/messagebundle_pt.properties +4 -4
  284. package/dist/i18n/messagebundle_pt_PT.properties +4 -4
  285. package/dist/i18n/messagebundle_ro.properties +4 -4
  286. package/dist/i18n/messagebundle_ru.properties +4 -4
  287. package/dist/i18n/messagebundle_sh.properties +4 -4
  288. package/dist/i18n/messagebundle_sk.properties +4 -4
  289. package/dist/i18n/messagebundle_sl.properties +4 -4
  290. package/dist/i18n/messagebundle_sv.properties +4 -4
  291. package/dist/i18n/messagebundle_th.properties +8 -8
  292. package/dist/i18n/messagebundle_tr.properties +4 -4
  293. package/dist/i18n/messagebundle_uk.properties +5 -5
  294. package/dist/i18n/messagebundle_vi.properties +4 -4
  295. package/dist/i18n/messagebundle_zh_CN.properties +4 -4
  296. package/dist/i18n/messagebundle_zh_TW.properties +4 -4
  297. package/package.json +7 -7
  298. package/src/Avatar.hbs +2 -0
  299. package/src/Avatar.js +29 -1
  300. package/src/AvatarGroup.js +20 -2
  301. package/src/Breadcrumbs.hbs +1 -1
  302. package/src/BreadcrumbsItem.js +1 -1
  303. package/src/Button.js +3 -3
  304. package/src/CalendarHeader.hbs +4 -0
  305. package/src/CardHeader.hbs +1 -0
  306. package/src/CardHeader.js +1 -0
  307. package/src/Carousel.hbs +1 -1
  308. package/src/Carousel.js +9 -0
  309. package/src/CheckBox.js +1 -1
  310. package/src/DatePicker.js +8 -0
  311. package/src/DateRangePicker.js +8 -2
  312. package/src/DateTimePicker.js +1 -1
  313. package/src/Dialog.hbs +5 -1
  314. package/src/Dialog.js +41 -1
  315. package/src/Icon.hbs +3 -1
  316. package/src/Icon.js +8 -8
  317. package/src/Input.js +13 -8
  318. package/src/Label.js +1 -3
  319. package/src/Link.js +3 -1
  320. package/src/List.hbs +1 -1
  321. package/src/List.js +12 -0
  322. package/src/Menu.hbs +1 -0
  323. package/src/Menu.js +4 -4
  324. package/src/MenuItem.js +20 -4
  325. package/src/MessageStrip.js +1 -1
  326. package/src/MultiComboBox.js +18 -4
  327. package/src/MultiInput.js +9 -2
  328. package/src/Option.js +1 -1
  329. package/src/Panel.hbs +51 -47
  330. package/src/Panel.js +13 -1
  331. package/src/Popover.js +5 -4
  332. package/src/Popup.hbs +1 -1
  333. package/src/Popup.js +13 -2
  334. package/src/RangeSlider.hbs +2 -2
  335. package/src/RangeSlider.js +1 -1
  336. package/src/Select.js +0 -2
  337. package/src/Slider.hbs +1 -1
  338. package/src/Slider.js +1 -1
  339. package/src/SliderBase.js +3 -3
  340. package/src/SplitButton.js +1 -1
  341. package/src/StandardListItem.js +1 -1
  342. package/src/SuggestionItem.js +1 -1
  343. package/src/Tab.js +17 -10
  344. package/src/TabContainer.hbs +5 -1
  345. package/src/TabContainer.js +154 -140
  346. package/src/TabInOverflow.hbs +1 -1
  347. package/src/TabInStrip.hbs +1 -1
  348. package/src/TabSeparator.js +8 -1
  349. package/src/TextArea.hbs +1 -1
  350. package/src/TextArea.js +7 -2
  351. package/src/TimePickerBase.js +8 -0
  352. package/src/TimeSelection.js +1 -2
  353. package/src/Tokenizer.js +74 -8
  354. package/src/Tree.js +4 -0
  355. package/src/TreeItem.js +1 -1
  356. package/src/features/InputSuggestions.js +21 -2
  357. package/src/i18n/messagebundle.properties +0 -3
  358. package/src/i18n/messagebundle_ar.properties +4 -4
  359. package/src/i18n/messagebundle_bg.properties +4 -4
  360. package/src/i18n/messagebundle_ca.properties +4 -4
  361. package/src/i18n/messagebundle_cs.properties +4 -4
  362. package/src/i18n/messagebundle_cy.properties +4 -4
  363. package/src/i18n/messagebundle_da.properties +4 -4
  364. package/src/i18n/messagebundle_de.properties +6 -6
  365. package/src/i18n/messagebundle_el.properties +4 -4
  366. package/src/i18n/messagebundle_en_US_saprigi.properties +0 -2
  367. package/src/i18n/messagebundle_es.properties +4 -4
  368. package/src/i18n/messagebundle_es_MX.properties +4 -4
  369. package/src/i18n/messagebundle_et.properties +4 -4
  370. package/src/i18n/messagebundle_fi.properties +4 -4
  371. package/src/i18n/messagebundle_fr.properties +4 -4
  372. package/src/i18n/messagebundle_fr_CA.properties +4 -4
  373. package/src/i18n/messagebundle_hi.properties +4 -4
  374. package/src/i18n/messagebundle_hr.properties +4 -4
  375. package/src/i18n/messagebundle_hu.properties +4 -4
  376. package/src/i18n/messagebundle_id.properties +4 -4
  377. package/src/i18n/messagebundle_it.properties +6 -6
  378. package/src/i18n/messagebundle_iw.properties +4 -4
  379. package/src/i18n/messagebundle_ja.properties +4 -4
  380. package/src/i18n/messagebundle_kk.properties +4 -4
  381. package/src/i18n/messagebundle_ko.properties +4 -4
  382. package/src/i18n/messagebundle_lt.properties +4 -4
  383. package/src/i18n/messagebundle_lv.properties +4 -4
  384. package/src/i18n/messagebundle_ms.properties +4 -4
  385. package/src/i18n/messagebundle_nl.properties +4 -4
  386. package/src/i18n/messagebundle_no.properties +4 -4
  387. package/src/i18n/messagebundle_pl.properties +4 -4
  388. package/src/i18n/messagebundle_pt.properties +4 -4
  389. package/src/i18n/messagebundle_pt_PT.properties +4 -4
  390. package/src/i18n/messagebundle_ro.properties +4 -4
  391. package/src/i18n/messagebundle_ru.properties +4 -4
  392. package/src/i18n/messagebundle_sh.properties +4 -4
  393. package/src/i18n/messagebundle_sk.properties +4 -4
  394. package/src/i18n/messagebundle_sl.properties +4 -4
  395. package/src/i18n/messagebundle_sv.properties +4 -4
  396. package/src/i18n/messagebundle_th.properties +8 -8
  397. package/src/i18n/messagebundle_tr.properties +4 -4
  398. package/src/i18n/messagebundle_uk.properties +5 -5
  399. package/src/i18n/messagebundle_vi.properties +4 -4
  400. package/src/i18n/messagebundle_zh_CN.properties +4 -4
  401. package/src/i18n/messagebundle_zh_TW.properties +4 -4
  402. package/src/themes/Avatar.css +51 -0
  403. package/src/themes/AvatarGroup.css +1 -0
  404. package/src/themes/Badge.css +12 -0
  405. package/src/themes/Breadcrumbs.css +3 -0
  406. package/src/themes/BrowserScrollbar.css +6 -6
  407. package/src/themes/Button.css +5 -0
  408. package/src/themes/DatePicker.css +12 -0
  409. package/src/themes/DayPicker.css +4 -4
  410. package/src/themes/Dialog.css +35 -0
  411. package/src/themes/GroupHeaderListItem.css +1 -0
  412. package/src/themes/Input.css +20 -16
  413. package/src/themes/Menu.css +1 -0
  414. package/src/themes/MonthPicker.css +1 -1
  415. package/src/themes/TextArea.css +7 -7
  416. package/src/themes/Tokenizer.css +1 -5
  417. package/src/themes/YearPicker.css +1 -1
  418. package/src/themes/base/DayPicker-parameters.css +3 -0
  419. package/src/themes/base/Dialog-parameters.css +8 -0
  420. package/src/themes/sap_belize/DayPicker-parameters.css +1 -1
  421. package/src/themes/sap_belize_hcb/Button-parameters.css +1 -0
  422. package/src/themes/sap_belize_hcb/DayPicker-parameters.css +7 -0
  423. package/src/themes/sap_belize_hcw/Button-parameters.css +1 -0
  424. package/src/themes/sap_belize_hcw/DayPicker-parameters.css +7 -0
  425. package/src/themes/sap_fiori_3_hcb/Button-parameters.css +1 -0
  426. package/src/themes/sap_fiori_3_hcb/Dialog-parameters.css +8 -0
  427. package/src/themes/sap_fiori_3_hcw/Button-parameters.css +1 -0
  428. package/src/themes/sap_fiori_3_hcw/Dialog-parameters.css +8 -0
  429. package/src/themes/sap_horizon/parameters-bundle.css +1 -1
  430. package/src/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  431. package/src/themes/sap_horizon_hcb/Dialog-parameters.css +4 -0
  432. package/src/themes/sap_horizon_hcw/Dialog-parameters.css +4 -0
  433. package/dist/assets/SAP-icons-business-suite.60260cdf.js +0 -1
  434. package/dist/assets/SAP-icons.09567bd9.js +0 -1
  435. package/dist/assets/SAP-icons.1f482d05.js +0 -1
  436. package/dist/assets/messagebundle_bg.2847106f.js +0 -1
  437. package/dist/assets/messagebundle_ca.a57e2b25.js +0 -1
  438. package/dist/assets/messagebundle_cs.7317c812.js +0 -1
  439. package/dist/assets/messagebundle_cy.cf159ee2.js +0 -1
  440. package/dist/assets/messagebundle_da.45ddb5f2.js +0 -1
  441. package/dist/assets/messagebundle_de.a2ed57e0.js +0 -1
  442. package/dist/assets/messagebundle_el.cc7c4228.js +0 -1
  443. package/dist/assets/messagebundle_es.68eae4a3.js +0 -1
  444. package/dist/assets/messagebundle_es_MX.f1ce6188.js +0 -1
  445. package/dist/assets/messagebundle_et.32653f21.js +0 -1
  446. package/dist/assets/messagebundle_fi.7d9af1c0.js +0 -1
  447. package/dist/assets/messagebundle_fr.31570418.js +0 -1
  448. package/dist/assets/messagebundle_fr_CA.20034eb3.js +0 -1
  449. package/dist/assets/messagebundle_hi.beb64c73.js +0 -1
  450. package/dist/assets/messagebundle_hr.f3cfd0a7.js +0 -1
  451. package/dist/assets/messagebundle_hu.7727a1b0.js +0 -1
  452. package/dist/assets/messagebundle_it.6b85706f.js +0 -1
  453. package/dist/assets/messagebundle_iw.ba411691.js +0 -1
  454. package/dist/assets/messagebundle_kk.d32ae843.js +0 -1
  455. package/dist/assets/messagebundle_ko.97757f5f.js +0 -1
  456. package/dist/assets/messagebundle_lt.81f483bb.js +0 -1
  457. package/dist/assets/messagebundle_lv.8ca68fa3.js +0 -1
  458. package/dist/assets/messagebundle_nl.b7818097.js +0 -1
  459. package/dist/assets/messagebundle_no.8d97d8b6.js +0 -1
  460. package/dist/assets/messagebundle_pl.33bfbaab.js +0 -1
  461. package/dist/assets/messagebundle_pt.0640df89.js +0 -1
  462. package/dist/assets/messagebundle_pt_PT.e589bfc5.js +0 -1
  463. package/dist/assets/messagebundle_ro.7f593d44.js +0 -1
  464. package/dist/assets/messagebundle_ru.8d5a23af.js +0 -1
  465. package/dist/assets/messagebundle_sh.40d49901.js +0 -1
  466. package/dist/assets/messagebundle_sk.246c90b7.js +0 -1
  467. package/dist/assets/messagebundle_sl.13add15c.js +0 -1
  468. package/dist/assets/messagebundle_sv.4387678d.js +0 -1
  469. package/dist/assets/messagebundle_th.55879e31.js +0 -1
  470. package/dist/assets/messagebundle_tr.f26a0050.js +0 -1
  471. package/dist/assets/messagebundle_uk.d2de274c.js +0 -1
  472. package/dist/assets/messagebundle_vi.f4533729.js +0 -1
  473. package/dist/assets/messagebundle_zh_CN.3892081e.js +0 -1
  474. package/dist/assets/messagebundle_zh_TW.0bb64d49.js +0 -1
  475. package/dist/assets/parameters-bundle.css.15bec13d.js +0 -1
  476. package/dist/assets/parameters-bundle.css.278628a2.js +0 -1
  477. package/dist/assets/parameters-bundle.css.31ea3347.js +0 -1
  478. package/dist/assets/parameters-bundle.css.4f500511.js +0 -1
  479. package/dist/assets/parameters-bundle.css.572a1598.js +0 -1
  480. package/dist/assets/parameters-bundle.css.5a6e960a.js +0 -1
  481. package/dist/assets/parameters-bundle.css.5c8d3b46.js +0 -1
  482. package/dist/assets/parameters-bundle.css.608c209a.js +0 -1
  483. package/dist/assets/parameters-bundle.css.9a4a59b6.js +0 -1
  484. package/dist/assets/parameters-bundle.css.c269a39b.js +0 -1
  485. package/dist/assets/parameters-bundle.css.c65b0aec.js +0 -1
  486. package/dist/assets/parameters-bundle.css.cd453338.js +0 -1
@@ -13,6 +13,7 @@ import {
13
13
  isDown,
14
14
  isRight,
15
15
  isLeft,
16
+ isUp,
16
17
  } from "@ui5/webcomponents-base/dist/Keys.js";
17
18
  import MediaRange from "@ui5/webcomponents-base/dist/MediaRange.js";
18
19
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
@@ -45,6 +46,8 @@ import TabsOverflowMode from "./types/TabsOverflowMode.js";
45
46
  const tabStyles = [];
46
47
  const staticAreaTabStyles = [];
47
48
 
49
+ const PAGE_UP_DOWN_SIZE = 5;
50
+
48
51
  /**
49
52
  * @public
50
53
  */
@@ -156,8 +159,8 @@ const metadata = {
156
159
  * @type {boolean}
157
160
  * @defaultvalue false
158
161
  * @public
159
- * @deprecated Since the introduction of TabsOverflowMode overflows will always be visible if there is not enough space for all tabs,
160
- * all hidden tabs are moved to a select list in the respective overflows and are accessible via the overflowButton and / or startOverflowButton
162
+ * @deprecated Since the introduction of TabsOverflowMode, overflows will always be visible if there is not enough space for all tabs,
163
+ * all hidden tabs are moved to a select list in the respective overflows and are accessible via the <code>overflowButton</code> and / or <code>startOverflowButton</code> slots.
161
164
  */
162
165
  showOverflow: {
163
166
  type: Boolean,
@@ -261,8 +264,9 @@ const metadata = {
261
264
  *
262
265
  * @event sap.ui.webcomponents.main.TabContainer#tab-select
263
266
  * @param {HTMLElement} tab The selected <code>tab</code>.
264
- * @param {Integer} tabIndex The selected <code>tab</code> index.
267
+ * @param {Integer} tabIndex The selected <code>tab</code> index in the flattened array of all tabs and their subTabs, provided by the <code>allItems</code> getter.
265
268
  * @public
269
+ * @allowPreventDefault
266
270
  */
267
271
  "tab-select": {
268
272
  detail: {
@@ -368,7 +372,8 @@ class TabContainer extends UI5Element {
368
372
 
369
373
  // Init ItemNavigation
370
374
  this._itemNavigation = new ItemNavigation(this, {
371
- getItemsCallback: () => this._getFocusableTabs(),
375
+ getItemsCallback: () => this._getFocusableRefs(),
376
+ skipItemsSize: PAGE_UP_DOWN_SIZE,
372
377
  });
373
378
  }
374
379
 
@@ -384,8 +389,7 @@ class TabContainer extends UI5Element {
384
389
  this._selectedTab._selected = true;
385
390
  }
386
391
  }
387
-
388
- this._setItemsExternalProperties(this.items);
392
+ this._setItemsPrivateProperties(this.items);
389
393
 
390
394
  if (!this._animationRunning) {
391
395
  this._contentCollapsed = this.collapsed;
@@ -397,9 +401,12 @@ class TabContainer extends UI5Element {
397
401
  }
398
402
 
399
403
  onAfterRendering() {
400
- this.items.forEach(item => {
401
- item._tabInStripDomRef = this.getDomRef().querySelector(`*[data-ui5-stable="${item.stableDomRef}"]`);
402
- });
404
+ this._setItemsForStrip();
405
+
406
+ if (!this.shadowRoot.contains(document.activeElement)) {
407
+ const focusStart = this._getRootTab(this._selectedTab);
408
+ this._itemNavigation.setCurrentItem(focusStart);
409
+ }
403
410
  }
404
411
 
405
412
  onEnterDOM() {
@@ -424,31 +431,45 @@ class TabContainer extends UI5Element {
424
431
  this.mediaRange = MediaRange.getCurrentRange(MediaRange.RANGESETS.RANGE_4STEPS, this.getDomRef().offsetWidth);
425
432
  }
426
433
 
427
- _setItemsExternalProperties(items) {
428
- items.filter(item => !item.isSeparator).forEach((item, index, arr) => {
429
- item._isInline = this.tabLayout === TabLayout.Inline;
430
- item._mixedMode = this.mixedMode;
431
- item._posinset = index + 1;
432
- item._setsize = arr.length;
433
- item._getTabContainerHeaderItemCallback = _ => this.getDomRef().querySelector(`#${item._id}`);
434
- item._itemSelectCallback = this._onItemSelect.bind(this);
435
- item._getRealDomRef = () => this.getDomRef().querySelector(`*[data-ui5-stable=${item.stableDomRef}]`);
436
- item._realTab = this._selectedTab;
437
- item._isTopLevelTab = this.items.some(i => i === item);
438
- walk(items, tab => {
439
- tab._realTab = item._realTab;
434
+ _setItemsPrivateProperties(items) {
435
+ // set real dom ref to all items, then return only the tabs for further processing
436
+ const allTabs = items.filter(item => {
437
+ item._getElementInStrip = () => this.getDomRef().querySelector(`*[data-ui5-stable=${item.stableDomRef}]`);
438
+ return !item.isSeparator;
439
+ });
440
+
441
+ allTabs.forEach((tab, index, arr) => {
442
+ tab._isInline = this.tabLayout === TabLayout.Inline;
443
+ tab._mixedMode = this.mixedMode;
444
+ tab._posinset = index + 1;
445
+ tab._setsize = arr.length;
446
+ tab._realTab = this._selectedTab;
447
+ tab._isTopLevelTab = items.some(i => i === tab);
448
+ walk(items, _tab => {
449
+ _tab._realTab = tab._realTab;
440
450
  });
441
451
  });
442
452
  }
443
453
 
454
+ _onHeaderFocusin(event) {
455
+ let target = event.target;
456
+
457
+ const tab = getTab(target);
458
+ if (tab) {
459
+ target = tab._realTab;
460
+ }
461
+
462
+ this._itemNavigation.setCurrentItem(target);
463
+ }
464
+
444
465
  async _onTabStripClick(event) {
445
466
  const tab = getTab(event.target);
446
467
  if (!tab || tab._realTab.disabled) {
447
468
  return;
448
469
  }
449
470
 
450
- event.preventDefault();
451
471
  event.stopPropagation();
472
+ event.preventDefault();
452
473
  if (event.target.hasAttribute("ui5-button")) {
453
474
  this._onTabExpandButtonClick(event);
454
475
  return;
@@ -462,10 +483,10 @@ class TabContainer extends UI5Element {
462
483
  if (this.responsivePopover.opened) {
463
484
  this.responsivePopover.close();
464
485
  } else {
465
- this._setInitialFocus(this._getSelectedInPopover());
486
+ this._setPopoverInitialFocus();
466
487
  }
467
488
 
468
- this.responsivePopover.showAt(tab);
489
+ this.responsivePopover.showAt(tab._realTab.getTabInStripDomRef());
469
490
  return;
470
491
  }
471
492
  this._onHeaderItemSelect(tab);
@@ -496,20 +517,27 @@ class TabContainer extends UI5Element {
496
517
  this._addStyleIndent(this._overflowItems);
497
518
 
498
519
  this.responsivePopover = await this._respPopover();
499
- if (this.responsivePopover.opened) {
520
+ if (this.responsivePopover.isOpen()) {
500
521
  this.responsivePopover.close();
501
522
  } else {
502
- this._setInitialFocus(this._getSelectedInPopover());
523
+ this._setPopoverInitialFocus();
503
524
  }
504
525
  this.responsivePopover.showAt(button);
505
526
  }
506
527
 
507
- _setInitialFocus(selectedInPopover) {
508
- if (selectedInPopover.length) {
509
- this.responsivePopover.initialFocus = selectedInPopover[0].id;
510
- } else {
511
- this.responsivePopover.initialFocus = this.responsivePopover.content[0].items.filter(item => item.classList.contains("ui5-tab-overflow-item"))[0].id;
512
- }
528
+ async _setPopoverInitialFocus() {
529
+ const selectedTabInOverflow = this._getSelectedTabInOverflow();
530
+ const tab = selectedTabInOverflow || this._getFirstFocusableItemInOverflow();
531
+
532
+ this.responsivePopover.initialFocus = `${tab._realTab._id}-li`;
533
+ }
534
+
535
+ _getSelectedTabInOverflow() {
536
+ return this.responsivePopover.content[0].items.find(item => (item._realTab && item._realTab.selected));
537
+ }
538
+
539
+ _getFirstFocusableItemInOverflow() {
540
+ return this.responsivePopover.content[0].items.find(item => item.classList.contains("ui5-tab-overflow-item"));
513
541
  }
514
542
 
515
543
  _onTabStripKeyDown(event) {
@@ -530,7 +558,7 @@ class TabContainer extends UI5Element {
530
558
  event.preventDefault(); // prevent scrolling
531
559
  }
532
560
 
533
- if (isDown(event)) {
561
+ if (isDown(event) || isUp(event)) {
534
562
  if (tab._realTab.requiresExpandButton) {
535
563
  this._onTabExpandButtonClick(event);
536
564
  }
@@ -558,26 +586,44 @@ class TabContainer extends UI5Element {
558
586
 
559
587
  _onHeaderItemSelect(tab) {
560
588
  if (!tab.hasAttribute("disabled")) {
561
- this._onItemSelect(tab);
562
-
563
- if (!this.isModeStartAndEnd) {
564
- this._setItemsForStrip();
565
- }
589
+ this._onItemSelect(tab.id);
566
590
  }
567
591
  }
568
592
 
569
593
  async _onOverflowListItemClick(event) {
570
594
  event.preventDefault(); // cancel the item selection
571
- const { item } = event.detail;
572
595
 
573
- this._onItemSelect(item);
574
- await this.responsivePopover.close();
596
+ this._onItemSelect(event.detail.item.id.slice(0, -3)); // strip "-li" from end of id
575
597
 
576
- this._setItemsForStrip();
598
+ this.responsivePopover.close();
599
+ await renderFinished();
577
600
 
578
601
  const selectedTopLevel = this._getRootTab(this._selectedTab);
579
-
580
- selectedTopLevel.focus();
602
+ selectedTopLevel.getTabInStripDomRef().focus();
603
+ }
604
+
605
+ /**
606
+ * Returns all slotted tabs and their subTabs in a flattened array.
607
+ * The order of tabs is depth-first. For example, given the following slotted elements:
608
+ * <code>
609
+ * <ui5-tabcontainer>
610
+ * <ui5-tab id="First">
611
+ * ...
612
+ * <ui5-tab slot="subTabs" id="Nested">...</ui5-tab>
613
+ * </ui5-tab>
614
+ * <ui5-tab id="Second">...</ui5-tab>
615
+ * <ui5-tab-separator id="sep"></ui5-tab-separator>
616
+ * <ui5-tab id="Third">...</ui5-tab>
617
+ * </ui5-tabcontainer>
618
+ * </code>
619
+ * Calling <code>allItems</code> on this TabContainer will return the instances in the following order:
620
+ * <code>[ ui5-tab#First, ui5-tab#Nested, ui5-tab#Second, ui5-tab-separator#sep, ui5-tab#Third ]</code>
621
+ * @public
622
+ *
623
+ * @returns {sap.ui.webcomponents.main.ITab[]}
624
+ */
625
+ get allItems() {
626
+ return this._getAllSubItems(this.items);
581
627
  }
582
628
 
583
629
  _getAllSubItems(items, result = [], level = 1) {
@@ -593,44 +639,44 @@ class TabContainer extends UI5Element {
593
639
  return result;
594
640
  }
595
641
 
596
- _onItemSelect(target) {
597
- const selectedIndex = findIndex(this._allItemsAndSubItems, item => item.__id === target.id);
598
- const selectedTabIndex = findIndex(this._allItemsAndSubItems, item => item.__id === target.id);
599
- const selectedTab = this._allItemsAndSubItems[selectedIndex];
642
+ _onItemSelect(selectedTabId) {
643
+ const previousTab = this._selectedTab;
644
+ const selectedTabIndex = this._allItemsAndSubItems.findIndex(item => item.__id === selectedTabId);
645
+ const selectedTab = this._allItemsAndSubItems[selectedTabIndex];
600
646
 
601
- // update selected items
602
- this._allItemsAndSubItems
603
- .forEach((item, index) => {
604
- const selected = selectedIndex === index;
605
- item.selected = selected;
647
+ const selectionSuccessful = this.selectTab(selectedTab, selectedTabIndex);
648
+ if (!selectionSuccessful) {
649
+ return;
650
+ }
606
651
 
607
- if (item._selected) {
608
- item._selected = false;
609
- }
610
- });
652
+ // update selected property on all items
653
+ this._allItemsAndSubItems.forEach((item, index) => {
654
+ const selected = selectedTabIndex === index;
655
+ item.selected = selected;
656
+
657
+ if (item._selected) {
658
+ item._selected = false;
659
+ }
660
+ });
611
661
 
612
662
  if (this.fixed) {
613
- this.selectTab(selectedTab, selectedTabIndex);
614
663
  return;
615
664
  }
616
665
 
617
666
  if (!this.animate) {
618
- this.toggle(selectedTab);
619
- this.selectTab(selectedTab, selectedTabIndex);
620
- return;
667
+ this.toggle(selectedTab, previousTab);
668
+ } else {
669
+ this.toggleAnimated(selectedTab, previousTab);
621
670
  }
622
-
623
- this.toggleAnimated(selectedTab);
624
- this.selectTab(selectedTab, selectedTabIndex);
625
671
  }
626
672
 
627
- async toggleAnimated(selectedTab) {
673
+ async toggleAnimated(selectedTab, previousTab) {
628
674
  const content = this.shadowRoot.querySelector(".ui5-tc__content");
629
675
  let animationPromise = null;
630
676
 
631
677
  this._animationRunning = true;
632
678
 
633
- if (selectedTab === this._selectedTab) {
679
+ if (selectedTab === previousTab) {
634
680
  // click on already selected tab - animate both directions
635
681
  this.collapsed = !this.collapsed;
636
682
  animationPromise = this.collapsed ? this.slideContentUp(content) : this.slideContentDown(content);
@@ -645,21 +691,31 @@ class TabContainer extends UI5Element {
645
691
  this._animationRunning = false;
646
692
  }
647
693
 
648
- toggle(selectedTab) {
649
- if (selectedTab === this._selectedTab) {
694
+ toggle(selectedTab, previousTab) {
695
+ if (selectedTab === previousTab) {
650
696
  this.collapsed = !this.collapsed;
651
697
  } else {
652
698
  this.collapsed = false;
653
699
  }
654
700
  }
655
701
 
702
+ /**
703
+ * Fires the <code>tab-select</code> event and changes the internal reference for the currently selected tab.
704
+ * If the event is prevented, the current tab is not changed.
705
+ * @private
706
+ *
707
+ * @param {object} selectedTab selected tab instance
708
+ * @param {number} selectedTabIndex selected tab index for an array containing all tabs and sub tabs. <b>Note:</b> Use the method <code>allTabs</code> to get this array.
709
+ * @returns {boolean} true if the tab selection is successful, false if it was prevented
710
+ */
656
711
  selectTab(selectedTab, selectedTabIndex) {
712
+ if (!this.fireEvent("tab-select", { tab: selectedTab, tabIndex: selectedTabIndex }, true)) {
713
+ return false;
714
+ }
715
+
657
716
  // select the tab
658
717
  this._selectedTab = selectedTab;
659
- this.fireEvent("tab-select", {
660
- tab: selectedTab,
661
- tabIndex: selectedTabIndex,
662
- });
718
+ return true;
663
719
  }
664
720
 
665
721
  slideContentDown(element) {
@@ -679,44 +735,34 @@ class TabContainer extends UI5Element {
679
735
  const overflow = event.currentTarget;
680
736
  const isEndOverflow = overflow.classList.contains("ui5-tc__overflow--end");
681
737
  const isStartOverflow = overflow.classList.contains("ui5-tc__overflow--start");
682
- const items = [];
683
-
684
738
  const overflowAttr = isEndOverflow ? "end-overflow" : "start-overflow";
685
739
 
686
- this._overflowItems = [];
740
+ this._overflowItems = this.items.filter(item => {
741
+ const stripRef = item.getTabInStripDomRef();
687
742
 
688
- this.items.forEach(item => {
689
- if (item.getTabInStripDomRef() && item.getTabInStripDomRef().hasAttribute(overflowAttr)) {
690
- items.push(item);
691
- }
743
+ return stripRef && stripRef.hasAttribute(overflowAttr);
692
744
  });
693
745
 
694
- let button;
746
+ this._addStyleIndent(this._overflowItems);
747
+
748
+ let opener;
695
749
  if (isEndOverflow) {
696
- button = this.overflowButton[0] || overflow.querySelector("[ui5-button]");
697
- this._overflowItems = items;
698
- this._addStyleIndent(this._overflowItems);
750
+ opener = this.overflowButton[0] || this._getEndOverflowBtnDOM();
699
751
  }
700
752
 
701
753
  if (isStartOverflow) {
702
- button = this.startOverflowButton[0] || overflow.querySelector("[ui5-button]");
703
- this._overflowItems = items;
704
- this._addStyleIndent(this._overflowItems);
754
+ opener = this.startOverflowButton[0] || this._getStartOverflowBtnDOM();
705
755
  }
706
756
 
707
757
  this.responsivePopover = await this._respPopover();
708
758
  if (this.responsivePopover.opened) {
709
759
  this.responsivePopover.close();
710
760
  } else {
711
- this.responsivePopover.initialFocus = this.responsivePopover.content[0].items.filter(item => item.classList.contains("ui5-tab-overflow-item"))[0].id;
712
- await this.responsivePopover.showAt(button);
761
+ this._setPopoverInitialFocus();
762
+ this.responsivePopover.showAt(opener);
713
763
  }
714
764
  }
715
765
 
716
- _getSelectedInPopover() {
717
- return this.responsivePopover.content[0].items.filter(item => (item._realTab && item._realTab.selected));
718
- }
719
-
720
766
  _addStyleIndent(tabs) {
721
767
  const extraIndent = this._getAllSubItems(tabs)
722
768
  .filter(tab => !tab.isSeparator)
@@ -737,10 +783,13 @@ class TabContainer extends UI5Element {
737
783
  }
738
784
 
739
785
  async _onOverflowKeyDown(event) {
740
- const isEndOverflow = event.currentTarget.classList.contains("ui5-tc__overflow--end");
741
- const isStartOverflow = event.currentTarget.classList.contains("ui5-tc__overflow--start");
786
+ const overflow = event.currentTarget;
787
+ const isEndOverflow = overflow.classList.contains("ui5-tc__overflow--end");
788
+ const isStartOverflow = overflow.classList.contains("ui5-tc__overflow--start");
742
789
 
743
790
  if (isDown(event) || (isStartOverflow && isLeft(event)) || (isEndOverflow && isRight(event))) {
791
+ event.stopPropagation();
792
+ event.preventDefault();
744
793
  await this._onOverflowClick(event);
745
794
  }
746
795
  }
@@ -771,9 +820,7 @@ class TabContainer extends UI5Element {
771
820
  });
772
821
 
773
822
  const hasOverflow = tabStrip.offsetWidth < allItemsWidth;
774
-
775
823
  if (!hasOverflow) {
776
- this._closeRespPopover();
777
824
  return;
778
825
  }
779
826
 
@@ -783,9 +830,6 @@ class TabContainer extends UI5Element {
783
830
  } else {
784
831
  this._updateEndOverflow(itemsDomRefs);
785
832
  }
786
-
787
- this._itemNavigation._init();
788
- this._itemNavigation.setCurrentItem(this._getRootTab(this._selectedTab));
789
833
  }
790
834
 
791
835
  _getRootTab(tab) {
@@ -1033,41 +1077,31 @@ class TabContainer extends UI5Element {
1033
1077
  this._endOverflowText = `+${endOverflowItemsCount}`;
1034
1078
  }
1035
1079
 
1036
- async _closeRespPopover() {
1037
- this.responsivePopover = await this._respPopover();
1038
- this.responsivePopover.close();
1039
- }
1040
-
1041
- _getFocusableTabs() {
1080
+ _getFocusableRefs() {
1042
1081
  if (!this.getDomRef()) {
1043
1082
  return [];
1044
1083
  }
1045
1084
 
1046
- const focusableTabs = [];
1085
+ const focusableRefs = [];
1047
1086
 
1048
1087
  if (!this._getStartOverflow().hasAttribute("hidden")) {
1049
- if (this._getCustomStartOverflowBtnDOM()) {
1050
- focusableTabs.push(this._getCustomStartOverflowBtnDOM());
1051
- } else {
1052
- focusableTabs.push(this._getStartOverflowBtnDOM());
1053
- }
1088
+ focusableRefs.push(this.startOverflowButton[0] || this._getStartOverflowBtnDOM());
1054
1089
  }
1055
1090
 
1056
1091
  this._getTabs().forEach(tab => {
1057
- if (tab.getTabInStripDomRef() && !tab.getTabInStripDomRef().hasAttribute("hidden")) {
1058
- focusableTabs.push(tab);
1092
+ const ref = tab.getTabInStripDomRef();
1093
+ const focusable = ref && !ref.hasAttribute("hidden");
1094
+
1095
+ if (focusable) {
1096
+ focusableRefs.push(tab);
1059
1097
  }
1060
1098
  });
1061
1099
 
1062
1100
  if (!this._getEndOverflow().hasAttribute("hidden")) {
1063
- if (this._getCustomEndOverflowBtnDOM()) {
1064
- focusableTabs.push(this._getCustomEndOverflowBtnDOM());
1065
- } else {
1066
- focusableTabs.push(this._getEndOverflowBtnDOM());
1067
- }
1101
+ focusableRefs.push(this.overflowButton[0] || this._getEndOverflowBtnDOM());
1068
1102
  }
1069
1103
 
1070
- return focusableTabs;
1104
+ return focusableRefs;
1071
1105
  }
1072
1106
 
1073
1107
  _getHeader() {
@@ -1090,18 +1124,10 @@ class TabContainer extends UI5Element {
1090
1124
  return this.shadowRoot.querySelector(".ui5-tc__overflow--end");
1091
1125
  }
1092
1126
 
1093
- _getCustomStartOverflowBtnDOM() {
1094
- return this.shadowRoot.querySelector("slot[name=startOverflowButton]");
1095
- }
1096
-
1097
1127
  _getStartOverflowBtnDOM() {
1098
1128
  return this._getStartOverflow().querySelector("[ui5-button]");
1099
1129
  }
1100
1130
 
1101
- _getCustomEndOverflowBtnDOM() {
1102
- return this.shadowRoot.querySelector("slot[name=overflowButton]");
1103
- }
1104
-
1105
1131
  _getEndOverflowBtnDOM() {
1106
1132
  return this._getEndOverflow().querySelector("[ui5-button]");
1107
1133
  }
@@ -1211,18 +1237,6 @@ const getTab = el => {
1211
1237
  return false;
1212
1238
  };
1213
1239
 
1214
- const findIndex = (arr, predicate) => {
1215
- for (let i = 0; i < arr.length; i++) {
1216
- const result = predicate(arr[i]);
1217
-
1218
- if (result) {
1219
- return i;
1220
- }
1221
- }
1222
-
1223
- return -1;
1224
- };
1225
-
1226
1240
  const walk = (tabs, callback) => {
1227
1241
  [...tabs].forEach(tab => {
1228
1242
  callback(tab);
@@ -58,8 +58,15 @@ class TabSeparator extends UI5Element {
58
58
  return true;
59
59
  }
60
60
 
61
+ /**
62
+ * Returns the DOM reference of the separator that is placed in the header.
63
+ * <b>Note:</b> Tabs and separators, placed in the <code>subTabs</code> slot of other tabs are not shown in the header. Calling this method on such tabs or separators will return <code>null</code>.
64
+ *
65
+ * @function
66
+ * @public
67
+ */
61
68
  getTabInStripDomRef() {
62
- return this._tabInStripDomRef;
69
+ return this._getElementInStrip();
63
70
  }
64
71
 
65
72
  get stableDomRef() {
package/dist/TextArea.js CHANGED
@@ -3,6 +3,7 @@ import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
4
4
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
5
5
  import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AriaLabelHelper.js";
6
+ import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
6
7
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
8
  import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
8
9
  import { isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
@@ -534,9 +535,9 @@ class TextArea extends UI5Element {
534
535
  leftCharactersCount;
535
536
 
536
537
  if (this.showExceededText) {
537
- const maxLength = this.maxlength || 0;
538
+ const maxLength = this.maxlength;
538
539
 
539
- if (maxLength) {
540
+ if (maxLength !== null) {
540
541
  leftCharactersCount = maxLength - this.value.length;
541
542
 
542
543
  if (leftCharactersCount >= 0) {
@@ -556,6 +557,10 @@ class TextArea extends UI5Element {
556
557
 
557
558
  get classes() {
558
559
  return {
560
+ root: {
561
+ "ui5-textarea-root": true,
562
+ "ui5-content-native-scrollbars": getEffectiveScrollbarStyle(),
563
+ },
559
564
  valueStateMsg: {
560
565
  "ui5-valuestatemessage--error": this.valueState === ValueState.Error,
561
566
  "ui5-valuestatemessage--warning": this.valueState === ValueState.Warning,
@@ -14,6 +14,10 @@ import {
14
14
  isPageDownShift,
15
15
  isPageUpShiftCtrl,
16
16
  isPageDownShiftCtrl,
17
+ isTabNext,
18
+ isTabPrevious,
19
+ isF6Next,
20
+ isF6Previous,
17
21
  } from "@ui5/webcomponents-base/dist/Keys.js";
18
22
  import "@ui5/webcomponents-icons/dist/time-entry-request.js";
19
23
  import Icon from "./Icon.js";
@@ -348,6 +352,10 @@ class TimePickerBase extends UI5Element {
348
352
  this.togglePicker();
349
353
  }
350
354
 
355
+ if ((this._getInput().isEqualNode(e.target) && this.isOpen()) && (isTabNext(e) || isTabPrevious(e) || isF6Next(e) || isF6Previous(e))) {
356
+ this.closePicker();
357
+ }
358
+
351
359
  if (this.isOpen()) {
352
360
  return;
353
361
  }
@@ -28,7 +28,6 @@ import {
28
28
  TIMEPICKER_HOURS_LABEL,
29
29
  TIMEPICKER_MINUTES_LABEL,
30
30
  TIMEPICKER_SECONDS_LABEL,
31
- TIMEPICKER_PERIODS_LABEL,
32
31
  } from "./generated/i18n/i18n-defaults.js";
33
32
 
34
33
  // Styles
@@ -478,7 +477,7 @@ class TimeSelection extends UI5Element {
478
477
  }
479
478
 
480
479
  get periodSliderTitle() {
481
- return TimeSelection.i18nBundle.getText(TIMEPICKER_PERIODS_LABEL);
480
+ return "AM/PM";
482
481
  }
483
482
 
484
483
  get classes() {