@ui5/webcomponents 2.27.1 → 2.28.0-rc.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 (570) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/Avatar.d.ts +13 -7
  4. package/dist/Avatar.js +10 -6
  5. package/dist/Avatar.js.map +1 -1
  6. package/dist/AvatarGroup.d.ts +2 -2
  7. package/dist/AvatarGroup.js +3 -3
  8. package/dist/AvatarGroup.js.map +1 -1
  9. package/dist/Bar.d.ts +1 -1
  10. package/dist/Bar.js +1 -1
  11. package/dist/Bar.js.map +1 -1
  12. package/dist/Breadcrumbs.d.ts +2 -1
  13. package/dist/Breadcrumbs.js +2 -1
  14. package/dist/Breadcrumbs.js.map +1 -1
  15. package/dist/BreadcrumbsItem.d.ts +1 -1
  16. package/dist/BreadcrumbsItem.js +1 -1
  17. package/dist/BreadcrumbsItem.js.map +1 -1
  18. package/dist/BusyIndicator.d.ts +2 -2
  19. package/dist/BusyIndicator.js +1 -1
  20. package/dist/BusyIndicator.js.map +1 -1
  21. package/dist/Button.d.ts +4 -3
  22. package/dist/Button.js +3 -2
  23. package/dist/Button.js.map +1 -1
  24. package/dist/Calendar.d.ts +4 -1
  25. package/dist/Calendar.js +4 -1
  26. package/dist/Calendar.js.map +1 -1
  27. package/dist/CalendarLegend.d.ts +1 -0
  28. package/dist/CalendarLegend.js +1 -0
  29. package/dist/CalendarLegend.js.map +1 -1
  30. package/dist/Card.d.ts +4 -3
  31. package/dist/Card.js +1 -0
  32. package/dist/Card.js.map +1 -1
  33. package/dist/CardHeader.d.ts +1 -1
  34. package/dist/CardHeader.js +1 -1
  35. package/dist/CardHeader.js.map +1 -1
  36. package/dist/Carousel.d.ts +13 -13
  37. package/dist/Carousel.js +12 -12
  38. package/dist/Carousel.js.map +1 -1
  39. package/dist/CheckBox.d.ts +1 -1
  40. package/dist/CheckBox.js +1 -1
  41. package/dist/CheckBox.js.map +1 -1
  42. package/dist/ColorPalette.d.ts +9 -5
  43. package/dist/ColorPalette.js +12 -5
  44. package/dist/ColorPalette.js.map +1 -1
  45. package/dist/ColorPaletteItem.d.ts +2 -2
  46. package/dist/ColorPaletteItem.js +2 -2
  47. package/dist/ColorPaletteItem.js.map +1 -1
  48. package/dist/ColorPalettePopover.d.ts +2 -2
  49. package/dist/ColorPalettePopover.js +2 -2
  50. package/dist/ColorPalettePopover.js.map +1 -1
  51. package/dist/ColorPicker.d.ts +3 -1
  52. package/dist/ColorPicker.js +7 -1
  53. package/dist/ColorPicker.js.map +1 -1
  54. package/dist/ComboBox.d.ts +35 -7
  55. package/dist/ComboBox.js +134 -8
  56. package/dist/ComboBox.js.map +1 -1
  57. package/dist/ComboBoxItem.d.ts +1 -1
  58. package/dist/ComboBoxItem.js.map +1 -1
  59. package/dist/ComboBoxItemGroup.d.ts +1 -1
  60. package/dist/ComboBoxItemGroup.js +1 -1
  61. package/dist/ComboBoxItemGroup.js.map +1 -1
  62. package/dist/ComboBoxPopoverTemplate.js +43 -20
  63. package/dist/ComboBoxPopoverTemplate.js.map +1 -1
  64. package/dist/ComboBoxTemplate.js +4 -2
  65. package/dist/ComboBoxTemplate.js.map +1 -1
  66. package/dist/DateComponentBase.d.ts +3 -3
  67. package/dist/DateComponentBase.js +2 -2
  68. package/dist/DateComponentBase.js.map +1 -1
  69. package/dist/DatePicker.d.ts +5 -5
  70. package/dist/DatePicker.js +2 -2
  71. package/dist/DatePicker.js.map +1 -1
  72. package/dist/DateRangePicker.d.ts +1 -1
  73. package/dist/DateRangePicker.js +1 -1
  74. package/dist/DateRangePicker.js.map +1 -1
  75. package/dist/DateTimePicker.d.ts +1 -1
  76. package/dist/DateTimePicker.js +1 -1
  77. package/dist/DateTimePicker.js.map +1 -1
  78. package/dist/DayPicker.d.ts +1 -1
  79. package/dist/DayPicker.js +4 -3
  80. package/dist/DayPicker.js.map +1 -1
  81. package/dist/Dialog.d.ts +3 -3
  82. package/dist/Dialog.js +3 -3
  83. package/dist/Dialog.js.map +1 -1
  84. package/dist/FileUploader.d.ts +2 -2
  85. package/dist/FileUploader.js +1 -1
  86. package/dist/FileUploader.js.map +1 -1
  87. package/dist/Form.d.ts +2 -0
  88. package/dist/Form.js +2 -0
  89. package/dist/Form.js.map +1 -1
  90. package/dist/GridWalker.d.ts +1 -0
  91. package/dist/GridWalker.js +3 -0
  92. package/dist/GridWalker.js.map +1 -1
  93. package/dist/Input.d.ts +10 -6
  94. package/dist/Input.js +7 -3
  95. package/dist/Input.js.map +1 -1
  96. package/dist/InputIcon.d.ts +12 -1
  97. package/dist/InputIcon.js +15 -1
  98. package/dist/InputIcon.js.map +1 -1
  99. package/dist/Link.d.ts +17 -2
  100. package/dist/Link.js +16 -1
  101. package/dist/Link.js.map +1 -1
  102. package/dist/List.d.ts +9 -6
  103. package/dist/List.js +9 -6
  104. package/dist/List.js.map +1 -1
  105. package/dist/ListItem.d.ts +1 -1
  106. package/dist/ListItem.js +1 -1
  107. package/dist/ListItem.js.map +1 -1
  108. package/dist/ListItemBase.d.ts +1 -1
  109. package/dist/ListItemBase.js +1 -1
  110. package/dist/ListItemBase.js.map +1 -1
  111. package/dist/ListItemCustom.d.ts +1 -1
  112. package/dist/ListItemCustom.js.map +1 -1
  113. package/dist/ListItemStandard.d.ts +4 -4
  114. package/dist/ListItemStandard.js +1 -1
  115. package/dist/ListItemStandard.js.map +1 -1
  116. package/dist/Menu.d.ts +3 -0
  117. package/dist/Menu.js +3 -0
  118. package/dist/Menu.js.map +1 -1
  119. package/dist/MessageStrip.d.ts +3 -3
  120. package/dist/MessageStrip.js +3 -3
  121. package/dist/MessageStrip.js.map +1 -1
  122. package/dist/MonthPicker.js +1 -1
  123. package/dist/MonthPicker.js.map +1 -1
  124. package/dist/MultiComboBox.d.ts +7 -4
  125. package/dist/MultiComboBox.js +5 -2
  126. package/dist/MultiComboBox.js.map +1 -1
  127. package/dist/MultiInput.d.ts +1 -1
  128. package/dist/MultiInput.js +1 -1
  129. package/dist/MultiInput.js.map +1 -1
  130. package/dist/{NumberInput.d.ts → NumericInput.d.ts} +9 -9
  131. package/dist/{NumberInput.js → NumericInput.js} +50 -50
  132. package/dist/NumericInput.js.map +1 -0
  133. package/dist/NumericInputTemplate.d.ts +2 -0
  134. package/dist/{NumberInputTemplate.js → NumericInputTemplate.js} +6 -6
  135. package/dist/NumericInputTemplate.js.map +1 -0
  136. package/dist/Option.d.ts +1 -1
  137. package/dist/Option.js.map +1 -1
  138. package/dist/Panel.d.ts +3 -3
  139. package/dist/Panel.js +2 -2
  140. package/dist/Panel.js.map +1 -1
  141. package/dist/Popover.d.ts +13 -2
  142. package/dist/Popover.js +50 -3
  143. package/dist/Popover.js.map +1 -1
  144. package/dist/PopoverResize.d.ts +3 -0
  145. package/dist/PopoverResize.js +53 -23
  146. package/dist/PopoverResize.js.map +1 -1
  147. package/dist/PopoverTemplate.js +3 -1
  148. package/dist/PopoverTemplate.js.map +1 -1
  149. package/dist/Popup.d.ts +2 -2
  150. package/dist/Popup.js +2 -2
  151. package/dist/Popup.js.map +1 -1
  152. package/dist/ProgressIndicator.d.ts +1 -1
  153. package/dist/ProgressIndicator.js +1 -1
  154. package/dist/ProgressIndicator.js.map +1 -1
  155. package/dist/RadioButton.d.ts +1 -1
  156. package/dist/RadioButton.js +2 -2
  157. package/dist/RadioButton.js.map +1 -1
  158. package/dist/RangeSlider.d.ts +1 -1
  159. package/dist/RangeSlider.js +5 -4
  160. package/dist/RangeSlider.js.map +1 -1
  161. package/dist/RangeSliderTemplate.js +3 -3
  162. package/dist/RangeSliderTemplate.js.map +1 -1
  163. package/dist/RatingIndicator.d.ts +5 -5
  164. package/dist/RatingIndicator.js +4 -4
  165. package/dist/RatingIndicator.js.map +1 -1
  166. package/dist/ResponsivePopover.d.ts +2 -2
  167. package/dist/ResponsivePopover.js +2 -2
  168. package/dist/ResponsivePopover.js.map +1 -1
  169. package/dist/SegmentedButton.d.ts +2 -1
  170. package/dist/SegmentedButton.js +2 -1
  171. package/dist/SegmentedButton.js.map +1 -1
  172. package/dist/SegmentedButtonItem.d.ts +1 -1
  173. package/dist/SegmentedButtonItem.js.map +1 -1
  174. package/dist/Select.d.ts +7 -4
  175. package/dist/Select.js +5 -2
  176. package/dist/Select.js.map +1 -1
  177. package/dist/Slider.d.ts +2 -1
  178. package/dist/Slider.js +5 -1
  179. package/dist/Slider.js.map +1 -1
  180. package/dist/SliderBase.d.ts +1 -0
  181. package/dist/SliderBase.js +7 -1
  182. package/dist/SliderBase.js.map +1 -1
  183. package/dist/SliderHandle.d.ts +4 -0
  184. package/dist/SliderHandle.js +7 -0
  185. package/dist/SliderHandle.js.map +1 -1
  186. package/dist/SliderScale.d.ts +4 -0
  187. package/dist/SliderScale.js +13 -0
  188. package/dist/SliderScale.js.map +1 -1
  189. package/dist/SliderScaleTemplate.js +1 -1
  190. package/dist/SliderScaleTemplate.js.map +1 -1
  191. package/dist/SliderTemplate.js +1 -1
  192. package/dist/SliderTemplate.js.map +1 -1
  193. package/dist/StepInput.d.ts +8 -7
  194. package/dist/StepInput.js +6 -2
  195. package/dist/StepInput.js.map +1 -1
  196. package/dist/StepInputTemplate.js +2 -2
  197. package/dist/StepInputTemplate.js.map +1 -1
  198. package/dist/SuggestionItem.d.ts +1 -1
  199. package/dist/SuggestionItem.js.map +1 -1
  200. package/dist/SuggestionListItem.d.ts +1 -1
  201. package/dist/SuggestionListItem.js.map +1 -1
  202. package/dist/Switch.d.ts +1 -1
  203. package/dist/Switch.js +1 -1
  204. package/dist/Switch.js.map +1 -1
  205. package/dist/Tab.d.ts +1 -1
  206. package/dist/Tab.js +1 -1
  207. package/dist/Tab.js.map +1 -1
  208. package/dist/TabContainer.d.ts +4 -2
  209. package/dist/TabContainer.js +3 -1
  210. package/dist/TabContainer.js.map +1 -1
  211. package/dist/Table.d.ts +16 -3
  212. package/dist/Table.js +40 -4
  213. package/dist/Table.js.map +1 -1
  214. package/dist/TableGrowing.d.ts +1 -0
  215. package/dist/TableGrowing.js +12 -10
  216. package/dist/TableGrowing.js.map +1 -1
  217. package/dist/TableHeaderRow.d.ts +0 -6
  218. package/dist/TableHeaderRow.js +1 -19
  219. package/dist/TableHeaderRow.js.map +1 -1
  220. package/dist/TableHeaderRowTemplate.js +2 -12
  221. package/dist/TableHeaderRowTemplate.js.map +1 -1
  222. package/dist/TableNavigation.d.ts +1 -0
  223. package/dist/TableNavigation.js +7 -2
  224. package/dist/TableNavigation.js.map +1 -1
  225. package/dist/TableRow.js +2 -11
  226. package/dist/TableRow.js.map +1 -1
  227. package/dist/TableRowBase.d.ts +3 -7
  228. package/dist/TableRowBase.js +10 -26
  229. package/dist/TableRowBase.js.map +1 -1
  230. package/dist/TableRowTemplate.js +1 -3
  231. package/dist/TableRowTemplate.js.map +1 -1
  232. package/dist/TableSelection.d.ts +5 -6
  233. package/dist/TableSelection.js +28 -12
  234. package/dist/TableSelection.js.map +1 -1
  235. package/dist/TableSelectionBase.d.ts +15 -10
  236. package/dist/TableSelectionBase.js +33 -20
  237. package/dist/TableSelectionBase.js.map +1 -1
  238. package/dist/TableSelectionMulti.d.ts +5 -7
  239. package/dist/TableSelectionMulti.js +14 -10
  240. package/dist/TableSelectionMulti.js.map +1 -1
  241. package/dist/TableSelectionSingle.d.ts +3 -2
  242. package/dist/TableSelectionSingle.js +8 -2
  243. package/dist/TableSelectionSingle.js.map +1 -1
  244. package/dist/TableUtils.d.ts +3 -1
  245. package/dist/TableUtils.js +4 -1
  246. package/dist/TableUtils.js.map +1 -1
  247. package/dist/TextArea.d.ts +52 -5
  248. package/dist/TextArea.js +67 -6
  249. package/dist/TextArea.js.map +1 -1
  250. package/dist/TextAreaTemplate.js +2 -2
  251. package/dist/TextAreaTemplate.js.map +1 -1
  252. package/dist/TimePicker.d.ts +2 -2
  253. package/dist/TimePicker.js +1 -1
  254. package/dist/TimePicker.js.map +1 -1
  255. package/dist/Toast.d.ts +1 -1
  256. package/dist/Toast.js +1 -1
  257. package/dist/Toast.js.map +1 -1
  258. package/dist/Token.d.ts +2 -2
  259. package/dist/Token.js +1 -1
  260. package/dist/Token.js.map +1 -1
  261. package/dist/Tokenizer.d.ts +1 -0
  262. package/dist/Tokenizer.js +18 -1
  263. package/dist/Tokenizer.js.map +1 -1
  264. package/dist/Toolbar.d.ts +6 -0
  265. package/dist/Toolbar.js +6 -0
  266. package/dist/Toolbar.js.map +1 -1
  267. package/dist/Tree.d.ts +3 -1
  268. package/dist/Tree.js +5 -3
  269. package/dist/Tree.js.map +1 -1
  270. package/dist/TreeItem.d.ts +2 -2
  271. package/dist/TreeItem.js +1 -1
  272. package/dist/TreeItem.js.map +1 -1
  273. package/dist/TreeItemBase.d.ts +3 -3
  274. package/dist/TreeItemBase.js +3 -3
  275. package/dist/TreeItemBase.js.map +1 -1
  276. package/dist/YearPicker.js +1 -1
  277. package/dist/YearPicker.js.map +1 -1
  278. package/dist/bundle.esm.js +1 -1
  279. package/dist/bundle.esm.js.map +1 -1
  280. package/dist/css/themes/Avatar.css +1 -1
  281. package/dist/css/themes/AvatarGroup.css +1 -1
  282. package/dist/css/themes/ComboBox.css +1 -1
  283. package/dist/css/themes/ComboBoxPopover.css +1 -1
  284. package/dist/css/themes/FileUploader.css +1 -1
  285. package/dist/css/themes/Input.css +1 -1
  286. package/dist/css/themes/MultiComboBox.css +1 -1
  287. package/dist/css/themes/NumericInput.css +1 -0
  288. package/dist/css/themes/Popover.css +1 -1
  289. package/dist/css/themes/RatingIndicator.css +1 -1
  290. package/dist/css/themes/Select.css +1 -1
  291. package/dist/css/themes/SliderHandle.css +1 -1
  292. package/dist/css/themes/SliderScale.css +1 -1
  293. package/dist/css/themes/SplitButton.css +1 -1
  294. package/dist/css/themes/TextArea.css +1 -1
  295. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -2
  296. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -2
  297. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -2
  298. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -2
  299. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  300. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +786 -513
  301. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  302. package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +742 -494
  303. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  304. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  305. package/dist/custom-elements-internal.json +2708 -259
  306. package/dist/custom-elements.json +2394 -98
  307. package/dist/features/ColorPaletteMoreColorsTemplate.js +1 -1
  308. package/dist/features/ColorPaletteMoreColorsTemplate.js.map +1 -1
  309. package/dist/features/ComboBoxLazyLoading.d.ts +26 -0
  310. package/dist/features/ComboBoxLazyLoading.js +48 -0
  311. package/dist/features/ComboBoxLazyLoading.js.map +1 -0
  312. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  313. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  314. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  315. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  316. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  317. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  318. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  319. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  320. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  321. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  322. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  323. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  324. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  325. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  326. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  327. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  328. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  329. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  330. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  331. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  332. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  333. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  334. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  335. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  336. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  337. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  338. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  339. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  340. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  341. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  342. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  343. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  344. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  345. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  346. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  347. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  348. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  349. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  350. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  351. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  352. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  353. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  354. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  355. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  356. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  357. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  358. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  359. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  360. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  361. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  362. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  363. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  364. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  365. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  366. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  367. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  368. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  369. package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
  370. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  371. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  372. package/dist/generated/i18n/i18n-defaults.d.ts +9 -1
  373. package/dist/generated/i18n/i18n-defaults.js +10 -2
  374. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  375. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  376. package/dist/generated/themes/Avatar.css.js +1 -1
  377. package/dist/generated/themes/Avatar.css.js.map +1 -1
  378. package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
  379. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  380. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  381. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  382. package/dist/generated/themes/ComboBox.css.js +1 -1
  383. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  384. package/dist/generated/themes/ComboBoxPopover.css.d.ts +1 -1
  385. package/dist/generated/themes/ComboBoxPopover.css.js +1 -1
  386. package/dist/generated/themes/ComboBoxPopover.css.js.map +1 -1
  387. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  388. package/dist/generated/themes/FileUploader.css.js +1 -1
  389. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  390. package/dist/generated/themes/Input.css.d.ts +1 -1
  391. package/dist/generated/themes/Input.css.js +1 -1
  392. package/dist/generated/themes/Input.css.js.map +1 -1
  393. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  394. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  395. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  396. package/dist/generated/themes/NumericInput.css.d.ts +2 -0
  397. package/dist/generated/themes/NumericInput.css.js +8 -0
  398. package/dist/generated/themes/NumericInput.css.js.map +1 -0
  399. package/dist/generated/themes/Popover.css.d.ts +1 -1
  400. package/dist/generated/themes/Popover.css.js +1 -1
  401. package/dist/generated/themes/Popover.css.js.map +1 -1
  402. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  403. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  404. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  405. package/dist/generated/themes/Select.css.d.ts +1 -1
  406. package/dist/generated/themes/Select.css.js +1 -1
  407. package/dist/generated/themes/Select.css.js.map +1 -1
  408. package/dist/generated/themes/SliderHandle.css.d.ts +1 -1
  409. package/dist/generated/themes/SliderHandle.css.js +1 -1
  410. package/dist/generated/themes/SliderHandle.css.js.map +1 -1
  411. package/dist/generated/themes/SliderScale.css.d.ts +1 -1
  412. package/dist/generated/themes/SliderScale.css.js +1 -1
  413. package/dist/generated/themes/SliderScale.css.js.map +1 -1
  414. package/dist/generated/themes/SplitButton.css.d.ts +1 -1
  415. package/dist/generated/themes/SplitButton.css.js +1 -1
  416. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  417. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  418. package/dist/generated/themes/TextArea.css.js +1 -1
  419. package/dist/generated/themes/TextArea.css.js.map +1 -1
  420. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  421. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -2
  422. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  423. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  424. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -2
  425. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  426. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  427. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -2
  428. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  429. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  430. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -2
  431. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  432. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  433. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  434. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  435. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  436. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +786 -513
  437. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  438. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  439. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  440. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  441. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
  442. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +742 -494
  443. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
  444. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  445. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  446. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  447. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  448. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  449. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  450. package/dist/types/ButtonAccessibleRole.d.ts +1 -1
  451. package/dist/types/ButtonAccessibleRole.js +1 -1
  452. package/dist/types/ButtonAccessibleRole.js.map +1 -1
  453. package/dist/types/TableSelectionBehavior.d.ts +1 -1
  454. package/dist/types/TableSelectionBehavior.js +1 -1
  455. package/dist/types/TableSelectionBehavior.js.map +1 -1
  456. package/dist/types/TableSelectionMultiHeaderSelector.d.ts +1 -1
  457. package/dist/types/TableSelectionMultiHeaderSelector.js +1 -1
  458. package/dist/types/TableSelectionMultiHeaderSelector.js.map +1 -1
  459. package/dist/types/TextAreaCounterMode.d.ts +27 -0
  460. package/dist/types/TextAreaCounterMode.js +29 -0
  461. package/dist/types/TextAreaCounterMode.js.map +1 -0
  462. package/dist/vscode.html-custom-data.json +22 -8
  463. package/dist/web-types.json +44 -13
  464. package/package.json +9 -9
  465. package/src/ComboBoxPopoverTemplate.tsx +140 -106
  466. package/src/ComboBoxTemplate.tsx +4 -2
  467. package/src/{NumberInputTemplate.tsx → NumericInputTemplate.tsx} +6 -6
  468. package/src/PopoverTemplate.tsx +19 -0
  469. package/src/RangeSliderTemplate.tsx +3 -0
  470. package/src/SliderScaleTemplate.tsx +1 -1
  471. package/src/SliderTemplate.tsx +1 -0
  472. package/src/StepInputTemplate.tsx +3 -3
  473. package/src/TableHeaderRowTemplate.tsx +1 -26
  474. package/src/TableRowTemplate.tsx +1 -9
  475. package/src/TableSelection.tsx +464 -0
  476. package/src/TableSelectionMulti.tsx +396 -0
  477. package/src/TableSelectionSingle.tsx +91 -0
  478. package/src/TextAreaTemplate.tsx +2 -2
  479. package/src/features/ColorPaletteMoreColorsTemplate.tsx +1 -1
  480. package/src/i18n/messagebundle.properties +25 -1
  481. package/src/i18n/messagebundle_ar.properties +1 -1
  482. package/src/i18n/messagebundle_bg.properties +1 -1
  483. package/src/i18n/messagebundle_ca.properties +1 -1
  484. package/src/i18n/messagebundle_cnr.properties +1 -1
  485. package/src/i18n/messagebundle_cy.properties +1 -1
  486. package/src/i18n/messagebundle_da.properties +1 -1
  487. package/src/i18n/messagebundle_de.properties +2 -2
  488. package/src/i18n/messagebundle_el.properties +1 -1
  489. package/src/i18n/messagebundle_en.properties +1 -1
  490. package/src/i18n/messagebundle_en_GB.properties +1 -1
  491. package/src/i18n/messagebundle_en_US_sappsd.properties +1 -1
  492. package/src/i18n/messagebundle_en_US_saprigi.properties +1 -1
  493. package/src/i18n/messagebundle_en_US_saptrc.properties +1 -1
  494. package/src/i18n/messagebundle_es.properties +1 -1
  495. package/src/i18n/messagebundle_es_MX.properties +1 -1
  496. package/src/i18n/messagebundle_et.properties +1 -1
  497. package/src/i18n/messagebundle_fi.properties +1 -1
  498. package/src/i18n/messagebundle_fr.properties +1 -1
  499. package/src/i18n/messagebundle_fr_CA.properties +1 -1
  500. package/src/i18n/messagebundle_hi.properties +1 -1
  501. package/src/i18n/messagebundle_hr.properties +3 -3
  502. package/src/i18n/messagebundle_hu.properties +2 -2
  503. package/src/i18n/messagebundle_id.properties +2 -2
  504. package/src/i18n/messagebundle_it.properties +1 -1
  505. package/src/i18n/messagebundle_iw.properties +1 -1
  506. package/src/i18n/messagebundle_ja.properties +2 -2
  507. package/src/i18n/messagebundle_kk.properties +1 -1
  508. package/src/i18n/messagebundle_ko.properties +1 -1
  509. package/src/i18n/messagebundle_lt.properties +1 -1
  510. package/src/i18n/messagebundle_lv.properties +1 -1
  511. package/src/i18n/messagebundle_mk.properties +1 -1
  512. package/src/i18n/messagebundle_ms.properties +2 -2
  513. package/src/i18n/messagebundle_nl.properties +3 -3
  514. package/src/i18n/messagebundle_no.properties +1 -1
  515. package/src/i18n/messagebundle_pl.properties +3 -3
  516. package/src/i18n/messagebundle_pt.properties +3 -3
  517. package/src/i18n/messagebundle_pt_PT.properties +1 -1
  518. package/src/i18n/messagebundle_ro.properties +1 -1
  519. package/src/i18n/messagebundle_ru.properties +1 -1
  520. package/src/i18n/messagebundle_sh.properties +1 -1
  521. package/src/i18n/messagebundle_sk.properties +1 -1
  522. package/src/i18n/messagebundle_sl.properties +1 -1
  523. package/src/i18n/messagebundle_sr.properties +1 -1
  524. package/src/i18n/messagebundle_sv.properties +1 -1
  525. package/src/i18n/messagebundle_th.properties +1 -1
  526. package/src/i18n/messagebundle_tr.properties +3 -3
  527. package/src/i18n/messagebundle_uk.properties +1 -1
  528. package/src/i18n/messagebundle_vi.properties +1 -1
  529. package/src/i18n/messagebundle_zh_CN.properties +1 -1
  530. package/src/i18n/messagebundle_zh_TW.properties +1 -1
  531. package/src/themes/Avatar.css +1 -0
  532. package/src/themes/AvatarGroup.css +21 -0
  533. package/src/themes/ComboBox.css +5 -0
  534. package/src/themes/ComboBoxPopover.css +6 -0
  535. package/src/themes/Input.css +1 -1
  536. package/src/themes/{NumberInput.css → NumericInput.css} +63 -58
  537. package/src/themes/Popover.css +47 -14
  538. package/src/themes/RatingIndicator.css +1 -0
  539. package/src/themes/SliderHandle.css +12 -7
  540. package/src/themes/SliderScale.css +4 -2
  541. package/src/themes/SplitButton.css +4 -1
  542. package/src/themes/TextArea.css +17 -1
  543. package/src/themes/base/NumericInput-parameters.css +31 -0
  544. package/src/themes/base/Popover-parameters.css +5 -0
  545. package/src/themes/base/sizes-parameters.css +3 -3
  546. package/src/themes/sap_fiori_3/parameters-bundle.css +1 -1
  547. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  548. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  549. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  550. package/src/themes/sap_horizon/AvatarGroup-parameters.css +7 -19
  551. package/src/themes/sap_horizon/NumericInput-parameters.css +26 -0
  552. package/src/themes/sap_horizon/parameters-bundle.css +1 -1
  553. package/src/themes/sap_horizon_dark/NumericInput-parameters.css +26 -0
  554. package/src/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  555. package/src/themes/sap_horizon_hcb/NumericInput-parameters.css +14 -0
  556. package/src/themes/sap_horizon_hcb/parameters-bundle.css +2 -2
  557. package/src/themes/sap_horizon_hcw/NumericInput-parameters.css +14 -0
  558. package/src/themes/sap_horizon_hcw/parameters-bundle.css +2 -2
  559. package/dist/NumberInput.js.map +0 -1
  560. package/dist/NumberInputTemplate.d.ts +0 -2
  561. package/dist/NumberInputTemplate.js.map +0 -1
  562. package/dist/css/themes/NumberInput.css +0 -1
  563. package/dist/generated/themes/NumberInput.css.d.ts +0 -2
  564. package/dist/generated/themes/NumberInput.css.js +0 -8
  565. package/dist/generated/themes/NumberInput.css.js.map +0 -1
  566. package/src/themes/base/NumberInput-parameters.css +0 -31
  567. package/src/themes/sap_horizon/NumberInput-parameters.css +0 -26
  568. package/src/themes/sap_horizon_dark/NumberInput-parameters.css +0 -26
  569. package/src/themes/sap_horizon_hcb/NumberInput-parameters.css +0 -14
  570. package/src/themes/sap_horizon_hcw/NumberInput-parameters.css +0 -14
@@ -0,0 +1,396 @@
1
+ import { customElement, property } from "@ui5/webcomponents-base/dist/decorators.js";
2
+ import TableSelectionBase from "./TableSelectionBase.js";
3
+ import CheckBox from "./CheckBox.js";
4
+ import Icon from "./Icon.js";
5
+ import ClearAll from "@ui5/webcomponents-icons/dist/clear-all.js";
6
+ import getActiveElement from "@ui5/webcomponents-base/dist/util/getActiveElement.js";
7
+ import { isSelectionCell, isHeaderSelectionCell, findRowInPath } from "./TableUtils.js";
8
+ import { isUpShift } from "@ui5/webcomponents-base/dist/Keys.js";
9
+ import type { VNode } from "@ui5/webcomponents-base/dist/jsx-runtime.js";
10
+ import type Table from "./Table.js";
11
+ import type TableRow from "./TableRow.js";
12
+ import type TableRowBase from "./TableRowBase.js";
13
+ import type TableSelectionMultiHeaderSelector from "./types/TableSelectionMultiHeaderSelector.js";
14
+ import {
15
+ TABLE_COLUMNHEADER_SELECTALL_DESCRIPTION,
16
+ TABLE_COLUMNHEADER_CLEARALL_DESCRIPTION,
17
+ CHECKBOX_CHECKED,
18
+ CHECKBOX_NOT_CHECKED,
19
+ ACC_STATE_DISABLED,
20
+ TABLE_ROW_SELECTOR,
21
+ TABLE_SELECT_ALL_ROWS,
22
+ TABLE_DESELECT_ALL_ROWS,
23
+ } from "./generated/i18n/i18n-defaults.js";
24
+
25
+ /**
26
+ * @class
27
+ *
28
+ * ### Overview
29
+ *
30
+ * The `ui5-table-selection-multi` component is used inside the `ui5-table` to add multi-selection capabilities to the `ui5-table`.
31
+ * Since selection is key-based, each `ui5-table-row` must define a unique `row-key` property.
32
+ *
33
+ * ### Usage
34
+ *
35
+ * The `ui5-table-selection-multi` component is a feature designed exclusively for use within the `ui5-table` component.
36
+ * It must be placed inside the `features` slot of `ui5-table`.
37
+ * This component is not intended for standalone use.
38
+ *
39
+ * ```html
40
+ * <ui5-table>
41
+ * <ui5-table-selection-multi slot="features" selected="Row1 Row3"></ui5-table-selection-multi>
42
+ * </ui5-table>
43
+ * ```
44
+ *
45
+ * ### ES6 Module Import
46
+ *
47
+ * `import "@ui5/webcomponents/dist/TableSelectionMulti.js";`
48
+ *
49
+ * @constructor
50
+ * @extends TableSelectionBase
51
+ * @since 2.8.0
52
+ * @public
53
+ */
54
+ @customElement({ tag: "ui5-table-selection-multi" })
55
+
56
+ class TableSelectionMulti extends TableSelectionBase {
57
+ /**
58
+ * Defines the `row-key` values of selected rows, with each value separated by a space.
59
+ *
60
+ * @default undefined
61
+ * @public
62
+ */
63
+ @property()
64
+ selected?: string;
65
+
66
+ /**
67
+ * Defines the selector of the header row.
68
+ *
69
+ * @default "SelectAll"
70
+ * @public
71
+ * @since 2.12.0
72
+ */
73
+ @property()
74
+ headerSelector: `${TableSelectionMultiHeaderSelector}` = "SelectAll";
75
+
76
+ private _rangeSelection?: {
77
+ selected: boolean,
78
+ isUp: boolean | null,
79
+ rows: TableRow[],
80
+ isMouse: boolean,
81
+ shiftPressed: boolean
82
+ } | null;
83
+
84
+ _onClickCaptureBound: (e: MouseEvent) => void;
85
+
86
+ constructor() {
87
+ super();
88
+ this._onClickCaptureBound = this._onclickCapture.bind(this);
89
+ }
90
+
91
+ onTableBeforeRendering() {
92
+ super.onTableBeforeRendering();
93
+ this._table?.removeEventListener("click", this._onClickCaptureBound);
94
+ }
95
+
96
+ onTableAfterRendering() {
97
+ this._table?.addEventListener("click", this._onClickCaptureBound, { capture: true });
98
+ }
99
+
100
+ isMultiSelectable(): boolean {
101
+ return true;
102
+ }
103
+
104
+ renderRowSelectionCell(row: TableRow): VNode {
105
+ const i18nBundle = (row.constructor as typeof TableRowBase).i18nBundle;
106
+ return <CheckBox id="selection-component"
107
+ tabindex={-1}
108
+ checked={this.isSelected(row)}
109
+ onChange={() => this._onRowSelectionChange(row)}
110
+ accessibleName={i18nBundle.getText(TABLE_ROW_SELECTOR)}
111
+ ></CheckBox>;
112
+ }
113
+
114
+ renderHeaderSelectionCell(row: TableRowBase): VNode {
115
+ const i18nBundle = (row.constructor as typeof TableRowBase).i18nBundle;
116
+ if (this.headerSelector === "ClearAll") {
117
+ return <Icon
118
+ name={ClearAll}
119
+ mode="Decorative"
120
+ showTooltip={true}
121
+ accessibleName={i18nBundle.getText(TABLE_DESELECT_ALL_ROWS)}
122
+ design={this.getSelectedRows().length > 0 ? "Default" : "NonInteractive"}
123
+ onClick={() => this._onRowSelectionChange(row)}
124
+ ></Icon>;
125
+ }
126
+
127
+ return <CheckBox id="selection-component"
128
+ tabindex={-1}
129
+ checked={this.isSelected(row)}
130
+ onChange={() => this._onRowSelectionChange(row)}
131
+ accessibleName={i18nBundle.getText(TABLE_ROW_SELECTOR)}
132
+ title={this.isSelected(row) ? i18nBundle.getText(TABLE_DESELECT_ALL_ROWS) : i18nBundle.getText(TABLE_SELECT_ALL_ROWS)}
133
+ ></CheckBox>;
134
+ }
135
+
136
+ isSelected(row: TableRowBase): boolean {
137
+ if (row.isHeaderRow()) {
138
+ return this.headerSelector === "ClearAll" ? true : this.areAllRowsSelected();
139
+ }
140
+
141
+ const rowKey = this.getRowKey(row as TableRow);
142
+ return this.getSelectedAsSet().has(rowKey);
143
+ }
144
+
145
+ setSelected(row: TableRowBase, selected: boolean, fireEvent: boolean = false) {
146
+ if (this._rangeSelection?.isMouse && this._rangeSelection.shiftPressed) {
147
+ return;
148
+ }
149
+
150
+ const tableRows = row.isHeaderRow() ? this._table!.rows : [row as TableRow];
151
+ const selectedSet = this.getSelectedAsSet();
152
+ const selectionChanged = tableRows.reduce((selectedSetChanged, tableRow) => {
153
+ const rowKey = this.getRowKey(tableRow);
154
+ if (!rowKey) {
155
+ return selectedSetChanged;
156
+ }
157
+
158
+ const setSize = selectedSet.size;
159
+ selectedSet[selected ? "add" : "delete"](rowKey);
160
+ return selectedSetChanged || setSize !== selectedSet.size;
161
+ }, false);
162
+
163
+ if (selectionChanged) {
164
+ this.setSelectedAsSet(selectedSet);
165
+ fireEvent && this.fireDecoratorEvent("change");
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Returns an array of the selected rows.
171
+ *
172
+ * @public
173
+ */
174
+ getSelectedRows(): TableRow[] {
175
+ return this._table ? this._table.rows.filter(row => this.isSelected(row)) : [];
176
+ }
177
+
178
+ /**
179
+ * Determines whether all rows are selected.
180
+ */
181
+ areAllRowsSelected(): boolean {
182
+ if (!this._table || !this._table.rows.length) {
183
+ return false;
184
+ }
185
+
186
+ const selectedSet = this.getSelectedAsSet();
187
+ return this._table.rows.filter(row => row._isSelectable).every(row => {
188
+ const rowKey = this.getRowKey(row);
189
+ return selectedSet.has(rowKey);
190
+ });
191
+ }
192
+
193
+ /**
194
+ * Returns the `selected` property as a set of unique `row-key` values.
195
+ *
196
+ * @public
197
+ */
198
+ getSelectedAsSet(): Set<string> {
199
+ const selected = this.selected || "";
200
+ const selectedArray = selected.split(" ").filter(String);
201
+ return new Set(selectedArray);
202
+ }
203
+
204
+ /**
205
+ * Sets the `selected` property using the provided set of unique `row-key` values.
206
+ *
207
+ * @param selectedSet A set of `row-key` values
208
+ * @public
209
+ */
210
+ setSelectedAsSet(selectedSet: Set<string>): void {
211
+ this.selected = [...selectedSet].join(" ");
212
+ }
213
+
214
+ /**
215
+ * Returns the ARIA description of the selection component displayed in the column header.
216
+ */
217
+ getAriaDescriptionForColumnHeader(): string | undefined {
218
+ if (!this._table || !this._table.rows.length || this.behavior === "RowOnly") {
219
+ return undefined;
220
+ }
221
+
222
+ let description = "";
223
+ const seperator = " ";
224
+ const i18nBundle = (this._table.constructor as typeof Table).i18nBundle;
225
+ if (this.headerSelector === "SelectAll") {
226
+ description = i18nBundle.getText(TABLE_COLUMNHEADER_SELECTALL_DESCRIPTION);
227
+ description += seperator + i18nBundle.getText(this.areAllRowsSelected() ? CHECKBOX_CHECKED : CHECKBOX_NOT_CHECKED);
228
+ } else {
229
+ description = i18nBundle.getText(TABLE_COLUMNHEADER_CLEARALL_DESCRIPTION);
230
+ description += this.getSelectedRows().length === 0 ? seperator + i18nBundle.getText(ACC_STATE_DISABLED) : "";
231
+ }
232
+ return description;
233
+ }
234
+
235
+ _onkeydown(e: KeyboardEvent, eventOrigin: HTMLElement) {
236
+ super._onkeydown(e, eventOrigin);
237
+
238
+ if (!this._table || !e.shiftKey) {
239
+ return;
240
+ }
241
+
242
+ const focusedElement = getActiveElement(); // Assumption: The focused element is always the "next" row after navigation.
243
+
244
+ if (!(focusedElement?.hasAttribute("ui5-table-row") || this._rangeSelection?.isMouse)) {
245
+ this._stopRangeSelection();
246
+ return;
247
+ }
248
+
249
+ if (!this._rangeSelection) {
250
+ // If no range selection is active, start one
251
+ const row = focusedElement as TableRow;
252
+ this._startRangeSelection(row, this.isSelected(row));
253
+ } else if (e.key === "ArrowUp" || e.key === "ArrowDown") {
254
+ const change = isUpShift(e) ? -1 : 1;
255
+ this._handleRangeSelection(focusedElement as TableRow, change);
256
+ }
257
+
258
+ if (this._rangeSelection) {
259
+ this._rangeSelection.shiftPressed = e.shiftKey;
260
+ }
261
+ }
262
+
263
+ _onkeyup(e: KeyboardEvent, eventOrigin: HTMLElement) {
264
+ if (!this._table) {
265
+ return;
266
+ }
267
+
268
+ if (!eventOrigin.hasAttribute("ui5-table-row") || !this._rangeSelection || !e.shiftKey) {
269
+ // Stop range selection if a) Shift is relased or b) the event target is not a row
270
+ this._stopRangeSelection();
271
+ }
272
+
273
+ if (this._rangeSelection) {
274
+ this._rangeSelection.shiftPressed = e.shiftKey;
275
+ }
276
+ }
277
+
278
+ _onclickCapture(e: MouseEvent) {
279
+ if (!this._table) {
280
+ return;
281
+ }
282
+
283
+ if (isHeaderSelectionCell(e)) {
284
+ this._stopRangeSelection();
285
+ return;
286
+ }
287
+
288
+ if (!isSelectionCell(e)) {
289
+ this._stopRangeSelection();
290
+ return;
291
+ }
292
+
293
+ const row = findRowInPath(e.composedPath());
294
+
295
+ if (e.shiftKey && this._rangeSelection?.isMouse) {
296
+ const startRow = this._rangeSelection.rows[0];
297
+ const startIndex = this._table.rows.indexOf(startRow);
298
+ const endIndex = this._table.rows.indexOf(row);
299
+
300
+ // Set checkbox to the selection state of the start row (if it is selected)
301
+ const selectionState = this.isSelected(startRow);
302
+
303
+ // When doing a range selection and clicking on an already selected row, the checked status should not change
304
+ // Therefore, we need to manually set the checked attribute again, as clicking it would deselect it and leads to
305
+ // a visual inconsistency.
306
+ row.shadowRoot?.querySelector("#selection-component")?.toggleAttribute("checked", selectionState);
307
+ e.stopPropagation();
308
+
309
+ if (startIndex === -1 || endIndex === -1 || row.rowKey === startRow.rowKey || row.rowKey === this._rangeSelection.rows[this._rangeSelection.rows.length - 1].rowKey) {
310
+ return;
311
+ }
312
+
313
+ const change = endIndex - startIndex;
314
+ this._handleRangeSelection(row, change);
315
+ } else if (row) {
316
+ this._startRangeSelection(row, !this.isSelected(row), true);
317
+ }
318
+ }
319
+
320
+ /**
321
+ * Start the range selection and initialises the range selection state
322
+ * @param row starting row
323
+ * @private
324
+ */
325
+ _startRangeSelection(row: TableRow, selected: boolean, isMouse = false) {
326
+ this._rangeSelection = {
327
+ selected,
328
+ isUp: null,
329
+ rows: [row],
330
+ isMouse,
331
+ shiftPressed: false,
332
+ };
333
+ }
334
+
335
+ /**
336
+ * Handles the range selection
337
+ * @param targetRow Row that is currently focused
338
+ * @param change indicates direction
339
+ * @private
340
+ */
341
+ _handleRangeSelection(targetRow: TableRow, change: number) {
342
+ if (!this._rangeSelection) {
343
+ return;
344
+ }
345
+
346
+ const isUp = change > 0;
347
+ this._rangeSelection.isUp ??= isUp;
348
+
349
+ const shouldReverseSelection = isUp !== this._rangeSelection.isUp && !this._rangeSelection.isMouse;
350
+ let selectionChanged = shouldReverseSelection && this.isSelected(targetRow);
351
+
352
+ if (shouldReverseSelection) {
353
+ this._reverseRangeSelection();
354
+ } else {
355
+ const rowIndex = this._table!.rows.indexOf(targetRow);
356
+ const [startIndex, endIndex] = [rowIndex, rowIndex - change].sort((a, b) => a - b);
357
+ const selectedSet = this.getSelectedAsSet();
358
+
359
+ selectionChanged = this._table?.rows.slice(startIndex, endIndex + 1).reduce((changed, row) => {
360
+ const isRowNotInSelection = !this._rangeSelection?.rows.includes(row);
361
+ const isRowSelectionDifferent = this.isSelected(row) !== this._rangeSelection!.selected;
362
+
363
+ if (isRowNotInSelection) {
364
+ this._rangeSelection?.rows.push(row);
365
+ }
366
+
367
+ selectedSet[this._rangeSelection!.selected ? "add" : "delete"](this.getRowKey(row));
368
+
369
+ return changed || isRowSelectionDifferent;
370
+ }, selectionChanged) || false;
371
+
372
+ this.setSelectedAsSet(selectedSet);
373
+ }
374
+
375
+ selectionChanged && this.fireDecoratorEvent("change");
376
+ }
377
+
378
+ _stopRangeSelection() {
379
+ this._rangeSelection = null;
380
+ }
381
+
382
+ _reverseRangeSelection() {
383
+ const row = this._rangeSelection?.rows.pop();
384
+ if (row) {
385
+ this.setSelected(row, false);
386
+ }
387
+
388
+ if (this._rangeSelection?.rows.length === 1) {
389
+ this._rangeSelection.isUp = null;
390
+ }
391
+ }
392
+ }
393
+
394
+ TableSelectionMulti.define();
395
+
396
+ export default TableSelectionMulti;
@@ -0,0 +1,91 @@
1
+ import { customElement, property } from "@ui5/webcomponents-base/dist/decorators.js";
2
+ import TableSelectionBase from "./TableSelectionBase.js";
3
+ import RadioButton from "./RadioButton.js";
4
+ import type { VNode } from "@ui5/webcomponents-base/dist/jsx-runtime.js";
5
+ import type TableRow from "./TableRow.js";
6
+ import type TableRowBase from "./TableRowBase.js";
7
+ import {
8
+ TABLE_ROW_SELECTOR,
9
+ } from "./generated/i18n/i18n-defaults.js";
10
+
11
+ /**
12
+ * @class
13
+ *
14
+ * ### Overview
15
+ *
16
+ * The `ui5-table-selection-single` component is used inside the `ui5-table` to add single selection capabilities to the `ui5-table`.
17
+ * Since selection is key-based, each `ui5-table-row` must define a unique `row-key` property.
18
+ *
19
+ * ### Usage
20
+ *
21
+ * The `ui5-table-selection-single` component is a feature designed exclusively for use within the `ui5-table` component.
22
+ * It must be placed inside the `features` slot of `ui5-table`.
23
+ * This component is not intended for standalone use.
24
+ *
25
+ * ```html
26
+ * <ui5-table>
27
+ * <ui5-table-selection-single slot="features" selected="Row1"></ui5-table-selection-single>
28
+ * </ui5-table>
29
+ * ```
30
+ *
31
+ * ### ES6 Module Import
32
+ *
33
+ * `import "@ui5/webcomponents/dist/TableSelectionSingle.js";`
34
+ *
35
+ * @constructor
36
+ * @extends TableSelectionBase
37
+ * @since 2.8.0
38
+ * @public
39
+ */
40
+ @customElement({ tag: "ui5-table-selection-single" })
41
+
42
+ class TableSelectionSingle extends TableSelectionBase {
43
+ /**
44
+ * Defines the `row-key` value of the selected row.
45
+ *
46
+ * @default undefined
47
+ * @public
48
+ */
49
+ @property()
50
+ selected?: string;
51
+
52
+ isSelected(row: TableRow): boolean {
53
+ const rowKey = this.getRowKey(row);
54
+ return rowKey ? this.selected === rowKey : false;
55
+ }
56
+
57
+ renderRowSelectionCell(row: TableRow): VNode {
58
+ const i18nBundle = (row.constructor as typeof TableRowBase).i18nBundle;
59
+ return <RadioButton id="selection-component"
60
+ tabindex={-1}
61
+ checked={this.isSelected(row)}
62
+ onChange={() => this._onRowSelectionChange(row)}
63
+ accessibleName={i18nBundle.getText(TABLE_ROW_SELECTOR)}
64
+ ></RadioButton>;
65
+ }
66
+
67
+ renderHeaderSelectionCell(): undefined {
68
+ return undefined;
69
+ }
70
+
71
+ setSelected(row: TableRow, selected: boolean, fireEvent: boolean = false) {
72
+ const rowKey = this.getRowKey(row);
73
+ if (rowKey) {
74
+ this.selected = selected ? rowKey : undefined;
75
+ fireEvent && this.fireDecoratorEvent("change");
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Returns the selected row.
81
+ *
82
+ * @public
83
+ */
84
+ getSelectedRow(): TableRow | undefined {
85
+ return this._table?.rows.find(row => this.isSelected(row));
86
+ }
87
+ }
88
+
89
+ TableSelectionSingle.define();
90
+
91
+ export default TableSelectionSingle;
@@ -47,8 +47,8 @@ export default function TextAreaTemplate(this: TextArea) {
47
47
 
48
48
  { afterTextarea.call(this) }
49
49
 
50
- {this.showExceededText &&
51
- <span class="ui5-textarea-exceeded-text">{this._exceededTextProps.exceededText}</span>
50
+ {this._effectiveCounterMode !== "None" &&
51
+ <span class={this.classes.exceededText}>{this._exceededTextProps.exceededText}</span>
52
52
  }
53
53
 
54
54
  {this.ariaDescriptionText &&
@@ -5,7 +5,7 @@ import ColorPicker from "../ColorPicker.js";
5
5
 
6
6
  export default function ColorPaletteMoreColorsTemplate(this: ColorPalette) {
7
7
  return (
8
- <Dialog open={this.dialogOpen} headerText={this.colorPaletteDialogTitle} onClose={this._closeDialog}>
8
+ <Dialog open={this.dialogOpen} headerText={this.colorPaletteDialogTitle} onClose={this._closeDialog} onOpen={this._onColorPickerDialogOpen}>
9
9
  <div class="ui5-cp-dialog-content">
10
10
  <ColorPicker value={this.colorPickerValue} onChange={this.onColorPickerChange} />
11
11
  </div>
@@ -453,6 +453,18 @@ MULTICOMBOBOX_DIALOG_CANCEL_BUTTON=Cancel
453
453
  #XACT: ARIA announcement for Combo Box and Multi Combo Box available options
454
454
  COMBOBOX_AVAILABLE_OPTIONS=Available Options
455
455
 
456
+ #XACT: ARIA announcement when ComboBox starts loading items
457
+ COMBOBOX_LOADING=Loading data
458
+
459
+ #XACT: ARIA announcement when ComboBox ends loading items
460
+ COMBOBOX_LOADED=Data loaded
461
+
462
+ #XACT: ARIA announcement when ComboBox finishes loading, {0} is the number of loaded items
463
+ COMBOBOX_LOADED_ITEMS={0} results are available
464
+
465
+ #XACT: ARIA announcement when ComboBox finishes loading and there is 1 item
466
+ COMBOBOX_LOADED_ITEM=1 result is available
467
+
456
468
  #XBUT: Combobox Dialog OK button on mobile devices
457
469
  COMBOBOX_DIALOG_OK_BUTTON=OK
458
470
 
@@ -574,7 +586,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Cancel
574
586
  TABCONTAINER_SUBTABS_DESCRIPTION=Press down arrow key to open subitems menu
575
587
 
576
588
  #XTXT: Text for characters left
577
- TEXTAREA_CHARACTERS_LEFT={0} characters remaining
589
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
578
590
 
579
591
  #XTXT: Text for characters over
580
592
  TEXTAREA_CHARACTERS_EXCEEDED={0} characters over limit
@@ -897,6 +909,18 @@ DIALOG_FULLSCREEN_MAXIMIZE=Maximize (Shift+Ctrl+F)
897
909
  #XACT: Tooltip for dialog fullscreen button (restore)
898
910
  DIALOG_FULLSCREEN_RESTORE=Restore (Shift+Ctrl+F)
899
911
 
912
+ #XACT: ARIA label for the popover resize handle
913
+ POPOVER_RESIZE_HANDLE_ARIA_LABEL=Resize popover
914
+
915
+ #XACT: ARIA role description for the popover resize handle
916
+ POPOVER_HANDLE_ARIA_ROLEDESCRIPTION=Handle
917
+
918
+ #XACT: ARIA describedby text with keyboard instructions for the popover resize handle
919
+ POPOVER_ARIA_DESCRIBEDBY_RESIZABLE=Use Shift+Arrow keys to resize
920
+
921
+ #XACT: Tooltip for the resize handle icon in the popover
922
+ POPOVER_RESIZE_HANDLE_TOOLTIP=Drag handle to resize (Shift+Arrow)
923
+
900
924
  #XFLD: A colon to separate the "label" from an input. In some languages there might be a different symbol used for such a colon
901
925
  LABEL_COLON=:
902
926
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=إلغاء
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=اضغط على مفتاح السهم لأسفل لفتح قائمة البنود الفرعية
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT=متبق {0} من الحروف
393
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED=تم تجاوز الحد بمقدار {0} من الحروف
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Отказ
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Натиснете клавиша със стрелка надолу, за да отворите менюто с подпозиции
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT=Остават {0} символа
393
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED={0} символа над ограничението
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Cancel·lar
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Premeu la tecla de fletxa avall per obrir el menú de subposicions
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT={0} caràcters restants
393
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED=S''han excedit {0} caràcters
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Odustani
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Pritisnite strelicu za dolje da otvorite meni podstavki
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT={0} znakova preostaje
393
+ TEXTAREA_CHARACTERS_LEFT=Preostalo je {0} znakova
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED={0} znakova prekoračeno
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Canslo
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Pwyswch y bysell saeth i agor y ddewislen is-eitemau
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT={0} nod ar ôl
393
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED={0} nod dros yr uchafswm
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Afbryd
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Tryk på pil ned for at åbne underelementmenu
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT={0} tegn tilbage
393
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED={0} tegn overskredet
396
396
 
@@ -222,7 +222,7 @@ SELECT_ROLE_DESCRIPTION=Listenfeld
222
222
 
223
223
  SELECT_OPTIONS=Auswahloptionen
224
224
 
225
- SELECT_OPTIONS_IN_GROUPS={0} results are available in {1} groups
225
+ SELECT_OPTIONS_IN_GROUPS={0} Ergebnisse in {1} Gruppen
226
226
 
227
227
  SELECT_POPOVER_ACCESSIBLE_NAME_PREFIX=Markieren:
228
228
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Abbrechen
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Zum Öffnen des Unterelementemenüs Pfeiltaste nach unten drücken
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT={0} Zeichen verbleibend
393
+ TEXTAREA_CHARACTERS_LEFT={0} Zeichen übrig
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED={0} Zeichen über Limit
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Ακύρωση
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Πατήστε το πλήκτρο κάτω βέλους για να ανοίξετε το μενού των υποστοιχείων
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT={0} εναπομείναντες χαρακτήρες
393
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED={0} Πλεονάζοντες χαρακτήρες
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Cancel
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Press down arrow key to open subitems menu
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT={0} characters remaining
393
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED={0} characters over limit
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=Cancel
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=Press down arrow key to open subitems menu
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT={0} characters remaining
393
+ TEXTAREA_CHARACTERS_LEFT={0} characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED={0} characters over limit
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=[[[Ĉąŋċēĺ∙∙∙∙∙∙∙∙]]]
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=[[[Ƥŗēşş ƌŏŵŋ ąŗŗŏŵ ķēŷ ţŏ ŏρēŋ şűƃįţēɱş ɱēŋű∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙]]]
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT=[[[{0} ċĥąŗąċţēŗş ŗēɱąįŋįŋğ]]]
393
+ TEXTAREA_CHARACTERS_LEFT=[[[{0} ċĥąŗąċţēŗş ĺēƒţ]]]
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED=[[[{0} ċĥąŗąċţēŗş ŏʋēŗ ĺįɱįţ]]]
396
396
 
@@ -390,7 +390,7 @@ TABCONTAINER_POPOVER_CANCEL_BUTTON=‌​‌‌‍‍‍‌‍‌‍‍
390
390
 
391
391
  TABCONTAINER_SUBTABS_DESCRIPTION=‍‌‍​‌​‍​​‍‌‌‍​‍​‍​‌‍‍‍‌​​‍‍‍‌‍‌​‍‌​‍‍​​‌Press down arrow key to open subitems menu
392
392
 
393
- TEXTAREA_CHARACTERS_LEFT=‌‌‌‌‍‌​​​‌​‌​‌‍‍‌‌‌​‌​‍‌‌​‌‍​​​‍‌‍‌​​‌‌​​​​​{0}‌‌‌ characters remaining
393
+ TEXTAREA_CHARACTERS_LEFT=‌‌‌‌‍‌​​​‌​‌​‌‍‍‌‌‌​‌​‍‌‌​‌‍​​​‍‌‍‌​​‌‌​​​​​{0}‌‌‌ characters left
394
394
 
395
395
  TEXTAREA_CHARACTERS_EXCEEDED=‌​‍​​‌​​‌​​‌‍​‍‍‌‍‍​‌‍‍​​​​​‍‍‌​‌​​‍‌‍‌​​​{0}‌‌‌ characters over limit
396
396