@ui5/webcomponents 2.27.2 → 2.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/CHANGELOG.md +47 -2
  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 +12 -9
  10. package/dist/Bar.js +12 -10
  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 +135 -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/FormTemplate.js +2 -2
  91. package/dist/FormTemplate.js.map +1 -1
  92. package/dist/GridWalker.d.ts +1 -0
  93. package/dist/GridWalker.js +3 -0
  94. package/dist/GridWalker.js.map +1 -1
  95. package/dist/Input.d.ts +10 -6
  96. package/dist/Input.js +7 -3
  97. package/dist/Input.js.map +1 -1
  98. package/dist/InputIcon.d.ts +1 -1
  99. package/dist/InputIcon.js.map +1 -1
  100. package/dist/Link.d.ts +17 -2
  101. package/dist/Link.js +16 -1
  102. package/dist/Link.js.map +1 -1
  103. package/dist/List.d.ts +9 -6
  104. package/dist/List.js +9 -6
  105. package/dist/List.js.map +1 -1
  106. package/dist/ListItem.d.ts +1 -1
  107. package/dist/ListItem.js +1 -1
  108. package/dist/ListItem.js.map +1 -1
  109. package/dist/ListItemBase.d.ts +1 -1
  110. package/dist/ListItemBase.js +1 -1
  111. package/dist/ListItemBase.js.map +1 -1
  112. package/dist/ListItemCustom.d.ts +1 -1
  113. package/dist/ListItemCustom.js.map +1 -1
  114. package/dist/ListItemStandard.d.ts +4 -4
  115. package/dist/ListItemStandard.js +1 -1
  116. package/dist/ListItemStandard.js.map +1 -1
  117. package/dist/Menu.d.ts +3 -0
  118. package/dist/Menu.js +3 -0
  119. package/dist/Menu.js.map +1 -1
  120. package/dist/MessageStrip.d.ts +3 -3
  121. package/dist/MessageStrip.js +3 -3
  122. package/dist/MessageStrip.js.map +1 -1
  123. package/dist/MonthPicker.js +1 -1
  124. package/dist/MonthPicker.js.map +1 -1
  125. package/dist/MultiComboBox.d.ts +7 -4
  126. package/dist/MultiComboBox.js +5 -2
  127. package/dist/MultiComboBox.js.map +1 -1
  128. package/dist/MultiInput.d.ts +1 -1
  129. package/dist/MultiInput.js +1 -1
  130. package/dist/MultiInput.js.map +1 -1
  131. package/dist/{NumberInput.d.ts → NumericInput.d.ts} +10 -10
  132. package/dist/{NumberInput.js → NumericInput.js} +50 -50
  133. package/dist/NumericInput.js.map +1 -0
  134. package/dist/NumericInputTemplate.d.ts +2 -0
  135. package/dist/{NumberInputTemplate.js → NumericInputTemplate.js} +6 -6
  136. package/dist/NumericInputTemplate.js.map +1 -0
  137. package/dist/Option.d.ts +1 -1
  138. package/dist/Option.js.map +1 -1
  139. package/dist/Panel.d.ts +3 -3
  140. package/dist/Panel.js +2 -2
  141. package/dist/Panel.js.map +1 -1
  142. package/dist/Popover.d.ts +13 -2
  143. package/dist/Popover.js +50 -3
  144. package/dist/Popover.js.map +1 -1
  145. package/dist/PopoverResize.d.ts +3 -0
  146. package/dist/PopoverResize.js +53 -23
  147. package/dist/PopoverResize.js.map +1 -1
  148. package/dist/PopoverTemplate.js +3 -1
  149. package/dist/PopoverTemplate.js.map +1 -1
  150. package/dist/Popup.d.ts +2 -2
  151. package/dist/Popup.js +2 -2
  152. package/dist/Popup.js.map +1 -1
  153. package/dist/ProgressIndicator.d.ts +1 -1
  154. package/dist/ProgressIndicator.js +1 -1
  155. package/dist/ProgressIndicator.js.map +1 -1
  156. package/dist/RadioButton.d.ts +1 -1
  157. package/dist/RadioButton.js +2 -2
  158. package/dist/RadioButton.js.map +1 -1
  159. package/dist/RangeSlider.d.ts +1 -1
  160. package/dist/RangeSlider.js +5 -4
  161. package/dist/RangeSlider.js.map +1 -1
  162. package/dist/RangeSliderTemplate.js +3 -3
  163. package/dist/RangeSliderTemplate.js.map +1 -1
  164. package/dist/RatingIndicator.d.ts +5 -5
  165. package/dist/RatingIndicator.js +4 -4
  166. package/dist/RatingIndicator.js.map +1 -1
  167. package/dist/ResponsivePopover.d.ts +2 -2
  168. package/dist/ResponsivePopover.js +2 -2
  169. package/dist/ResponsivePopover.js.map +1 -1
  170. package/dist/SegmentedButton.d.ts +2 -1
  171. package/dist/SegmentedButton.js +2 -1
  172. package/dist/SegmentedButton.js.map +1 -1
  173. package/dist/SegmentedButtonItem.d.ts +1 -1
  174. package/dist/SegmentedButtonItem.js.map +1 -1
  175. package/dist/Select.d.ts +7 -4
  176. package/dist/Select.js +5 -2
  177. package/dist/Select.js.map +1 -1
  178. package/dist/Slider.d.ts +2 -1
  179. package/dist/Slider.js +5 -1
  180. package/dist/Slider.js.map +1 -1
  181. package/dist/SliderBase.d.ts +1 -0
  182. package/dist/SliderBase.js +7 -1
  183. package/dist/SliderBase.js.map +1 -1
  184. package/dist/SliderHandle.d.ts +4 -0
  185. package/dist/SliderHandle.js +7 -0
  186. package/dist/SliderHandle.js.map +1 -1
  187. package/dist/SliderScale.d.ts +4 -0
  188. package/dist/SliderScale.js +13 -0
  189. package/dist/SliderScale.js.map +1 -1
  190. package/dist/SliderScaleTemplate.js +1 -1
  191. package/dist/SliderScaleTemplate.js.map +1 -1
  192. package/dist/SliderTemplate.js +1 -1
  193. package/dist/SliderTemplate.js.map +1 -1
  194. package/dist/StepInput.d.ts +8 -7
  195. package/dist/StepInput.js +6 -2
  196. package/dist/StepInput.js.map +1 -1
  197. package/dist/StepInputTemplate.js +2 -2
  198. package/dist/StepInputTemplate.js.map +1 -1
  199. package/dist/SuggestionItem.d.ts +1 -1
  200. package/dist/SuggestionItem.js.map +1 -1
  201. package/dist/SuggestionListItem.d.ts +1 -1
  202. package/dist/SuggestionListItem.js.map +1 -1
  203. package/dist/Switch.d.ts +1 -1
  204. package/dist/Switch.js +1 -1
  205. package/dist/Switch.js.map +1 -1
  206. package/dist/Tab.d.ts +1 -1
  207. package/dist/Tab.js +1 -1
  208. package/dist/Tab.js.map +1 -1
  209. package/dist/TabContainer.d.ts +4 -2
  210. package/dist/TabContainer.js +3 -1
  211. package/dist/TabContainer.js.map +1 -1
  212. package/dist/Table.d.ts +16 -3
  213. package/dist/Table.js +40 -4
  214. package/dist/Table.js.map +1 -1
  215. package/dist/TableGrowing.d.ts +1 -0
  216. package/dist/TableGrowing.js +12 -10
  217. package/dist/TableGrowing.js.map +1 -1
  218. package/dist/TableHeaderRow.d.ts +0 -6
  219. package/dist/TableHeaderRow.js +1 -19
  220. package/dist/TableHeaderRow.js.map +1 -1
  221. package/dist/TableHeaderRowTemplate.js +2 -12
  222. package/dist/TableHeaderRowTemplate.js.map +1 -1
  223. package/dist/TableNavigation.d.ts +1 -0
  224. package/dist/TableNavigation.js +7 -2
  225. package/dist/TableNavigation.js.map +1 -1
  226. package/dist/TableRow.js +2 -11
  227. package/dist/TableRow.js.map +1 -1
  228. package/dist/TableRowBase.d.ts +3 -7
  229. package/dist/TableRowBase.js +10 -26
  230. package/dist/TableRowBase.js.map +1 -1
  231. package/dist/TableRowTemplate.js +1 -3
  232. package/dist/TableRowTemplate.js.map +1 -1
  233. package/dist/TableSelection.d.ts +5 -6
  234. package/dist/TableSelection.js +28 -12
  235. package/dist/TableSelection.js.map +1 -1
  236. package/dist/TableSelectionBase.d.ts +15 -10
  237. package/dist/TableSelectionBase.js +33 -20
  238. package/dist/TableSelectionBase.js.map +1 -1
  239. package/dist/TableSelectionMulti.d.ts +5 -7
  240. package/dist/TableSelectionMulti.js +14 -10
  241. package/dist/TableSelectionMulti.js.map +1 -1
  242. package/dist/TableSelectionSingle.d.ts +3 -2
  243. package/dist/TableSelectionSingle.js +8 -2
  244. package/dist/TableSelectionSingle.js.map +1 -1
  245. package/dist/TableUtils.d.ts +3 -1
  246. package/dist/TableUtils.js +4 -1
  247. package/dist/TableUtils.js.map +1 -1
  248. package/dist/TextArea.d.ts +52 -5
  249. package/dist/TextArea.js +67 -6
  250. package/dist/TextArea.js.map +1 -1
  251. package/dist/TextAreaTemplate.js +2 -2
  252. package/dist/TextAreaTemplate.js.map +1 -1
  253. package/dist/TimePicker.d.ts +2 -2
  254. package/dist/TimePicker.js +1 -1
  255. package/dist/TimePicker.js.map +1 -1
  256. package/dist/Toast.d.ts +1 -1
  257. package/dist/Toast.js +1 -1
  258. package/dist/Toast.js.map +1 -1
  259. package/dist/Token.d.ts +2 -2
  260. package/dist/Token.js +1 -1
  261. package/dist/Token.js.map +1 -1
  262. package/dist/Tokenizer.d.ts +1 -0
  263. package/dist/Tokenizer.js +18 -1
  264. package/dist/Tokenizer.js.map +1 -1
  265. package/dist/Toolbar.d.ts +6 -0
  266. package/dist/Toolbar.js +6 -0
  267. package/dist/Toolbar.js.map +1 -1
  268. package/dist/Tree.d.ts +3 -1
  269. package/dist/Tree.js +5 -3
  270. package/dist/Tree.js.map +1 -1
  271. package/dist/TreeItem.d.ts +2 -2
  272. package/dist/TreeItem.js +1 -1
  273. package/dist/TreeItem.js.map +1 -1
  274. package/dist/TreeItemBase.d.ts +3 -3
  275. package/dist/TreeItemBase.js +3 -3
  276. package/dist/TreeItemBase.js.map +1 -1
  277. package/dist/YearPicker.js +1 -1
  278. package/dist/YearPicker.js.map +1 -1
  279. package/dist/bundle.esm.js +1 -1
  280. package/dist/bundle.esm.js.map +1 -1
  281. package/dist/css/themes/Avatar.css +1 -1
  282. package/dist/css/themes/AvatarGroup.css +1 -1
  283. package/dist/css/themes/ComboBox.css +1 -1
  284. package/dist/css/themes/ComboBoxPopover.css +1 -1
  285. package/dist/css/themes/FileUploader.css +1 -1
  286. package/dist/css/themes/Form.css +1 -1
  287. package/dist/css/themes/FormItem.css +1 -1
  288. package/dist/css/themes/FormItemSpan.css +1 -1
  289. package/dist/css/themes/Input.css +1 -1
  290. package/dist/css/themes/MultiComboBox.css +1 -1
  291. package/dist/css/themes/NumericInput.css +1 -0
  292. package/dist/css/themes/Popover.css +1 -1
  293. package/dist/css/themes/RatingIndicator.css +1 -1
  294. package/dist/css/themes/Select.css +1 -1
  295. package/dist/css/themes/SliderHandle.css +1 -1
  296. package/dist/css/themes/SliderScale.css +1 -1
  297. package/dist/css/themes/SplitButton.css +1 -1
  298. package/dist/css/themes/TextArea.css +1 -1
  299. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -2
  300. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -2
  301. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -2
  302. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -2
  303. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  304. package/dist/css/themes/sap_horizon_auto/parameters-bundle.css +786 -513
  305. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  306. package/dist/css/themes/sap_horizon_hc_auto/parameters-bundle.css +742 -494
  307. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  308. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  309. package/dist/custom-elements-internal.json +2715 -265
  310. package/dist/custom-elements.json +2399 -103
  311. package/dist/features/ColorPaletteMoreColorsTemplate.js +1 -1
  312. package/dist/features/ColorPaletteMoreColorsTemplate.js.map +1 -1
  313. package/dist/features/ComboBoxLazyLoading.d.ts +26 -0
  314. package/dist/features/ComboBoxLazyLoading.js +48 -0
  315. package/dist/features/ComboBoxLazyLoading.js.map +1 -0
  316. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  317. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  318. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  319. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  320. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  321. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  322. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  323. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  324. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  325. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  326. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  327. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  328. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  329. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  330. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  331. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  332. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  333. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  334. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  335. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  336. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  337. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  338. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  339. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  340. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  341. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  342. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  343. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  344. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  345. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  346. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  347. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  348. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  349. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  350. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  351. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  352. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  353. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  354. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  355. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  356. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  357. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  358. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  359. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  360. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  361. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  362. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  363. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  364. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  365. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  366. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  367. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  368. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  369. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  370. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  371. package/dist/generated/assets/themes/sap_horizon_auto/parameters-bundle.css.json +1 -1
  372. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  373. package/dist/generated/assets/themes/sap_horizon_hc_auto/parameters-bundle.css.json +1 -1
  374. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  375. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  376. package/dist/generated/i18n/i18n-defaults.d.ts +9 -1
  377. package/dist/generated/i18n/i18n-defaults.js +10 -2
  378. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  379. package/dist/generated/themes/Avatar.css.d.ts +1 -1
  380. package/dist/generated/themes/Avatar.css.js +1 -1
  381. package/dist/generated/themes/Avatar.css.js.map +1 -1
  382. package/dist/generated/themes/AvatarGroup.css.d.ts +1 -1
  383. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  384. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  385. package/dist/generated/themes/ComboBox.css.d.ts +1 -1
  386. package/dist/generated/themes/ComboBox.css.js +1 -1
  387. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  388. package/dist/generated/themes/ComboBoxPopover.css.d.ts +1 -1
  389. package/dist/generated/themes/ComboBoxPopover.css.js +1 -1
  390. package/dist/generated/themes/ComboBoxPopover.css.js.map +1 -1
  391. package/dist/generated/themes/FileUploader.css.d.ts +1 -1
  392. package/dist/generated/themes/FileUploader.css.js +1 -1
  393. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  394. package/dist/generated/themes/Form.css.d.ts +1 -1
  395. package/dist/generated/themes/Form.css.js +1 -1
  396. package/dist/generated/themes/Form.css.js.map +1 -1
  397. package/dist/generated/themes/FormItem.css.d.ts +1 -1
  398. package/dist/generated/themes/FormItem.css.js +1 -1
  399. package/dist/generated/themes/FormItem.css.js.map +1 -1
  400. package/dist/generated/themes/FormItemSpan.css.d.ts +1 -1
  401. package/dist/generated/themes/FormItemSpan.css.js +1 -1
  402. package/dist/generated/themes/FormItemSpan.css.js.map +1 -1
  403. package/dist/generated/themes/Input.css.d.ts +1 -1
  404. package/dist/generated/themes/Input.css.js +1 -1
  405. package/dist/generated/themes/Input.css.js.map +1 -1
  406. package/dist/generated/themes/MultiComboBox.css.d.ts +1 -1
  407. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  408. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  409. package/dist/generated/themes/NumericInput.css.d.ts +2 -0
  410. package/dist/generated/themes/NumericInput.css.js +8 -0
  411. package/dist/generated/themes/NumericInput.css.js.map +1 -0
  412. package/dist/generated/themes/Popover.css.d.ts +1 -1
  413. package/dist/generated/themes/Popover.css.js +1 -1
  414. package/dist/generated/themes/Popover.css.js.map +1 -1
  415. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  416. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  417. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  418. package/dist/generated/themes/Select.css.d.ts +1 -1
  419. package/dist/generated/themes/Select.css.js +1 -1
  420. package/dist/generated/themes/Select.css.js.map +1 -1
  421. package/dist/generated/themes/SliderHandle.css.d.ts +1 -1
  422. package/dist/generated/themes/SliderHandle.css.js +1 -1
  423. package/dist/generated/themes/SliderHandle.css.js.map +1 -1
  424. package/dist/generated/themes/SliderScale.css.d.ts +1 -1
  425. package/dist/generated/themes/SliderScale.css.js +1 -1
  426. package/dist/generated/themes/SliderScale.css.js.map +1 -1
  427. package/dist/generated/themes/SplitButton.css.d.ts +1 -1
  428. package/dist/generated/themes/SplitButton.css.js +1 -1
  429. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  430. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  431. package/dist/generated/themes/TextArea.css.js +1 -1
  432. package/dist/generated/themes/TextArea.css.js.map +1 -1
  433. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  434. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -2
  435. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  436. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  437. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -2
  438. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  439. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  440. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -2
  441. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  442. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  443. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -2
  444. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  445. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  446. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  447. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  448. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.d.ts +1 -1
  449. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js +786 -513
  450. package/dist/generated/themes/sap_horizon_auto/parameters-bundle.css.js.map +1 -1
  451. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  452. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  453. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  454. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.d.ts +1 -1
  455. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js +742 -494
  456. package/dist/generated/themes/sap_horizon_hc_auto/parameters-bundle.css.js.map +1 -1
  457. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  458. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  459. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  460. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  461. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  462. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  463. package/dist/types/BarAccessibleRole.d.ts +2 -1
  464. package/dist/types/BarAccessibleRole.js +2 -1
  465. package/dist/types/BarAccessibleRole.js.map +1 -1
  466. package/dist/types/ButtonAccessibleRole.d.ts +1 -1
  467. package/dist/types/ButtonAccessibleRole.js +1 -1
  468. package/dist/types/ButtonAccessibleRole.js.map +1 -1
  469. package/dist/types/TableSelectionBehavior.d.ts +1 -1
  470. package/dist/types/TableSelectionBehavior.js +1 -1
  471. package/dist/types/TableSelectionBehavior.js.map +1 -1
  472. package/dist/types/TableSelectionMultiHeaderSelector.d.ts +1 -1
  473. package/dist/types/TableSelectionMultiHeaderSelector.js +1 -1
  474. package/dist/types/TableSelectionMultiHeaderSelector.js.map +1 -1
  475. package/dist/types/TextAreaCounterMode.d.ts +27 -0
  476. package/dist/types/TextAreaCounterMode.js +29 -0
  477. package/dist/types/TextAreaCounterMode.js.map +1 -0
  478. package/dist/vscode.html-custom-data.json +24 -10
  479. package/dist/web-types.json +48 -17
  480. package/package.json +9 -9
  481. package/src/ComboBoxPopoverTemplate.tsx +140 -106
  482. package/src/ComboBoxTemplate.tsx +4 -2
  483. package/src/FormTemplate.tsx +2 -2
  484. package/src/{NumberInputTemplate.tsx → NumericInputTemplate.tsx} +6 -6
  485. package/src/PopoverTemplate.tsx +19 -0
  486. package/src/RangeSliderTemplate.tsx +3 -0
  487. package/src/SliderScaleTemplate.tsx +1 -1
  488. package/src/SliderTemplate.tsx +1 -0
  489. package/src/StepInputTemplate.tsx +3 -3
  490. package/src/TableHeaderRowTemplate.tsx +1 -26
  491. package/src/TableRowTemplate.tsx +1 -9
  492. package/src/TableSelection.tsx +464 -0
  493. package/src/TableSelectionMulti.tsx +396 -0
  494. package/src/TableSelectionSingle.tsx +91 -0
  495. package/src/TextAreaTemplate.tsx +2 -2
  496. package/src/features/ColorPaletteMoreColorsTemplate.tsx +1 -1
  497. package/src/i18n/messagebundle.properties +25 -1
  498. package/src/i18n/messagebundle_ar.properties +1 -1
  499. package/src/i18n/messagebundle_bg.properties +1 -1
  500. package/src/i18n/messagebundle_ca.properties +1 -1
  501. package/src/i18n/messagebundle_cnr.properties +1 -1
  502. package/src/i18n/messagebundle_cy.properties +1 -1
  503. package/src/i18n/messagebundle_da.properties +1 -1
  504. package/src/i18n/messagebundle_de.properties +1 -1
  505. package/src/i18n/messagebundle_el.properties +1 -1
  506. package/src/i18n/messagebundle_en.properties +1 -1
  507. package/src/i18n/messagebundle_en_GB.properties +1 -1
  508. package/src/i18n/messagebundle_en_US_sappsd.properties +1 -1
  509. package/src/i18n/messagebundle_en_US_saprigi.properties +17 -1
  510. package/src/i18n/messagebundle_en_US_saptrc.properties +1 -1
  511. package/src/i18n/messagebundle_es.properties +1 -1
  512. package/src/i18n/messagebundle_es_MX.properties +1 -1
  513. package/src/i18n/messagebundle_et.properties +1 -1
  514. package/src/i18n/messagebundle_fi.properties +1 -1
  515. package/src/i18n/messagebundle_fr.properties +1 -1
  516. package/src/i18n/messagebundle_fr_CA.properties +1 -1
  517. package/src/i18n/messagebundle_hi.properties +1 -1
  518. package/src/i18n/messagebundle_hr.properties +1 -1
  519. package/src/i18n/messagebundle_hu.properties +1 -1
  520. package/src/i18n/messagebundle_id.properties +1 -1
  521. package/src/i18n/messagebundle_it.properties +1 -1
  522. package/src/i18n/messagebundle_iw.properties +1 -1
  523. package/src/i18n/messagebundle_ja.properties +1 -1
  524. package/src/i18n/messagebundle_kk.properties +1 -1
  525. package/src/i18n/messagebundle_ko.properties +1 -1
  526. package/src/i18n/messagebundle_lt.properties +1 -1
  527. package/src/i18n/messagebundle_lv.properties +1 -1
  528. package/src/i18n/messagebundle_mk.properties +1 -1
  529. package/src/i18n/messagebundle_ms.properties +1 -1
  530. package/src/i18n/messagebundle_nl.properties +1 -1
  531. package/src/i18n/messagebundle_no.properties +1 -1
  532. package/src/i18n/messagebundle_pl.properties +1 -1
  533. package/src/i18n/messagebundle_pt.properties +2 -2
  534. package/src/i18n/messagebundle_pt_PT.properties +1 -1
  535. package/src/i18n/messagebundle_ro.properties +1 -1
  536. package/src/i18n/messagebundle_ru.properties +1 -1
  537. package/src/i18n/messagebundle_sh.properties +1 -1
  538. package/src/i18n/messagebundle_sk.properties +1 -1
  539. package/src/i18n/messagebundle_sl.properties +1 -1
  540. package/src/i18n/messagebundle_sr.properties +1 -1
  541. package/src/i18n/messagebundle_sv.properties +1 -1
  542. package/src/i18n/messagebundle_th.properties +1 -1
  543. package/src/i18n/messagebundle_tr.properties +1 -1
  544. package/src/i18n/messagebundle_uk.properties +1 -1
  545. package/src/i18n/messagebundle_vi.properties +1 -1
  546. package/src/i18n/messagebundle_zh_CN.properties +1 -1
  547. package/src/i18n/messagebundle_zh_TW.properties +1 -1
  548. package/src/themes/Avatar.css +1 -0
  549. package/src/themes/AvatarGroup.css +21 -0
  550. package/src/themes/ComboBox.css +5 -0
  551. package/src/themes/ComboBoxPopover.css +6 -0
  552. package/src/themes/Form.css +5 -3
  553. package/src/themes/FormItem.css +4 -0
  554. package/src/themes/FormItemSpan.css +5 -0
  555. package/src/themes/Input.css +1 -1
  556. package/src/themes/{NumberInput.css → NumericInput.css} +63 -58
  557. package/src/themes/Popover.css +47 -14
  558. package/src/themes/RatingIndicator.css +1 -0
  559. package/src/themes/SliderHandle.css +12 -7
  560. package/src/themes/SliderScale.css +4 -2
  561. package/src/themes/SplitButton.css +4 -1
  562. package/src/themes/TextArea.css +17 -1
  563. package/src/themes/base/NumericInput-parameters.css +31 -0
  564. package/src/themes/base/Popover-parameters.css +5 -0
  565. package/src/themes/base/sizes-parameters.css +3 -3
  566. package/src/themes/sap_fiori_3/parameters-bundle.css +1 -1
  567. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  568. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  569. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  570. package/src/themes/sap_horizon/AvatarGroup-parameters.css +7 -19
  571. package/src/themes/sap_horizon/NumericInput-parameters.css +26 -0
  572. package/src/themes/sap_horizon/parameters-bundle.css +1 -1
  573. package/src/themes/sap_horizon_dark/NumericInput-parameters.css +26 -0
  574. package/src/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  575. package/src/themes/sap_horizon_hcb/NumericInput-parameters.css +14 -0
  576. package/src/themes/sap_horizon_hcb/parameters-bundle.css +2 -2
  577. package/src/themes/sap_horizon_hcw/NumericInput-parameters.css +14 -0
  578. package/src/themes/sap_horizon_hcw/parameters-bundle.css +2 -2
  579. package/dist/NumberInput.js.map +0 -1
  580. package/dist/NumberInputTemplate.d.ts +0 -2
  581. package/dist/NumberInputTemplate.js.map +0 -1
  582. package/dist/css/themes/NumberInput.css +0 -1
  583. package/dist/generated/themes/NumberInput.css.d.ts +0 -2
  584. package/dist/generated/themes/NumberInput.css.js +0 -8
  585. package/dist/generated/themes/NumberInput.css.js.map +0 -1
  586. package/src/themes/base/NumberInput-parameters.css +0 -31
  587. package/src/themes/sap_horizon/NumberInput-parameters.css +0 -26
  588. package/src/themes/sap_horizon_dark/NumberInput-parameters.css +0 -26
  589. package/src/themes/sap_horizon_hcb/NumberInput-parameters.css +0 -14
  590. package/src/themes/sap_horizon_hcw/NumberInput-parameters.css +0 -14
@@ -0,0 +1,464 @@
1
+ import {
2
+ isUpShift,
3
+ isSpace,
4
+ isEnter,
5
+ } from "@ui5/webcomponents-base/dist/Keys.js";
6
+ import getActiveElement from "@ui5/webcomponents-base/dist/util/getActiveElement.js";
7
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
8
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
9
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
10
+ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
11
+ import TableSelectionMode from "./types/TableSelectionMode.js";
12
+ import CheckBox from "./CheckBox.js";
13
+ import RadioButton from "./RadioButton.js";
14
+ import {
15
+ isSelectionCell,
16
+ isHeaderSelectionCell,
17
+ findRowInPath,
18
+ findRowBaseInPath,
19
+ } from "./TableUtils.js";
20
+ import type { VNode } from "@ui5/webcomponents-base/dist/jsx-runtime.js";
21
+ import type Table from "./Table.js";
22
+ import type { ITableFeature } from "./Table.js";
23
+ import type TableRow from "./TableRow.js";
24
+ import type TableRowBase from "./TableRowBase.js";
25
+ import {
26
+ TABLE_ROW_SELECTOR,
27
+ TABLE_SELECT_ALL_ROWS,
28
+ TABLE_DESELECT_ALL_ROWS,
29
+ } from "./generated/i18n/i18n-defaults.js";
30
+
31
+ /**
32
+ * @class
33
+ *
34
+ * ### Overview
35
+ *
36
+ * The `ui5-table-selection` component is used inside the `ui5-table` to add key-based selection capabilities to the `ui5-table`.
37
+ *
38
+ * The component offers three selection modes:
39
+ * * Single - select a single row.
40
+ * * Multiple - select multiple rows.
41
+ * * None - no selection active.
42
+ *
43
+ * As the selection is key-based, `ui5-table-row` components need to define a unique `row-key` property.
44
+ *
45
+ * ### Usage
46
+ *
47
+ * The `ui5-table-selection` component is only used inside the `ui5-table` component as a feature.
48
+ * It has to be slotted inside the `ui5-table` in the `features` slot.
49
+ * The component is not intended to be used as a standalone component.
50
+ *
51
+ * ```html
52
+ * <ui5-table>
53
+ * <ui5-table-selection mode="Multiple" slot="features"></ui5-table-selection>
54
+ * </ui5-table>
55
+ * ```
56
+ *
57
+ * ### ES6 Module Import
58
+ *
59
+ * `import "@ui5/webcomponents/dist/TableSelection.js";`
60
+ *
61
+ * @constructor
62
+ * @extends UI5Element
63
+ * @since 2.0.0
64
+ * @public
65
+ * @deprecated This component is deprecated and will be removed in future releases. Use the `ui5-table-selection-single` or `ui5-table-selection-multi` components instead.
66
+ * @experimental This web component is available since 2.0 with an experimental flag and its API and behavior are subject to change.
67
+ */
68
+ @customElement({ tag: "ui5-table-selection" })
69
+
70
+ /**
71
+ * Fired when the selection is changed by user interaction.
72
+ *
73
+ * @public
74
+ */
75
+ @event("change", {
76
+ bubbles: true,
77
+ })
78
+
79
+ class TableSelection extends UI5Element implements ITableFeature {
80
+ eventDetails!: {
81
+ change: void,
82
+ }
83
+ /**
84
+ * Defines the selection mode.
85
+ *
86
+ * @default "Multiple"
87
+ * @public
88
+ */
89
+ @property()
90
+ mode: `${TableSelectionMode}` = "Multiple";
91
+
92
+ /**
93
+ * Defines the selected rows separated by a space.
94
+ *
95
+ * @default ""
96
+ * @public
97
+ */
98
+ @property()
99
+ selected = "";
100
+
101
+ readonly identifier = "TableSelection";
102
+ _table?: Table;
103
+ _rowsLength = 0;
104
+ _rangeSelection?: {selected: boolean, isUp: boolean | null, rows: TableRow[], isMouse: boolean, shiftPressed: boolean} | null;
105
+
106
+ onClickCaptureBound: (e: MouseEvent) => void;
107
+
108
+ constructor() {
109
+ super();
110
+ this.onClickCaptureBound = this._onClickCapture.bind(this);
111
+ }
112
+
113
+ onTableActivate(table: Table) {
114
+ this._table = table;
115
+ this._invalidateTableAndRows();
116
+ }
117
+
118
+ onExitDOM() {
119
+ this.mode = TableSelectionMode.None;
120
+ this._invalidateTableAndRows();
121
+ this._table = undefined;
122
+ }
123
+
124
+ onBeforeRendering() {
125
+ this._invalidateTableAndRows();
126
+ }
127
+
128
+ onTableBeforeRendering() {
129
+ if (this.isMultiSelectable() && this._table && this._table.headerRow[0] && this._rowsLength !== this._table.rows.length) {
130
+ this._rowsLength = this._table.rows.length;
131
+ this._table.headerRow[0]._invalidate++;
132
+ }
133
+
134
+ this._table?.removeEventListener("click", this.onClickCaptureBound);
135
+ }
136
+
137
+ onTableAfterRendering(): void {
138
+ this._table?.addEventListener("click", this.onClickCaptureBound, { capture: true });
139
+ }
140
+
141
+ isSelectable(): boolean {
142
+ return this.mode !== TableSelectionMode.None;
143
+ }
144
+
145
+ isMultiSelectable(): boolean {
146
+ return this.mode === TableSelectionMode.Multiple;
147
+ }
148
+
149
+ isRowSelectorRequired(): boolean {
150
+ return this.mode !== TableSelectionMode.None;
151
+ }
152
+
153
+ renderRowSelectionCell(row: TableRow): VNode {
154
+ const i18nBundle = (this._table!.constructor as typeof Table).i18nBundle;
155
+ const SelectionComponent = this.isMultiSelectable() ? CheckBox : RadioButton;
156
+ return <SelectionComponent id="selection-component"
157
+ tabindex={-1}
158
+ checked={this.isSelected(row)}
159
+ onChange={() => this._onRowSelectionChange(row)}
160
+ accessibleName={i18nBundle.getText(TABLE_ROW_SELECTOR)}
161
+ ></SelectionComponent>;
162
+ }
163
+
164
+ renderHeaderSelectionCell(row: TableRowBase): VNode | undefined {
165
+ if (!this.isMultiSelectable()) {
166
+ return undefined;
167
+ }
168
+
169
+ const i18nBundle = (this._table!.constructor as typeof Table).i18nBundle;
170
+ return <CheckBox id="selection-component"
171
+ tabindex={-1}
172
+ checked={this.isSelected(row)}
173
+ onChange={() => this._onRowSelectionChange(row)}
174
+ accessibleName={i18nBundle.getText(TABLE_ROW_SELECTOR)}
175
+ title={this.isSelected(row) ? i18nBundle.getText(TABLE_DESELECT_ALL_ROWS) : i18nBundle.getText(TABLE_SELECT_ALL_ROWS)}
176
+ ></CheckBox>;
177
+ }
178
+
179
+ getAriaDescriptionForTable(): string | undefined {
180
+ return undefined;
181
+ }
182
+
183
+ getAriaDescriptionForColumnHeader(): string | undefined {
184
+ return undefined;
185
+ }
186
+
187
+ getRowKey(row: TableRow): string {
188
+ return row.rowKey || "";
189
+ }
190
+
191
+ isSelected(row: TableRowBase): boolean {
192
+ if (!this._table || !this.isSelectable()) {
193
+ return false;
194
+ }
195
+
196
+ if (row.isHeaderRow()) {
197
+ return this.areAllRowsSelected();
198
+ }
199
+
200
+ const rowKey = this.getRowKey(row as TableRow);
201
+ return this.selectedAsArray.includes(rowKey);
202
+ }
203
+
204
+ hasSelectedRow(): boolean {
205
+ if (!this._table || !this.isSelectable()) {
206
+ return false;
207
+ }
208
+
209
+ const selectedArray = this.selectedAsArray;
210
+ return this._table.rows.some(row => {
211
+ const rowKey = this.getRowKey(row);
212
+ return selectedArray.includes(rowKey);
213
+ });
214
+ }
215
+
216
+ areAllRowsSelected(): boolean {
217
+ if (!this._table || !this._table.rows.length || this.mode !== TableSelectionMode.Multiple) {
218
+ return false;
219
+ }
220
+
221
+ const selectedArray = this.selectedAsArray;
222
+ return this._table.rows.filter(row => row._isSelectable).every(row => {
223
+ const rowKey = this.getRowKey(row);
224
+ return selectedArray.includes(rowKey);
225
+ });
226
+ }
227
+
228
+ setSelected(row: TableRowBase, selected: boolean, fireEvent = false) {
229
+ if (this._rangeSelection?.isMouse && this._rangeSelection.shiftPressed) {
230
+ return;
231
+ }
232
+
233
+ if (row.isHeaderRow()) {
234
+ this._selectHeaderRow(selected);
235
+ } else {
236
+ this._selectRow(row as TableRow, selected);
237
+ }
238
+
239
+ if (fireEvent) {
240
+ this.fireDecoratorEvent("change");
241
+ }
242
+ }
243
+
244
+ get selectedAsArray(): string[] {
245
+ return this.selected.split(" ").filter(String);
246
+ }
247
+
248
+ set selectedAsArray(selectedArray: string[]) {
249
+ this.selected = selectedArray.filter(String).join(" ");
250
+ }
251
+
252
+ get selectedAsSet(): Set<string> {
253
+ return new Set(this.selectedAsArray);
254
+ }
255
+
256
+ set selectedAsSet(selectedSet: Set<string>) {
257
+ this.selectedAsArray = [...selectedSet];
258
+ }
259
+
260
+ _selectRow(row: TableRow, selected: boolean) {
261
+ const rowKey = this.getRowKey(row);
262
+ if (this.mode === TableSelectionMode.Multiple) {
263
+ const selectedSet = this.selectedAsSet;
264
+ selectedSet[selected ? "add" : "delete"](rowKey);
265
+ this.selectedAsSet = selectedSet;
266
+ } else {
267
+ this.selected = selected ? rowKey : "";
268
+ }
269
+ }
270
+
271
+ _selectHeaderRow(selected: boolean) {
272
+ const selectedSet = this.selectedAsSet;
273
+ this._table!.rows.filter(row => row._isSelectable).forEach(row => {
274
+ const rowKey = this.getRowKey(row);
275
+ selectedSet[selected ? "add" : "delete"](rowKey);
276
+ });
277
+ this.selectedAsSet = selectedSet;
278
+ }
279
+
280
+ _invalidateTableAndRows() {
281
+ if (!this._table) {
282
+ return;
283
+ }
284
+
285
+ if (!this.isSelectable()) {
286
+ this.selected = "";
287
+ } else if (!this.isMultiSelectable()) {
288
+ this.selected = this.selectedAsArray.shift() || "";
289
+ }
290
+
291
+ this._table._invalidate++;
292
+ this._table.headerRow[0]._invalidate++;
293
+ this._table.rows.forEach(row => row._invalidate++);
294
+ }
295
+
296
+ _onRowSelectionChange(row: TableRowBase) {
297
+ const selected = this.isMultiSelectable() ? !this.isSelected(row) : true;
298
+ this.setSelected(row, selected, true);
299
+ }
300
+
301
+ _onkeydown(e: KeyboardEvent, eventOrigin: HTMLElement) {
302
+ const row = findRowBaseInPath(e.composedPath());
303
+ if (row && !row.isGroupRow() && this.isSelectable()) {
304
+ if ((eventOrigin === row && !row.isHeaderRow() && isSpace(e)) || (eventOrigin === row._selectionCell && (isSpace(e) || isEnter(e)))) {
305
+ this._onRowSelectionChange(row);
306
+ e.preventDefault();
307
+ }
308
+ }
309
+
310
+ if (!this.isMultiSelectable() || !this._table || !e.shiftKey) {
311
+ return;
312
+ }
313
+
314
+ const focusedElement = getActiveElement(); // Assumption: The focused element is always the "next" row after navigation.
315
+
316
+ if (!(focusedElement?.hasAttribute("ui5-table-row") || this._rangeSelection?.isMouse)) {
317
+ this._stopRangeSelection();
318
+ return;
319
+ }
320
+
321
+ if (!this._rangeSelection) {
322
+ // If no range selection is active, start one
323
+ const rangeRow = focusedElement as TableRow;
324
+ this._startRangeSelection(rangeRow, this.isSelected(rangeRow));
325
+ } else if (e.key === "ArrowUp" || e.key === "ArrowDown") {
326
+ const change = isUpShift(e) ? -1 : 1;
327
+ this._handleRangeSelection(focusedElement as TableRow, change);
328
+ }
329
+
330
+ if (this._rangeSelection) {
331
+ this._rangeSelection.shiftPressed = e.shiftKey;
332
+ }
333
+ }
334
+
335
+ _onkeyup(e: KeyboardEvent, eventOrigin: HTMLElement) {
336
+ if (!this._table) {
337
+ return;
338
+ }
339
+
340
+ if (!eventOrigin.hasAttribute("ui5-table-row") || !this._rangeSelection || !e.shiftKey) {
341
+ // Stop range selection if a) Shift is relased or b) the event target is not a row
342
+ this._stopRangeSelection();
343
+ }
344
+
345
+ if (this._rangeSelection) {
346
+ this._rangeSelection.shiftPressed = e.shiftKey;
347
+ }
348
+ }
349
+
350
+ _onClickCapture(e: MouseEvent) {
351
+ if (!this._table || this.mode !== TableSelectionMode.Multiple) {
352
+ return;
353
+ }
354
+
355
+ if (isHeaderSelectionCell(e)) {
356
+ this._stopRangeSelection();
357
+ return;
358
+ }
359
+
360
+ if (!isSelectionCell(e)) {
361
+ this._stopRangeSelection();
362
+ return;
363
+ }
364
+
365
+ const row = findRowInPath(e.composedPath());
366
+
367
+ if (e.shiftKey && this._rangeSelection?.isMouse) {
368
+ const startRow = this._rangeSelection.rows[0];
369
+ const startIndex = this._table.rows.indexOf(startRow);
370
+ const endIndex = this._table.rows.indexOf(row);
371
+
372
+ const selectionState = this.isSelected(startRow);
373
+
374
+ // When doing a range selection and clicking on an already selected row, the checked status should not change
375
+ // Therefore, we need to manually set the checked attribute again, as clicking it would deselect it and leads to
376
+ // a visual inconsistency.
377
+ row.shadowRoot?.querySelector("#selection-component")?.toggleAttribute("checked", selectionState);
378
+ e.stopPropagation();
379
+
380
+ if (startIndex === -1 || endIndex === -1 || row.rowKey === startRow.rowKey || row.rowKey === this._rangeSelection.rows[this._rangeSelection.rows.length - 1].rowKey) {
381
+ return;
382
+ }
383
+
384
+ const change = endIndex - startIndex;
385
+ this._handleRangeSelection(row, change);
386
+ } else if (row) {
387
+ this._startRangeSelection(row, !this.isSelected(row), true);
388
+ }
389
+ }
390
+
391
+ /**
392
+ * Start the range selection and initialises the range selection state
393
+ * @param row starting row
394
+ * @private
395
+ */
396
+ _startRangeSelection(row: TableRow, selected: boolean, isMouse = false) {
397
+ this._rangeSelection = {
398
+ selected,
399
+ isUp: null,
400
+ rows: [row],
401
+ isMouse,
402
+ shiftPressed: false,
403
+ };
404
+ }
405
+
406
+ /**
407
+ * Handles the range selection
408
+ * @param targetRow row that is currently focused
409
+ * @param change indicates direction
410
+ * @private
411
+ */
412
+ _handleRangeSelection(targetRow: TableRow, change: number) {
413
+ if (!this._rangeSelection) {
414
+ return;
415
+ }
416
+
417
+ const isUp = change > 0;
418
+ this._rangeSelection.isUp ??= isUp;
419
+
420
+ const shouldReverseSelection = isUp !== this._rangeSelection.isUp && !this._rangeSelection.isMouse;
421
+ let selectionChanged = shouldReverseSelection && this.isSelected(targetRow);
422
+
423
+ if (shouldReverseSelection) {
424
+ this._reverseRangeSelection();
425
+ } else {
426
+ const rowIndex = this._table!.rows.indexOf(targetRow);
427
+ const [startIndex, endIndex] = [rowIndex, rowIndex - change].sort((a, b) => a - b);
428
+
429
+ selectionChanged = this._table?.rows.slice(startIndex, endIndex + 1).reduce((changed, row) => {
430
+ const isRowNotInSelection = !this._rangeSelection?.rows.includes(row);
431
+ const isRowSelectionDifferent = this.isSelected(row) !== this._rangeSelection!.selected;
432
+
433
+ if (isRowNotInSelection) {
434
+ this._rangeSelection?.rows.push(row);
435
+ }
436
+
437
+ this._selectRow(row, this._rangeSelection!.selected);
438
+
439
+ return changed || isRowSelectionDifferent;
440
+ }, selectionChanged) || false;
441
+ }
442
+
443
+ selectionChanged && this.fireDecoratorEvent("change");
444
+ }
445
+
446
+ _stopRangeSelection() {
447
+ this._rangeSelection = null;
448
+ }
449
+
450
+ _reverseRangeSelection() {
451
+ const row = this._rangeSelection?.rows.pop();
452
+ if (row) {
453
+ this._selectRow(row, false);
454
+ }
455
+
456
+ if (this._rangeSelection?.rows.length === 1) {
457
+ this._rangeSelection.isUp = null;
458
+ }
459
+ }
460
+ }
461
+
462
+ TableSelection.define();
463
+
464
+ export default TableSelection;