@openui5/sap.m 1.123.0 → 1.124.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 (451) hide show
  1. package/package.json +4 -4
  2. package/src/sap/m/.library +6 -1
  3. package/src/sap/m/AccButton.js +1 -1
  4. package/src/sap/m/ActionListItem.js +1 -1
  5. package/src/sap/m/ActionSelect.js +2 -2
  6. package/src/sap/m/ActionSheet.js +1 -1
  7. package/src/sap/m/ActionTile.js +33 -11
  8. package/src/sap/m/ActionTileContent.js +9 -4
  9. package/src/sap/m/AdditionalTextButton.js +1 -1
  10. package/src/sap/m/App.js +1 -1
  11. package/src/sap/m/AssociativeOverflowToolbar.js +1 -1
  12. package/src/sap/m/Avatar.js +53 -13
  13. package/src/sap/m/AvatarColor.js +3 -1
  14. package/src/sap/m/AvatarImageFitType.js +3 -1
  15. package/src/sap/m/AvatarRenderer.js +4 -3
  16. package/src/sap/m/AvatarShape.js +3 -1
  17. package/src/sap/m/AvatarSize.js +3 -1
  18. package/src/sap/m/AvatarType.js +3 -1
  19. package/src/sap/m/Bar.js +1 -1
  20. package/src/sap/m/Breadcrumbs.js +1 -1
  21. package/src/sap/m/BusyDialog.js +1 -1
  22. package/src/sap/m/BusyIndicator.js +1 -1
  23. package/src/sap/m/Button.js +1 -1
  24. package/src/sap/m/Carousel.js +1 -1
  25. package/src/sap/m/CarouselLayout.js +1 -1
  26. package/src/sap/m/CheckBox.js +1 -1
  27. package/src/sap/m/ColorPalette.js +1 -1
  28. package/src/sap/m/ColorPalettePopover.js +1 -1
  29. package/src/sap/m/Column.js +1 -1
  30. package/src/sap/m/ColumnHeaderPopover.js +1 -1
  31. package/src/sap/m/ColumnListItem.js +1 -1
  32. package/src/sap/m/ColumnPopoverActionItem.js +1 -1
  33. package/src/sap/m/ColumnPopoverCustomItem.js +1 -1
  34. package/src/sap/m/ColumnPopoverItem.js +1 -1
  35. package/src/sap/m/ColumnPopoverSelectListItem.js +1 -1
  36. package/src/sap/m/ColumnPopoverSortItem.js +1 -1
  37. package/src/sap/m/ComboBox.js +1 -1
  38. package/src/sap/m/ComboBoxBase.js +2 -1
  39. package/src/sap/m/ComboBoxTextField.js +1 -1
  40. package/src/sap/m/ContentConfig.js +1 -1
  41. package/src/sap/m/CustomListItem.js +1 -1
  42. package/src/sap/m/CustomTile.js +1 -1
  43. package/src/sap/m/CustomTreeItem.js +1 -1
  44. package/src/sap/m/DatePicker.js +1 -1
  45. package/src/sap/m/DateRangeSelection.js +2 -2
  46. package/src/sap/m/DateTimeField.js +1 -1
  47. package/src/sap/m/DateTimeInput.js +1 -1
  48. package/src/sap/m/DateTimePicker.js +1 -3
  49. package/src/sap/m/Dialog.js +1 -1
  50. package/src/sap/m/DisplayListItem.js +1 -1
  51. package/src/sap/m/DraftIndicator.js +1 -1
  52. package/src/sap/m/DynamicDate.js +1 -1
  53. package/src/sap/m/DynamicDateOption.js +1 -1
  54. package/src/sap/m/DynamicDateRange.js +2 -6
  55. package/src/sap/m/DynamicDateValueHelpUIType.js +1 -1
  56. package/src/sap/m/ExpandableText.js +1 -1
  57. package/src/sap/m/FacetFilter.js +1 -1
  58. package/src/sap/m/FacetFilterItem.js +1 -1
  59. package/src/sap/m/FacetFilterList.js +1 -1
  60. package/src/sap/m/FeedContent.js +1 -1
  61. package/src/sap/m/FeedInput.js +1 -1
  62. package/src/sap/m/FeedListItem.js +1 -1
  63. package/src/sap/m/FeedListItemAction.js +1 -1
  64. package/src/sap/m/Fiori20Adapter.js +2 -2
  65. package/src/sap/m/FlexBox.js +1 -1
  66. package/src/sap/m/FlexItemData.js +1 -1
  67. package/src/sap/m/FormattedText.js +1 -1
  68. package/src/sap/m/GenericTag.js +1 -1
  69. package/src/sap/m/GenericTile.js +40 -17
  70. package/src/sap/m/GenericTileRenderer.js +103 -11
  71. package/src/sap/m/GroupHeaderListItem.js +1 -1
  72. package/src/sap/m/GrowingList.js +1 -1
  73. package/src/sap/m/HBox.js +1 -1
  74. package/src/sap/m/HeaderContainer.js +8 -2
  75. package/src/sap/m/HeaderContainerItemNavigator.js +1 -1
  76. package/src/sap/m/HeaderContainerRenderer.js +3 -0
  77. package/src/sap/m/IconTabBar.js +1 -1
  78. package/src/sap/m/IconTabBarSelectList.js +1 -1
  79. package/src/sap/m/IconTabFilter.js +2 -2
  80. package/src/sap/m/IconTabFilterExpandButtonBadge.js +1 -1
  81. package/src/sap/m/IconTabHeader.js +1 -1
  82. package/src/sap/m/IconTabSeparator.js +1 -1
  83. package/src/sap/m/IllustratedMessage.js +19 -3
  84. package/src/sap/m/IllustratedMessageSize.js +3 -1
  85. package/src/sap/m/IllustratedMessageType.js +3 -1
  86. package/src/sap/m/Illustration.js +1 -1
  87. package/src/sap/m/Image.js +1 -1
  88. package/src/sap/m/ImageContent.js +1 -1
  89. package/src/sap/m/Input.js +53 -34
  90. package/src/sap/m/InputBase.js +5 -9
  91. package/src/sap/m/InputListItem.js +1 -1
  92. package/src/sap/m/InputRenderer.js +6 -9
  93. package/src/sap/m/Label.js +1 -1
  94. package/src/sap/m/LightBox.js +1 -1
  95. package/src/sap/m/LightBoxItem.js +1 -1
  96. package/src/sap/m/Link.js +1 -1
  97. package/src/sap/m/LinkTileContent.js +1 -1
  98. package/src/sap/m/List.js +1 -1
  99. package/src/sap/m/ListBase.js +6 -6
  100. package/src/sap/m/ListItemBase.js +3 -6
  101. package/src/sap/m/MaskEnabler.js +1 -1
  102. package/src/sap/m/MaskInput.js +1 -1
  103. package/src/sap/m/MaskInputRule.js +1 -1
  104. package/src/sap/m/Menu.js +1 -1
  105. package/src/sap/m/MenuButton.js +1 -1
  106. package/src/sap/m/MenuItem.js +1 -1
  107. package/src/sap/m/MenuListItem.js +1 -1
  108. package/src/sap/m/MessageBox.js +25 -7
  109. package/src/sap/m/MessageItem.js +1 -1
  110. package/src/sap/m/MessageListItem.js +3 -6
  111. package/src/sap/m/MessagePage.js +1 -1
  112. package/src/sap/m/MessagePopover.js +1 -1
  113. package/src/sap/m/MessagePopoverItem.js +1 -1
  114. package/src/sap/m/MessageStrip.js +4 -4
  115. package/src/sap/m/MessageToast.js +1 -1
  116. package/src/sap/m/MessageView.js +3 -4
  117. package/src/sap/m/MultiComboBox.js +1 -6
  118. package/src/sap/m/MultiEditField.js +1 -1
  119. package/src/sap/m/MultiInput.js +36 -3
  120. package/src/sap/m/NavContainer.js +1 -1
  121. package/src/sap/m/NewsContent.js +1 -1
  122. package/src/sap/m/NotificationList.js +1 -1
  123. package/src/sap/m/NotificationListBase.js +1 -1
  124. package/src/sap/m/NotificationListGroup.js +1 -1
  125. package/src/sap/m/NotificationListItem.js +1 -1
  126. package/src/sap/m/NumericContent.js +1 -1
  127. package/src/sap/m/NumericInput.js +1 -1
  128. package/src/sap/m/ObjectAttribute.js +1 -1
  129. package/src/sap/m/ObjectHeader.js +1 -1
  130. package/src/sap/m/ObjectIdentifier.js +1 -1
  131. package/src/sap/m/ObjectListItem.js +1 -1
  132. package/src/sap/m/ObjectMarker.js +1 -1
  133. package/src/sap/m/ObjectNumber.js +1 -1
  134. package/src/sap/m/ObjectStatus.js +1 -1
  135. package/src/sap/m/OverflowToolbar.js +1 -1
  136. package/src/sap/m/OverflowToolbarAssociativePopover.js +1 -1
  137. package/src/sap/m/OverflowToolbarAssociativePopoverControls.js +1 -1
  138. package/src/sap/m/OverflowToolbarButton.js +1 -1
  139. package/src/sap/m/OverflowToolbarLayoutData.js +1 -1
  140. package/src/sap/m/OverflowToolbarMenuButton.js +1 -1
  141. package/src/sap/m/OverflowToolbarToggleButton.js +1 -1
  142. package/src/sap/m/P13nAnyFilterItem.js +2 -1
  143. package/src/sap/m/P13nColumnsItem.js +2 -2
  144. package/src/sap/m/P13nColumnsPanel.js +2 -2
  145. package/src/sap/m/P13nConditionPanel.js +2 -1
  146. package/src/sap/m/P13nDialog.js +4 -7
  147. package/src/sap/m/P13nDimMeasureItem.js +2 -2
  148. package/src/sap/m/P13nDimMeasurePanel.js +2 -2
  149. package/src/sap/m/P13nFilterItem.js +2 -1
  150. package/src/sap/m/P13nFilterPanel.js +3 -1
  151. package/src/sap/m/P13nGroupItem.js +2 -2
  152. package/src/sap/m/P13nGroupPanel.js +2 -2
  153. package/src/sap/m/P13nItem.js +2 -1
  154. package/src/sap/m/P13nOperationsHelper.js +2 -0
  155. package/src/sap/m/P13nPanel.js +2 -1
  156. package/src/sap/m/P13nSelectionItem.js +2 -1
  157. package/src/sap/m/P13nSelectionPanel.js +2 -1
  158. package/src/sap/m/P13nSortItem.js +2 -2
  159. package/src/sap/m/P13nSortPanel.js +2 -2
  160. package/src/sap/m/PDFViewer.js +2 -2
  161. package/src/sap/m/Page.js +12 -6
  162. package/src/sap/m/PageAccessibleLandmarkInfo.js +1 -1
  163. package/src/sap/m/PagingButton.js +1 -1
  164. package/src/sap/m/Panel.js +1 -1
  165. package/src/sap/m/PlanningCalendar.js +1 -1
  166. package/src/sap/m/PlanningCalendarHeader.js +1 -1
  167. package/src/sap/m/PlanningCalendarLegend.js +1 -1
  168. package/src/sap/m/PlanningCalendarRow.js +1 -1
  169. package/src/sap/m/PlanningCalendarView.js +1 -1
  170. package/src/sap/m/Popover.js +1 -1
  171. package/src/sap/m/ProgressIndicator.js +1 -1
  172. package/src/sap/m/PullToRefresh.js +1 -1
  173. package/src/sap/m/QuickView.js +1 -1
  174. package/src/sap/m/QuickViewBase.js +1 -1
  175. package/src/sap/m/QuickViewCard.js +1 -1
  176. package/src/sap/m/QuickViewGroup.js +1 -1
  177. package/src/sap/m/QuickViewGroupElement.js +1 -1
  178. package/src/sap/m/QuickViewPage.js +1 -1
  179. package/src/sap/m/RadioButton.js +1 -1
  180. package/src/sap/m/RadioButtonGroup.js +1 -1
  181. package/src/sap/m/RangeSlider.js +1 -1
  182. package/src/sap/m/RatingIndicator.js +1 -1
  183. package/src/sap/m/ResponsivePopover.js +1 -1
  184. package/src/sap/m/ResponsiveScale.js +1 -1
  185. package/src/sap/m/ScrollBar.js +1 -1
  186. package/src/sap/m/ScrollContainer.js +1 -1
  187. package/src/sap/m/SearchField.js +1 -1
  188. package/src/sap/m/SegmentedButton.js +1 -1
  189. package/src/sap/m/SegmentedButtonItem.js +1 -1
  190. package/src/sap/m/Select.js +1 -1
  191. package/src/sap/m/SelectDialog.js +1 -1
  192. package/src/sap/m/SelectDialogBase.js +1 -1
  193. package/src/sap/m/SelectList.js +1 -1
  194. package/src/sap/m/SelectionDetails.js +1 -1
  195. package/src/sap/m/SelectionDetailsFacade.js +2 -2
  196. package/src/sap/m/SelectionDetailsItem.js +1 -1
  197. package/src/sap/m/SelectionDetailsItemLine.js +1 -1
  198. package/src/sap/m/Shell.js +1 -1
  199. package/src/sap/m/SimpleFixFlex.js +1 -1
  200. package/src/sap/m/SinglePlanningCalendar.js +1 -1
  201. package/src/sap/m/SinglePlanningCalendarDayView.js +1 -1
  202. package/src/sap/m/SinglePlanningCalendarGrid.js +1 -3
  203. package/src/sap/m/SinglePlanningCalendarMonthGrid.js +1 -1
  204. package/src/sap/m/SinglePlanningCalendarMonthView.js +1 -1
  205. package/src/sap/m/SinglePlanningCalendarView.js +1 -1
  206. package/src/sap/m/SinglePlanningCalendarWeekView.js +1 -1
  207. package/src/sap/m/SinglePlanningCalendarWorkWeekView.js +1 -1
  208. package/src/sap/m/SlideTile.js +1 -1
  209. package/src/sap/m/Slider.js +1 -1
  210. package/src/sap/m/SliderTooltip.js +1 -1
  211. package/src/sap/m/SliderTooltipBase.js +1 -1
  212. package/src/sap/m/SliderTooltipContainer.js +1 -1
  213. package/src/sap/m/SplitApp.js +1 -1
  214. package/src/sap/m/SplitButton.js +1 -1
  215. package/src/sap/m/SplitContainer.js +1 -1
  216. package/src/sap/m/StandardDynamicDateOption.js +1 -1
  217. package/src/sap/m/StandardListItem.js +1 -1
  218. package/src/sap/m/StandardTile.js +1 -1
  219. package/src/sap/m/StandardTreeItem.js +1 -1
  220. package/src/sap/m/StepInput.js +1 -1
  221. package/src/sap/m/SuggestionItem.js +1 -1
  222. package/src/sap/m/SuggestionsPopover.js +1 -1
  223. package/src/sap/m/Switch.js +1 -1
  224. package/src/sap/m/TabContainer.js +16 -1
  225. package/src/sap/m/TabContainerItem.js +1 -1
  226. package/src/sap/m/TabStrip.js +1 -1
  227. package/src/sap/m/TabStripItem.js +1 -1
  228. package/src/sap/m/Table.js +3 -3
  229. package/src/sap/m/TablePersoController.js +1 -1
  230. package/src/sap/m/TablePersoDialog.js +1 -1
  231. package/src/sap/m/TablePersoProvider.js +1 -1
  232. package/src/sap/m/TableSelectDialog.js +1 -1
  233. package/src/sap/m/Text.js +1 -1
  234. package/src/sap/m/TextArea.js +1 -1
  235. package/src/sap/m/Tile.js +1 -1
  236. package/src/sap/m/TileContainer.js +1 -1
  237. package/src/sap/m/TileContent.js +1 -1
  238. package/src/sap/m/TileInfo.js +65 -0
  239. package/src/sap/m/TimePicker.js +1 -1
  240. package/src/sap/m/TimePickerClock.js +5 -3
  241. package/src/sap/m/TimePickerClocks.js +1 -1
  242. package/src/sap/m/TimePickerInputs.js +1 -1
  243. package/src/sap/m/TimePickerInternals.js +1 -1
  244. package/src/sap/m/TimePickerSlider.js +1 -1
  245. package/src/sap/m/TimePickerSliders.js +1 -1
  246. package/src/sap/m/Title.js +1 -1
  247. package/src/sap/m/TitlePropagationSupport.js +1 -1
  248. package/src/sap/m/ToggleButton.js +1 -1
  249. package/src/sap/m/Token.js +1 -1
  250. package/src/sap/m/Tokenizer.js +1 -3
  251. package/src/sap/m/Toolbar.js +1 -1
  252. package/src/sap/m/ToolbarLayoutData.js +1 -1
  253. package/src/sap/m/ToolbarSeparator.js +1 -1
  254. package/src/sap/m/ToolbarSpacer.js +1 -1
  255. package/src/sap/m/Tree.js +1 -1
  256. package/src/sap/m/TreeItemBase.js +1 -1
  257. package/src/sap/m/UploadCollection.js +1 -1
  258. package/src/sap/m/UploadCollectionItem.js +1 -1
  259. package/src/sap/m/UploadCollectionParameter.js +1 -1
  260. package/src/sap/m/UploadCollectionToolbarPlaceholder.js +1 -1
  261. package/src/sap/m/VBox.js +1 -1
  262. package/src/sap/m/ValueStateHeader.js +1 -1
  263. package/src/sap/m/VariantManagement.js +1 -2
  264. package/src/sap/m/ViewSettingsCustomItem.js +1 -1
  265. package/src/sap/m/ViewSettingsCustomTab.js +1 -1
  266. package/src/sap/m/ViewSettingsDialog.js +1 -1
  267. package/src/sap/m/ViewSettingsFilterItem.js +1 -1
  268. package/src/sap/m/ViewSettingsItem.js +1 -1
  269. package/src/sap/m/VisibleItem.js +1 -1
  270. package/src/sap/m/WheelSlider.js +1 -1
  271. package/src/sap/m/WheelSliderContainer.js +1 -1
  272. package/src/sap/m/Wizard.js +1 -1
  273. package/src/sap/m/WizardProgressNavigator.js +1 -1
  274. package/src/sap/m/WizardStep.js +1 -1
  275. package/src/sap/m/changeHandler/AddTableColumn.js +1 -2
  276. package/src/sap/m/changeHandler/ChangeLinkTarget.js +1 -1
  277. package/src/sap/m/changeHandler/CombineButtons.js +1 -1
  278. package/src/sap/m/changeHandler/MoveTableColumns.js +1 -1
  279. package/src/sap/m/changeHandler/SelectIconTabBarFilter.js +1 -1
  280. package/src/sap/m/changeHandler/SplitMenuButton.js +1 -1
  281. package/src/sap/m/designtime/Table.designtime.js +1 -2
  282. package/src/sap/m/designtime/messagebundle_sh.properties +5 -5
  283. package/src/sap/m/flexibility/Table.flexibility.js +14 -2
  284. package/src/sap/m/library.js +252 -3
  285. package/src/sap/m/messagebundle.properties +3 -0
  286. package/src/sap/m/messagebundle_ar.properties +2 -0
  287. package/src/sap/m/messagebundle_bg.properties +2 -0
  288. package/src/sap/m/messagebundle_ca.properties +2 -0
  289. package/src/sap/m/messagebundle_cnr.properties +2 -0
  290. package/src/sap/m/messagebundle_cs.properties +2 -0
  291. package/src/sap/m/messagebundle_cy.properties +2 -0
  292. package/src/sap/m/messagebundle_da.properties +2 -0
  293. package/src/sap/m/messagebundle_de.properties +2 -0
  294. package/src/sap/m/messagebundle_el.properties +2 -0
  295. package/src/sap/m/messagebundle_en.properties +2 -0
  296. package/src/sap/m/messagebundle_en_GB.properties +2 -0
  297. package/src/sap/m/messagebundle_en_US_saprigi.properties +2 -0
  298. package/src/sap/m/messagebundle_es.properties +2 -0
  299. package/src/sap/m/messagebundle_es_MX.properties +2 -0
  300. package/src/sap/m/messagebundle_et.properties +2 -0
  301. package/src/sap/m/messagebundle_fi.properties +2 -0
  302. package/src/sap/m/messagebundle_fr.properties +3 -1
  303. package/src/sap/m/messagebundle_fr_CA.properties +2 -0
  304. package/src/sap/m/messagebundle_hi.properties +2 -0
  305. package/src/sap/m/messagebundle_hr.properties +2 -0
  306. package/src/sap/m/messagebundle_hu.properties +2 -0
  307. package/src/sap/m/messagebundle_id.properties +2 -0
  308. package/src/sap/m/messagebundle_it.properties +2 -0
  309. package/src/sap/m/messagebundle_iw.properties +2 -0
  310. package/src/sap/m/messagebundle_ja.properties +2 -0
  311. package/src/sap/m/messagebundle_kk.properties +2 -0
  312. package/src/sap/m/messagebundle_ko.properties +2 -0
  313. package/src/sap/m/messagebundle_lt.properties +2 -0
  314. package/src/sap/m/messagebundle_lv.properties +2 -0
  315. package/src/sap/m/messagebundle_mk.properties +2 -0
  316. package/src/sap/m/messagebundle_ms.properties +2 -0
  317. package/src/sap/m/messagebundle_nl.properties +2 -0
  318. package/src/sap/m/messagebundle_no.properties +2 -0
  319. package/src/sap/m/messagebundle_pl.properties +2 -0
  320. package/src/sap/m/messagebundle_pt.properties +2 -0
  321. package/src/sap/m/messagebundle_pt_PT.properties +2 -0
  322. package/src/sap/m/messagebundle_ro.properties +2 -0
  323. package/src/sap/m/messagebundle_ru.properties +2 -0
  324. package/src/sap/m/messagebundle_sh.properties +259 -257
  325. package/src/sap/m/messagebundle_sk.properties +2 -0
  326. package/src/sap/m/messagebundle_sl.properties +2 -0
  327. package/src/sap/m/messagebundle_sr.properties +2 -0
  328. package/src/sap/m/messagebundle_sv.properties +2 -0
  329. package/src/sap/m/messagebundle_th.properties +2 -0
  330. package/src/sap/m/messagebundle_tr.properties +2 -0
  331. package/src/sap/m/messagebundle_uk.properties +2 -0
  332. package/src/sap/m/messagebundle_vi.properties +2 -0
  333. package/src/sap/m/messagebundle_zh_CN.properties +3 -1
  334. package/src/sap/m/messagebundle_zh_TW.properties +2 -0
  335. package/src/sap/m/p13n/AbstractContainer.js +2 -2
  336. package/src/sap/m/p13n/AbstractContainerItem.js +2 -2
  337. package/src/sap/m/p13n/BasePanel.js +1 -1
  338. package/src/sap/m/p13n/Container.js +1 -1
  339. package/src/sap/m/p13n/Engine.js +3 -6
  340. package/src/sap/m/p13n/FilterController.js +1 -1
  341. package/src/sap/m/p13n/FilterPanel.js +1 -1
  342. package/src/sap/m/p13n/GroupController.js +1 -1
  343. package/src/sap/m/p13n/GroupPanel.js +2 -1
  344. package/src/sap/m/p13n/Popup.js +10 -3
  345. package/src/sap/m/p13n/QueryPanel.js +1 -1
  346. package/src/sap/m/p13n/SelectionController.js +13 -8
  347. package/src/sap/m/p13n/SelectionPanel.js +1 -1
  348. package/src/sap/m/p13n/SortController.js +1 -1
  349. package/src/sap/m/p13n/SortPanel.js +1 -1
  350. package/src/sap/m/p13n/handler/xConfigHandler.js +6 -10
  351. package/src/sap/m/p13n/modules/DefaultProviderRegistry.js +1 -1
  352. package/src/sap/m/p13n/modules/StateHandlerRegistry.js +1 -1
  353. package/src/sap/m/p13n/modules/UIManager.js +7 -1
  354. package/src/sap/m/p13n/modules/xConfigAPI.js +67 -4
  355. package/src/sap/m/plugins/CellSelector.js +238 -133
  356. package/src/sap/m/plugins/ColumnResizer.js +1 -1
  357. package/src/sap/m/plugins/ContextMenuSetting.js +1 -1
  358. package/src/sap/m/plugins/CopyProvider.js +6 -4
  359. package/src/sap/m/plugins/DataStateIndicator.js +1 -1
  360. package/src/sap/m/plugins/PasteProvider.js +1 -1
  361. package/src/sap/m/plugins/PluginBase.js +1 -1
  362. package/src/sap/m/plugins/UploadSetwithTable.js +2067 -0
  363. package/src/sap/m/rules/Table.support.js +2 -3
  364. package/src/sap/m/semantic/AddAction.js +1 -1
  365. package/src/sap/m/semantic/CancelAction.js +1 -1
  366. package/src/sap/m/semantic/DeleteAction.js +1 -1
  367. package/src/sap/m/semantic/DetailPage.js +1 -1
  368. package/src/sap/m/semantic/DiscussInJamAction.js +1 -1
  369. package/src/sap/m/semantic/EditAction.js +1 -1
  370. package/src/sap/m/semantic/FavoriteAction.js +1 -1
  371. package/src/sap/m/semantic/FilterAction.js +1 -1
  372. package/src/sap/m/semantic/FilterSelect.js +1 -1
  373. package/src/sap/m/semantic/FlagAction.js +1 -1
  374. package/src/sap/m/semantic/ForwardAction.js +1 -1
  375. package/src/sap/m/semantic/FullscreenPage.js +1 -1
  376. package/src/sap/m/semantic/GroupAction.js +1 -1
  377. package/src/sap/m/semantic/GroupSelect.js +1 -1
  378. package/src/sap/m/semantic/MainAction.js +1 -1
  379. package/src/sap/m/semantic/MasterPage.js +1 -1
  380. package/src/sap/m/semantic/MessagesIndicator.js +1 -1
  381. package/src/sap/m/semantic/MultiSelectAction.js +1 -1
  382. package/src/sap/m/semantic/NegativeAction.js +1 -1
  383. package/src/sap/m/semantic/OpenInAction.js +1 -1
  384. package/src/sap/m/semantic/PositiveAction.js +1 -1
  385. package/src/sap/m/semantic/PrintAction.js +1 -1
  386. package/src/sap/m/semantic/SaveAction.js +1 -1
  387. package/src/sap/m/semantic/Segment.js +1 -1
  388. package/src/sap/m/semantic/SegmentedContainer.js +1 -1
  389. package/src/sap/m/semantic/SemanticButton.js +1 -1
  390. package/src/sap/m/semantic/SemanticConfiguration.js +1 -1
  391. package/src/sap/m/semantic/SemanticControl.js +1 -1
  392. package/src/sap/m/semantic/SemanticOverflowToolbarButton.js +1 -1
  393. package/src/sap/m/semantic/SemanticOverflowToolbarToggleButton.js +1 -1
  394. package/src/sap/m/semantic/SemanticPage.js +1 -1
  395. package/src/sap/m/semantic/SemanticSelect.js +1 -1
  396. package/src/sap/m/semantic/SemanticToggleButton.js +1 -1
  397. package/src/sap/m/semantic/SendEmailAction.js +1 -1
  398. package/src/sap/m/semantic/SendMessageAction.js +1 -1
  399. package/src/sap/m/semantic/ShareInJamAction.js +1 -1
  400. package/src/sap/m/semantic/ShareMenu.js +1 -1
  401. package/src/sap/m/semantic/ShareMenuPage.js +1 -1
  402. package/src/sap/m/semantic/SortAction.js +1 -1
  403. package/src/sap/m/semantic/SortSelect.js +1 -1
  404. package/src/sap/m/table/ColumnWidthController.js +1 -1
  405. package/src/sap/m/table/Util.js +1 -1
  406. package/src/sap/m/table/columnmenu/ActionItem.js +1 -1
  407. package/src/sap/m/table/columnmenu/Entry.js +1 -1
  408. package/src/sap/m/table/columnmenu/Item.js +1 -1
  409. package/src/sap/m/table/columnmenu/ItemBase.js +1 -1
  410. package/src/sap/m/table/columnmenu/Menu.js +1 -1
  411. package/src/sap/m/table/columnmenu/QuickAction.js +1 -1
  412. package/src/sap/m/table/columnmenu/QuickActionBase.js +1 -1
  413. package/src/sap/m/table/columnmenu/QuickActionItem.js +1 -1
  414. package/src/sap/m/table/columnmenu/QuickGroup.js +1 -1
  415. package/src/sap/m/table/columnmenu/QuickGroupItem.js +1 -1
  416. package/src/sap/m/table/columnmenu/QuickSort.js +1 -1
  417. package/src/sap/m/table/columnmenu/QuickSortItem.js +1 -1
  418. package/src/sap/m/table/columnmenu/QuickTotal.js +1 -1
  419. package/src/sap/m/table/columnmenu/QuickTotalItem.js +1 -1
  420. package/src/sap/m/themes/base/ActionTile.less +171 -152
  421. package/src/sap/m/themes/base/ActionTileContent.less +62 -0
  422. package/src/sap/m/themes/base/CellSelector.less +77 -5
  423. package/src/sap/m/themes/base/Dialog.less +0 -4
  424. package/src/sap/m/themes/base/GenericTile.less +397 -12
  425. package/src/sap/m/themes/base/HeaderContainer.less +8 -0
  426. package/src/sap/m/themes/base/IconTabBar.less +18 -0
  427. package/src/sap/m/themes/base/ObjectNumber.less +7 -1
  428. package/src/sap/m/themes/base/ObjectStatus.less +5 -0
  429. package/src/sap/m/themes/base/Title.less +1 -1
  430. package/src/sap/m/themes/base/Toolbar.less +4 -0
  431. package/src/sap/m/themes/base/UploadSetwithTable.less +20 -0
  432. package/src/sap/m/themes/base/VariantManagement.less +3 -0
  433. package/src/sap/m/themes/base/library.source.less +1 -0
  434. package/src/sap/m/upload/ActionsPlaceholder.js +12 -2
  435. package/src/sap/m/upload/Column.js +1 -1
  436. package/src/sap/m/upload/FilePreviewDialog.js +6 -6
  437. package/src/sap/m/upload/UploadItem.js +322 -0
  438. package/src/sap/m/upload/UploadItemConfiguration.js +191 -0
  439. package/src/sap/m/upload/UploadSet.js +1 -1
  440. package/src/sap/m/upload/UploadSetItem.js +4 -5
  441. package/src/sap/m/upload/UploadSetToolbarPlaceholder.js +1 -1
  442. package/src/sap/m/upload/UploadSetwithTable.js +4 -3
  443. package/src/sap/m/upload/UploadSetwithTableItem.js +2 -3
  444. package/src/sap/m/upload/UploaderTableItem.js +19 -12
  445. package/src/sap/m/upload/p13n/PersManager.js +1 -1
  446. package/src/sap/m/upload/p13n/mediator/BaseMediator.js +4 -4
  447. package/src/sap/m/upload/p13n/mediator/ColumnsMediator.js +1 -1
  448. package/src/sap/m/upload/p13n/mediator/FilterMediator.js +1 -1
  449. package/src/sap/m/upload/p13n/mediator/GroupMediator.js +1 -1
  450. package/src/sap/m/upload/p13n/mediator/SortMediator.js +1 -1
  451. package/src/sap/m/upload/p13n/modules/PersPopupManager.js +3 -3
@@ -14,10 +14,8 @@ sap.ui.define([
14
14
  "use strict";
15
15
 
16
16
  const ListMode = library.ListMode;
17
- const RESPONSIVETABLE_ENABLED = new URLSearchParams(window.location.search).get("sap-ui-xx-cellSelectionMTable") === "true";
18
- const DELAY_SHORT = 250; //TBD Are 2 different delays necessary?
17
+ const DELAY_SHORT = 250; //TBD: Are 2 different delays necessary?
19
18
  const DELAY_LONG = DELAY_SHORT * 2;
20
-
21
19
  const DIRECTION = {
22
20
  ROW: "row",
23
21
  COL: "col"
@@ -29,7 +27,7 @@ sap.ui.define([
29
27
  */
30
28
  Cell: "Cell",
31
29
  /**
32
- * Cells that are not "normal" and could require special handling or look different.
30
+ * Cells that require special handling or look different.
33
31
  */
34
32
  Other: "Other",
35
33
  /**
@@ -48,14 +46,15 @@ sap.ui.define([
48
46
  * The <code>CellSelector</code> plugin enables cell selection inside the table when it is added as a dependent to the control.
49
47
  * It allows the user to individually select a cell block.
50
48
  *
51
- * The <code>CellSelector</code> plugin currently does not offer touch support.
49
+ * Currently, the <code>CellSelector</code> plugin does not offer touch support.
52
50
  *
53
- * The <code>CellSelector</code> plugin cannot be used if the following applies:
51
+ * The <code>CellSelector</code> plugin can be used with the {@link sap.ui.table.Table} and {@link sap.m.Table} unless the following applies:
54
52
  * <ul>
55
53
  * <li>Drag for rows is active</li>
56
- * <li>The target control is not a {@link sap.ui.table.Table}</li>
57
- * <li>If used in combination with {@link sap.ui.table.Table#cellClick}</li>
58
- * <li>If used in combination with the following selection behavior: <code>sap.ui.table.SelectionBehavior.RowOnly</code> and <code>sap.ui.table.SelectionBehavior.Row</code>
54
+ * <li>If used in combination with {@link sap.ui.table.Table#cellClick} or {@link sap.m.Table#itemPress}</li>
55
+ * <li>If the <code>sap.ui.table.SelectionBehavior.RowOnly</code> or <code>sap.ui.table.SelectionBehavior.Row</code> selection behavior is used
56
+ * in the <code>sap.ui.table.Table</code></li>
57
+ * <li>If the <code>sap.m.ListType.SingleSelectMaster</code> mode is used in the <code>sap.m.Table</code></li>
59
58
  * </ul>
60
59
  *
61
60
  * When the <code>CellSelector</code> is used in combination with the {@link sap.ui.mdc.Table}, modifying the following settings on the {@link sap.ui.mdc.Table} may lead to problems:
@@ -65,11 +64,10 @@ sap.ui.define([
65
64
  * </ul>
66
65
  *
67
66
  * @extends sap.ui.core.Element
68
- * @version 1.123.0
67
+ * @version 1.124.0
69
68
  * @author SAP SE
70
69
  *
71
70
  * @public
72
- * @experimental Since 1.119. This class is experimental. The API might be changed in the future.
73
71
  * @since 1.119
74
72
  * @alias sap.m.plugins.CellSelector
75
73
  * @borrows sap.m.plugins.PluginBase.findOn as findOn
@@ -79,7 +77,7 @@ sap.ui.define([
79
77
  library: "sap.m",
80
78
  properties: {
81
79
  /**
82
- * For the {@link sap.ui.table.Table} control, defines the number of row contexts that needs to be retrived from the binding
80
+ * Defines the number of row contexts for the {@link sap.ui.table.Table} control that need to be retrieved from the binding
83
81
  * when the range selection (e.g. enhancing the cell selection block to cover all rows of a column) is triggered by the user.
84
82
  * This helps to make the contexts already available for the user actions after the cell selection (e.g. copy to clipboard).
85
83
  * This property accepts positive integer values.
@@ -120,12 +118,12 @@ sap.ui.define([
120
118
  * Consists of a row index and a column index describing the position of the cell in the table.
121
119
  * @private
122
120
  * @typedef {object} sap.m.plugins.CellSelector.CellPosition
123
- * @property {number} rowIndex row index of the cell
124
- * @property {number} colIndex column index of the cell
121
+ * @property {number} rowIndex Row index of the cell
122
+ * @property {number} colIndex Column index of the cell
125
123
  */
126
124
 
127
125
  /**
128
- * Event Delegate that containts events, that need to be executed after control events.
126
+ * Delegate containing events that are fired after control events.
129
127
  */
130
128
  const EventDelegate = {
131
129
  onkeydown: function(oEvent) {
@@ -147,13 +145,13 @@ sap.ui.define([
147
145
  };
148
146
 
149
147
  /**
150
- * Delegate containing events, that need to be processed before control events.
148
+ * Delegate containing events that are fired before control events.
151
149
  */
152
150
  const PriorityDelegate = {
153
151
  onBeforeRendering: function() {
154
152
  this._iBtt = this.getConfig("isBottomToTop", this.getControl()) ? -1 : 1;
155
153
  if (this._oResizer) {
156
- // remove resizer, as due to rerendering table element may be gone
154
+ // Remove resizer, as due to rerendering table element may be gone
157
155
  this._oResizer.remove();
158
156
  this._oResizer = null;
159
157
  }
@@ -175,7 +173,7 @@ sap.ui.define([
175
173
  },
176
174
  onsapspace: function(oEvent) {
177
175
  if (isSelectableCell(oEvent.target, this.getConfig("selectableCells"))) {
178
- oEvent.preventDefault(); // prevent event otherwise m.Table will scroll
176
+ oEvent.preventDefault(); // Prevent default, otherwise m.Table will scroll
179
177
  }
180
178
  },
181
179
  onsapleftmodifiers: function(oEvent) {
@@ -209,7 +207,7 @@ sap.ui.define([
209
207
  this._startSelection(oEvent, false);
210
208
  oEvent.setMarked();
211
209
  } else if (isKeyCombination(oEvent, KeyCodes.SPACE, true, false)) {
212
- var oInfo = this.getConfig("getCellInfo", this.getControl(), oEvent.target, this._oPreviousCell);
210
+ const oInfo = this.getConfig("getCellInfo", this.getControl(), oEvent.target, this._oPreviousCell);
213
211
  if (!this._inSelection(oEvent.target)) {
214
212
  mBounds.from = mBounds.to = {};
215
213
  mBounds.from.rowIndex = mBounds.to.rowIndex = oInfo.rowIndex;
@@ -222,7 +220,7 @@ sap.ui.define([
222
220
  } else if (isKeyCombination(oEvent, KeyCodes.SPACE, false, true) && this._getSelectableCell(oEvent.target)) {
223
221
  if (!this._inSelection(oEvent.target)) {
224
222
  // If focus is on cell outside of selection, select focused column
225
- var oInfo = this.getConfig("getCellInfo", this.getControl(), oEvent.target, this._oPreviousCell);
223
+ const oInfo = this.getConfig("getCellInfo", this.getControl(), oEvent.target, this._oPreviousCell);
226
224
  mBounds.from = Object.assign({}, oInfo);
227
225
  mBounds.to = Object.assign({}, oInfo);
228
226
  }
@@ -240,16 +238,19 @@ sap.ui.define([
240
238
  return;
241
239
  }
242
240
 
243
- if (oEvent.ctrlKey || oEvent.metaKey) {
244
- this._startSelection(oEvent);
245
- }
246
-
247
241
  var oSelectableCell = this._getSelectableCell(oEvent.target);
248
242
  if (oSelectableCell) {
249
243
  this._bMouseDown = true;
250
244
  this._mClickedCell = this.getConfig("getCellInfo", this.getControl(), oSelectableCell, this._oPreviousCell);
251
245
  this._oPreviousCell = this._mClickedCell;
252
246
  }
247
+
248
+ if (oEvent.ctrlKey || oEvent.metaKey) {
249
+ this._startSelection(oEvent);
250
+ if (this._mClickedCell) {
251
+ this.getConfig("focusCell", this.getControl(), this._mClickedCell);
252
+ }
253
+ }
253
254
  },
254
255
  onmouseup: function(oEvent) {
255
256
  clearTimeout(this._iTimer);
@@ -260,7 +261,15 @@ sap.ui.define([
260
261
  this._oPreviousCell = undefined;
261
262
  this._mTempCell = undefined;
262
263
  this._oHoveredCell = undefined;
264
+ this._endSelection(oEvent);
263
265
  this._clearScroller();
266
+ setTimeout(() => { this._startTarget = null; }, 0);
267
+ },
268
+ onclick: function(oEvent) {
269
+ var oTarget = this._getSelectableCell(oEvent.target);
270
+ if (oTarget && this._startTarget === oTarget) {
271
+ oEvent.stopPropagation();
272
+ }
264
273
  }
265
274
  };
266
275
 
@@ -278,6 +287,9 @@ sap.ui.define([
278
287
  this.removeSelection();
279
288
  };
280
289
 
290
+ /**
291
+ * @inheritDoc
292
+ */
281
293
  CellSelector.prototype.onActivate = function (oControl) {
282
294
  oControl.addDelegate(PriorityDelegate, true, this);
283
295
  oControl.addDelegate(EventDelegate, false, this);
@@ -300,13 +312,17 @@ sap.ui.define([
300
312
  this._fnOnMouseOut = this._onmouseout.bind(this);
301
313
  this._fnOnMouseMove = this._onmousemove.bind(this);
302
314
  this._fnOnMouseUp = PriorityDelegate.onmouseup.bind(this);
315
+ this._fnOnClick = PriorityDelegate.onclick.bind(this);
303
316
  this._fnRemoveSelection = this.removeSelection.bind(this);
304
317
 
305
- // Register Events, as adding dependent does not trigger rerendering
318
+ // Register Events as adding dependent does not trigger rerendering
306
319
  this._registerEvents();
307
320
  this._onSelectableChange();
308
321
  };
309
322
 
323
+ /**
324
+ * @inheritDoc
325
+ */
310
326
  CellSelector.prototype.onDeactivate = function (oControl) {
311
327
  oControl.removeDelegate(PriorityDelegate, this);
312
328
  oControl.removeDelegate(EventDelegate, this);
@@ -333,10 +349,10 @@ sap.ui.define([
333
349
  };
334
350
 
335
351
  /**
336
- * Determines whether cells are selectable or not.
352
+ * Determines whether cells are selectable.
337
353
  *
338
354
  * @private
339
- * @returns {boolean} Whether cells are selectable or not
355
+ * @returns {boolean} Whether cells are selectable
340
356
  * @ui5-restricted sap.m.plugins.CopyProvider
341
357
  */
342
358
  CellSelector.prototype.isSelectable = function() {
@@ -344,10 +360,10 @@ sap.ui.define([
344
360
  };
345
361
 
346
362
  /**
347
- * Determines whether there is a cell selection or not.
363
+ * Determines whether there is a cell selection.
348
364
  *
349
365
  * @private
350
- * @returns {boolean} Whether there is a cell selection or not
366
+ * @returns {boolean} Whether there is a cell selection
351
367
  * @ui5-restricted sap.m.plugins.CopyProvider
352
368
  */
353
369
  CellSelector.prototype.hasSelection = function() {
@@ -368,11 +384,13 @@ sap.ui.define([
368
384
  if (oControl) {
369
385
  this.getConfig("scrollEvent") && oControl.attachEvent(this.getConfig("scrollEvent"), this._fnControlUpdate);
370
386
  this.getConfig("attachSelectionChange", oControl, this._fnRemoveSelection);
387
+ this.getConfig("attachBindingUpdate", oControl, this);
371
388
  var oScrollArea = oControl.getDomRef(this.getConfig("scrollArea"));
372
389
  if (oScrollArea) {
373
390
  oScrollArea.addEventListener("mouseleave", this._fnOnMouseOut);
374
391
  oScrollArea.addEventListener("mouseenter", this._fnOnMouseEnter);
375
392
  oScrollArea.addEventListener("mousemove", this._fnOnMouseMove);
393
+ oScrollArea.addEventListener("click", this._fnOnClick);
376
394
  }
377
395
  }
378
396
  document.addEventListener("mouseup", this._fnOnMouseUp);
@@ -383,11 +401,13 @@ sap.ui.define([
383
401
  if (oControl) {
384
402
  oControl.detachEvent(this.getConfig("scrollEvent"), this._fnControlUpdate);
385
403
  this.getConfig("detachSelectionChange", oControl, this._fnRemoveSelection);
404
+ this.getConfig("detachBindingUpdate", oControl, this._fnOnBindingUpdate);
386
405
  var oScrollArea = oControl.getDomRef(this.getConfig("scrollArea"));
387
406
  if (oScrollArea) {
388
407
  oScrollArea.removeEventListener("mouseleave", this._fnOnMouseOut);
389
408
  oScrollArea.removeEventListener("mouseenter", this._fnOnMouseEnter);
390
409
  oScrollArea.removeEventListener("mousemove", this._fnOnMouseMove);
410
+ oScrollArea.removeEventListener("click", this._fnOnClick);
391
411
  }
392
412
  }
393
413
  document.removeEventListener("mouseup", this._fnOnMouseUp);
@@ -397,9 +417,8 @@ sap.ui.define([
397
417
  * Returns the cell selection range.
398
418
  * The value <code>Infinity</code> in <code>rowIndex</code> indicates that the limit is reached.
399
419
  *
400
- * <b>Note</b>: This method is subject to change.
401
420
  * @param {boolean} bIgnore Ignore group header rows within selection range
402
- * @returns {{from: {rowIndex: int, colIndex: int}, to: {rowIndex: int, colIndex: int}} The range of the selection
421
+ * @returns {object} {{from: {rowIndex: int, colIndex: int}, to: {rowIndex: int, colIndex: int}} The selection range
403
422
  * @ui5-restricted sap.m.plugins.CopyProvider
404
423
  * @private
405
424
  */
@@ -437,7 +456,6 @@ sap.ui.define([
437
456
  /**
438
457
  * Returns the row binding context of the current selection.
439
458
  *
440
- * Note: This method is subject to change.
441
459
  * @returns {sap.ui.model.Context[]} The binding context of selected rows
442
460
  * @private
443
461
  * @ui5-restricted sap.m.plugins.CopyProvider
@@ -452,7 +470,7 @@ sap.ui.define([
452
470
  };
453
471
 
454
472
  /**
455
- * Returns the selected cells separated into the selected rows and columns.
473
+ * Returns the selected cells separated into selected rows and columns.
456
474
  *
457
475
  * Example:
458
476
  * If the cells from (0, 0) to (2, 4) are selected, this method will return the following object:
@@ -468,8 +486,8 @@ sap.ui.define([
468
486
  *
469
487
  * @param {boolean} bIgnore Ignores group headers from selection
470
488
  * @returns {sap.m.plugins.CellSelector.Selection} An object containing the selected cells separated into rows and columns
471
- * @private
472
- * @ui5-restricted sap.fe, sap.suite.ui.generic.template
489
+ * @public
490
+ * @since 1.124
473
491
  */
474
492
  CellSelector.prototype.getSelection = function(bIgnore) {
475
493
  var mSelectionRange = this.getSelectionRange();
@@ -525,6 +543,10 @@ sap.ui.define([
525
543
 
526
544
  var oInfo = this.getConfig("getCellInfo", this.getControl(), oSelectableCell, this._oPreviousCell);
527
545
 
546
+ if (oInfo.rowIndex < 0 || oInfo.colIndex < 0) {
547
+ return;
548
+ }
549
+
528
550
  if (!this._inSelection(oEvent.target) || !this._oSession.mSource || !this._oSession.mTarget) {
529
551
  if (this.getConfig("isRowSelected", this.getControl(), oInfo.rowIndex)) {
530
552
  return;
@@ -564,11 +586,12 @@ sap.ui.define([
564
586
  };
565
587
 
566
588
  /**
567
- * Event handler for mouse movement. Handles mouse movement during cell selection. Takes on tasks like:
589
+ * Event handler for <code>mousemove</code>. Handles <code>mousemove</code> event during cell selection. Takes on tasks like:
568
590
  * - updating resizer positions
569
591
  * - mouse selection via cell click and move
570
592
  * - selection enhancement via border and edge
571
- * @param {sap.ui.base.Event} oEvent event
593
+ * @param {jQuery.Event} oEvent The mouse event
594
+ * @private
572
595
  */
573
596
  CellSelector.prototype._onmousemove = function(oEvent) {
574
597
  function select() {
@@ -592,7 +615,8 @@ sap.ui.define([
592
615
  this._oHoveredCell = oInfo;
593
616
  }
594
617
 
595
- // Only update the resizer, if we are selecting and the border is not pressed. During border/edge pressing, don't update it
618
+
619
+ // Only update the resizer if during selection the border is not pressed
596
620
  if (this._bSelecting && !this._bMouseDown && this._bRenderResizer) {
597
621
  const mBounds = this._getNormalizedBounds(this._oSession.mSource, this._oSession.mTarget);
598
622
  this._updateResizers(mBounds, oEvent.clientX, oEvent.clientY);
@@ -600,20 +624,24 @@ sap.ui.define([
600
624
 
601
625
  var oSelectableCell = this._getSelectableCell(oEvent.target);
602
626
  if (!oSelectableCell || !this._bMouseDown) {
603
- // if mouse is not down/target is not a cell, we should not execute selection logic
627
+ // Selection logic should not execute if mouse is not down or target is not a cell
604
628
  return;
605
629
  }
606
630
 
607
631
  clearTimeout(this._iTimer);
608
- oEvent.stopImmediatePropagation(); // stop propagation to surpress other mechanisms such as column resizing
632
+ oEvent.stopImmediatePropagation(); // Stop propagation to surpress other actions such as column resizing
609
633
 
610
634
  var oInfo = this.getConfig("getCellInfo", this.getControl(), oSelectableCell, this._oPreviousCell);
635
+ if (oInfo.rowIndex < 0 || oInfo.colIndex < 0) {
636
+ return;
637
+ }
638
+
611
639
  const bClickedHovered = oInfo.rowIndex == this._oPreviousCell?.rowIndex && oInfo.colIndex == this._oPreviousCell?.colIndex;
612
640
  if (bClickedHovered || oInfo.type == CellType.Ignore) {
613
641
  return;
614
642
  }
615
643
 
616
- // If previously hovered cell is the same as the currently hovered one, do not execute anything. Only do this in case the hovered one is of category Other.
644
+ // If previously hovered cell is the same as the currently hovered one, do not execute anything (except the hovered cell is of type Other.
617
645
  if (oInfo.type == CellType.Other && this._oHoveredCell?.rowIndex == oInfo.rowIndex && this._oHoveredCell?.colIndex == oInfo.colIndex) {
618
646
  return;
619
647
  }
@@ -649,7 +677,12 @@ sap.ui.define([
649
677
  }
650
678
  };
651
679
 
652
- /** Event Handler for Mouse Selection (leaving table, etc.) */
680
+ /**
681
+ * Event handler for mouse selection (leaving table, etc.)
682
+ *
683
+ * @param {jQuery.Event} oEvent The mouse event
684
+ * @private
685
+ */
653
686
  CellSelector.prototype._onmouseout = function(oEvent) {
654
687
  var oScrollAreaRef = this.getControl().getDomRef(this.getConfig("scrollArea"));
655
688
 
@@ -725,13 +758,14 @@ sap.ui.define([
725
758
  this._oSession.border = Object.assign({}, this._oCurrentBorder);
726
759
  this._bBorderDown = true;
727
760
  this._bMouseDown = true;
728
- // TODO: when borderdown, make "border" active
761
+ // TODO: When borderdown, make "border" active
729
762
  };
730
763
 
731
764
  /**
732
- * Checks if the given DOM reference is a selectable cell.
733
- * @param {HTMLELement} oDomRef
734
- * @returns {HTMLELement|null}
765
+ * For a given DOM reference it returns the closest selectable cell.
766
+ * @param {HTMLELement} oDomRef DOM reference
767
+ * @returns {HTMLELement|null} Selectable cell DOM reference
768
+ * @private
735
769
  */
736
770
  CellSelector.prototype._getSelectableCell = function (oDomRef) {
737
771
  if (!oDomRef) {
@@ -766,6 +800,14 @@ sap.ui.define([
766
800
  return;
767
801
  }
768
802
 
803
+ if (!this._bSelectionInProgress) {
804
+ this.getConfig("onSelectionStart", this.getControl(), oEvent);
805
+ this._bSelectionInProgress = true;
806
+ if (this._oPreviousCell) {
807
+ this._startTarget = this.getConfig("getCellRef", this.getControl(), this._oPreviousCell);
808
+ }
809
+ }
810
+
769
811
  if (this._inSelection(oTarget) && !bMove) {
770
812
  this.removeSelection();
771
813
  } else {
@@ -782,8 +824,26 @@ sap.ui.define([
782
824
  oEvent.setMarked && oEvent.setMarked();
783
825
  };
784
826
 
827
+ CellSelector.prototype._endSelection = function(oEvent) {
828
+ if (!this._bSelectionInProgress) {
829
+ return;
830
+ }
831
+ this._bSelectionInProgress = false;
832
+
833
+ var oTarget = this._getSelectableCell(oEvent.target);
834
+ if (!oTarget) {
835
+ return;
836
+ }
837
+
838
+ this.getConfig("onSelectionEnd", this.getControl(), oEvent);
839
+ };
840
+
785
841
  /**
786
842
  * Selects the next cells in a specific direction (ROW, COL).
843
+ * @param iRowDiff {int}
844
+ * @param iColDiff {int}
845
+ * @param mOldFocus {object}
846
+ * @returns {object} The updated bounding
787
847
  * @private
788
848
  */
789
849
  CellSelector.prototype._getUpdatedBounds = function(iRowDiff, iColDiff, mOldFocus) {
@@ -825,8 +885,8 @@ sap.ui.define([
825
885
  * a) source cell to target cell or
826
886
  * b) source cell to current lower right cell.
827
887
  * The bigger bounding box of the two will be inspected.
828
- * @param {sap.m.plugins.CellSelector.CellPosition} mFrom source cell coordinates
829
- * @param {sap.m.plugins.CellSelector.CellPosition} mTo target cell coordinates
888
+ * @param {sap.m.plugins.CellSelector.CellPosition} mFrom Source cell coordinates
889
+ * @param {sap.m.plugins.CellSelector.CellPosition} mTo Target cell coordinates
830
890
  * @private
831
891
  */
832
892
  CellSelector.prototype._selectCells = function (mFrom, mTo) {
@@ -972,8 +1032,9 @@ sap.ui.define([
972
1032
  };
973
1033
 
974
1034
  /**
975
- * Retrieves the resizer element. If none is existent, creates an element.
976
- * @returns {HTMLELement} resizer element
1035
+ * Retrieves the resizer element. If none exists, creates an element.
1036
+ * @returns {HTMLELement} Resizer element
1037
+ * @private
977
1038
  */
978
1039
  CellSelector.prototype._getResizer = function() {
979
1040
  if (!this._oResizer) {
@@ -1002,15 +1063,12 @@ sap.ui.define([
1002
1063
 
1003
1064
  /**
1004
1065
  * Returns an object containing normalized coordinates for the given bounding area.
1005
- * <code>from</code> will contain the coordinates for the upper left corner of the bounding area,
1006
- * while <code>to</code> contains the coordinates of the lower right corner of the bounding area.
1007
- * @param {Object} mFrom
1008
- * @param {int} mFrom.rowIndex row index
1009
- * @param {int} mFrom.colIndex column index
1010
- * @param {Object} mTo
1011
- * @param {int} mTo.rowIndex row index
1012
- * @param {int} mTo.colIndex column index
1013
- * @returns object containing coordinates for from and to
1066
+ * <code>from</code> contains the coordinates for the upper left corner of the bounding area,
1067
+ * <code>to</code> contains the coordinates of the lower right corner of the bounding area.
1068
+ * @param {Object} mFrom Source cell coordinates
1069
+ * @param {Object} mTo Target cell coordinates
1070
+ * @param {boolean} bKeepBounds
1071
+ * @returns {object} Object containing coordinates for the bounding area
1014
1072
  */
1015
1073
  CellSelector.prototype._getNormalizedBounds = function(mFrom, mTo, bKeepBounds) {
1016
1074
  const iMaxColumns = this.getConfig("numberOfColumns", this.getControl());
@@ -1061,22 +1119,24 @@ sap.ui.define([
1061
1119
  }
1062
1120
 
1063
1121
  /**
1064
- * Check if the given key combination applies to the event.
1065
- * @param {sap.ui.base.Event} oEvent event instance
1066
- * @param {string} sKeyCode key code
1067
- * @param {boolean} bShift shift key pressed
1068
- * @param {boolean} bCtrl control key pressed
1069
- * @returns is combination or not
1122
+ * Checks whether the key press event is a key combination.
1123
+ *
1124
+ * @param {sap.ui.base.Event} oEvent The keyboard event
1125
+ * @param {string} sKeyCode Key code
1126
+ * @param {boolean} bShift Shift key pressed
1127
+ * @param {boolean} bCtrl Control key pressed
1128
+ * @returns {boolean} Whether the key press event is a key combination
1129
+ * @private
1070
1130
  */
1071
1131
  function isKeyCombination(oEvent, sKeyCode, bShift, bCtrl) {
1072
1132
  return oEvent.keyCode == sKeyCode && oEvent.shiftKey == bShift && (oEvent.ctrlKey == bCtrl || oEvent.metaKey == bCtrl);
1073
1133
  }
1074
1134
 
1075
1135
  /**
1076
- * Checks if drag on the rows/items aggregation is activated.
1077
- * @param {sap.ui.core.Control} oControl control to be checked
1078
- * @param {string} sAffectedAggregation name of the aggregation which is affected by D&D
1079
- * @returns {boolean} whether drag on rows is enabled
1136
+ * Checks whether drag on the rows/items aggregation is activated.
1137
+ * @param {sap.ui.core.Control} oControl Control to be checked
1138
+ * @param {string} sAffectedAggregation Name of the aggregation which is affected by D&D
1139
+ * @returns {boolean} Whether drag on rows is enabled
1080
1140
  */
1081
1141
  function hasDragEnabled(oControl, sAffectedAggregation) {
1082
1142
  return oControl.getDragDropConfig().some((oConfig) => oConfig.getSourceAggregation?.() == sAffectedAggregation && oConfig.getEnabled());
@@ -1093,8 +1153,8 @@ sap.ui.define([
1093
1153
  oTable.attachEvent("EventHandlerChange", oPlugin, this._onEventHandlerChange);
1094
1154
  },
1095
1155
  onDeactivate: function(oTable, oPlugin) {
1096
- oTable.detachEvent("_change", oPlugin, this._onPropertyChange);
1097
- oTable.detachEvent("EventHandlerChange", oPlugin, this._onEventHandlerChange);
1156
+ oTable.detachEvent("_change", this._onPropertyChange);
1157
+ oTable.detachEvent("EventHandlerChange", this._onEventHandlerChange);
1098
1158
  },
1099
1159
  _onPropertyChange: function(oEvent, oPlugin) {
1100
1160
  oEvent.getParameter("name") == "selectionBehavior" && oPlugin._onSelectableChange();
@@ -1103,9 +1163,9 @@ sap.ui.define([
1103
1163
  oEvent.getParameter("EventId") == "cellClick" && oPlugin._onSelectableChange();
1104
1164
  },
1105
1165
  /**
1106
- * Checks if the table is compatible with cell selection.
1107
- * @param {sap.ui.table.Table} oTable table instance
1108
- * @returns {boolean} compatibility with cell selection
1166
+ * Checks whether the table is compatible with cell selection.
1167
+ * @param {sap.ui.table.Table} oTable Table instance
1168
+ * @returns {boolean} Compatibility with cell selection
1109
1169
  */
1110
1170
  isSupported: function(oTable, oPlugin) {
1111
1171
  return !oTable.hasListeners("cellClick")
@@ -1116,9 +1176,9 @@ sap.ui.define([
1116
1176
  return false;
1117
1177
  },
1118
1178
  /**
1119
- * Get visible columns of the table.
1120
- * @param {sap.ui.table.Table} oTable table instance
1121
- * @returns {sap.ui.table.Column[]} array of visible columns
1179
+ * Returns the visible columns of the table.
1180
+ * @param {sap.ui.table.Table} oTable Table instance
1181
+ * @returns {sap.ui.table.Column[]} Array of visible columns
1122
1182
  */
1123
1183
  getVisibleColumns: function (oTable) {
1124
1184
  return oTable.getColumns().filter(function (oColumn) {
@@ -1127,9 +1187,9 @@ sap.ui.define([
1127
1187
  },
1128
1188
  /**
1129
1189
  * Retrieve the number of visible columns in the table.
1130
- * @param {sap.ui.table.Table} oTable table instance
1131
- * @param {boolean} bIncludeSpecial include special columns, e.g. such as popins as separate columns
1132
- * @returns {number} number of columns
1190
+ * @param {sap.ui.table.Table} oTable Table instance
1191
+ * @param {boolean} bIncludeSpecial Include special columns as separate columns
1192
+ * @returns {number} Number of columns
1133
1193
  */
1134
1194
  numberOfColumns: function(oTable, bIncludeSpecial) {
1135
1195
  return this.getVisibleColumns(oTable).length;
@@ -1141,6 +1201,7 @@ sap.ui.define([
1141
1201
  * Retrieve the cell reference for a given position
1142
1202
  * @param {sap.ui.table.Table} oTable table instance
1143
1203
  * @param {sap.m.plugins.CellSelector.CellPosition} mPosition position of cell
1204
+ * @param {boolean} bRange
1144
1205
  * @returns {HTMLElement|undefined} cell's DOM element or undefined if the row or column index are invalid
1145
1206
  */
1146
1207
  getCellRef: function (oTable, mPosition, bRange) {
@@ -1155,9 +1216,9 @@ sap.ui.define([
1155
1216
  },
1156
1217
  /**
1157
1218
  * Retrieve cell information for a given DOM element.
1158
- * @param {sap.ui.table.Table} oTable table instance
1159
- * @param {HTMLElement} oTarget DOM element of cell
1160
- * @returns {object} cell information containing rowIndex, colIndex and type of the cell
1219
+ * @param {sap.ui.table.Table} oTable Table instance
1220
+ * @param {HTMLElement} oTarget DOM reference of cell
1221
+ * @returns {object} Cell information containing rowIndex, colIndex and cell type
1161
1222
  */
1162
1223
  getCellInfo: function (oTable, oTarget) {
1163
1224
  return {
@@ -1168,9 +1229,9 @@ sap.ui.define([
1168
1229
  },
1169
1230
  /**
1170
1231
  * Returns the cell type of the given target cell.
1171
- * @param {sap.ui.table.Table} oTable table instance
1172
- * @param {HTMLELement} oTarget cell reference
1173
- * @returns {string} cell type
1232
+ * @param {sap.ui.table.Table} oTable Table instance
1233
+ * @param {HTMLELement} oTarget Cell reference
1234
+ * @returns {string} Cell type
1174
1235
  */
1175
1236
  getCellType: function(oTable, oTarget) {
1176
1237
  const oRow = Element.closestTo(oTarget, true);
@@ -1203,11 +1264,12 @@ sap.ui.define([
1203
1264
  return aContexts;
1204
1265
  },
1205
1266
  /**
1206
- * Select rows beginning at iFrom to iTo.
1267
+ * Selects the rows with indices between iFrom and iTo.
1207
1268
  * @param {sap.ui.table.Table} oTable The table instance
1208
- * @param {int} iFrom starting row index
1209
- * @param {int} iTo ending row index
1210
- * @param {int} mFocus focused row index
1269
+ * @param {int} iFrom Start row index
1270
+ * @param {int} iTo End row index
1271
+ * @param {int} iFocus Focused row index
1272
+ * @returns {boolean} Returns true if the selection was successful
1211
1273
  */
1212
1274
  selectRows: function(oTable, iFrom, iTo, iFocus) {
1213
1275
  var oSelectionOwner = this._getSelectionOwner(oTable);
@@ -1243,9 +1305,9 @@ sap.ui.define([
1243
1305
  },
1244
1306
  /**
1245
1307
  * Checks if the given row is selected.
1246
- * @param {sap.ui.table.Table} oTable table instance
1247
- * @param {number|sap.ui.table.Row} vRow either row index or row instance
1248
- * @returns {boolean} selection state
1308
+ * @param {sap.ui.table.Table} oTable Table instance
1309
+ * @param {number|sap.ui.table.Row} vRow Either row index or row instance
1310
+ * @returns {boolean} Selection state
1249
1311
  */
1250
1312
  isRowSelected: function(oTable, vRow) {
1251
1313
  var oSelectionOwner = this._getSelectionOwner(oTable);
@@ -1302,6 +1364,18 @@ sap.ui.define([
1302
1364
  }
1303
1365
  oSelectionOwner.detachRowSelectionChange(fnCallback);
1304
1366
  },
1367
+ attachBindingUpdate: function(oTable, oPlugin) {
1368
+ oTable.attachEvent("_rowsUpdated", oPlugin, this._fnOnRowsUpdated);
1369
+ },
1370
+ detachBindingUpdate: function(oTable, oPlugin) {
1371
+ oTable.detachEvent("_rowsUpdated", this._fnOnRowsUpdated);
1372
+ },
1373
+ _fnOnRowsUpdated: function(oEvent, oPlugin) {
1374
+ // TreeTable does not rerender after expand/collapse, so we need to remove the selection
1375
+ if (["collapse", "expand"].includes(oEvent.getParameter("reason"))) {
1376
+ oPlugin.removeSelection();
1377
+ }
1378
+ },
1305
1379
  _getSelectionOwner: function(oTable) {
1306
1380
  return PluginBase.getPlugin(oTable, "sap.ui.table.plugins.SelectionPlugin") || oTable;
1307
1381
  },
@@ -1343,13 +1417,14 @@ sap.ui.define([
1343
1417
  "sap.m.Table": {
1344
1418
  selectableCells: ".sapMLIBFocusable, .sapMListTblCell, .sapMListTblSubRowCell, .sapMListTblSubCnt",
1345
1419
  scrollArea: "listUl",
1420
+ eventClearedAll: "sapMTableClearAll",
1346
1421
  onActivate: function(oTable, oPlugin) {
1347
1422
  oTable.attachEvent("_change", oPlugin, this._onPropertyChange);
1348
1423
  oTable.attachEvent("EventHandlerChange", oPlugin, this._onEventHandlerChange);
1349
1424
  },
1350
1425
  onDeactivate: function(oTable, oPlugin) {
1351
- oTable.detachEvent("_change", oPlugin, this._onPropertyChange);
1352
- oTable.detachEvent("EventHandlerChange", oPlugin, this._onEventHandlerChange);
1426
+ oTable.detachEvent("_change", this._onPropertyChange);
1427
+ oTable.detachEvent("EventHandlerChange", this._onEventHandlerChange);
1353
1428
  },
1354
1429
  _onPropertyChange: function(oEvent, oPlugin) {
1355
1430
  oEvent.getParameter("name") == "mode" && oPlugin._onSelectableChange();
@@ -1361,21 +1436,21 @@ sap.ui.define([
1361
1436
  return oTable.getVisibleItems();
1362
1437
  },
1363
1438
  /**
1364
- * Checks if the table is compatible with cell selection.
1365
- * @param {sap.m.Table} oTable table instance
1366
- * @returns {boolean} compatibility with cell selection
1439
+ * Checks whether the table is compatible with cell selection.
1440
+ * @param {sap.m.Table} oTable Table instance
1441
+ * @returns {boolean} Whether the table is compatible with cell selection
1367
1442
  */
1368
1443
  isSupported: function(oTable, oPlugin) {
1369
- return (RESPONSIVETABLE_ENABLED /*URL param*/ || oPlugin._bEnableMTable /*programmatic way*/) && oTable.getMode() != ListMode.SingleSelectMaster
1370
- && !hasDragEnabled(oTable, "items");
1444
+ return oTable.getMode() != ListMode.SingleSelectMaster && !hasDragEnabled(oTable, "items");
1371
1445
  },
1372
1446
  isBottomToTop: function(oTable) {
1373
1447
  return oTable.getGrowingDirection() == "Upwards";
1374
1448
  },
1375
1449
  /**
1376
- * Get visible columns of the table.
1377
- * @param {sap.m.Table} oTable table instance
1378
- * @returns {sap.m.Column[]} array of visible columns
1450
+ * Returns the visible columns of the table.
1451
+ * @param {sap.m.Table} oTable Table instance
1452
+ * @param {boolean} bIncludeSpecial Include special columns such as popins as separate columns
1453
+ * @returns {sap.m.Column[]} Array of visible columns
1379
1454
  */
1380
1455
  getVisibleColumns: function (oTable, bIncludeSpecial) {
1381
1456
  return oTable.getColumns(true).filter(function (oColumn) {
@@ -1384,28 +1459,29 @@ sap.ui.define([
1384
1459
  });
1385
1460
  },
1386
1461
  /**
1387
- * Retrieve the number of visible columns in the table.
1388
- * @param {sap.m.Table} oTable table instance
1389
- * @param {boolean} bIncludeSpecial include special columns, e.g. such as popins as separate columns
1390
- * @returns {number} number of columns
1462
+ * Retrieves the number of visible columns in the table.
1463
+ * @param {sap.m.Table} oTable Table instance
1464
+ * @param {boolean} bIncludeSpecial Include special columns, such as popins as separate columns
1465
+ * @returns {number} Number of columns
1391
1466
  */
1392
1467
  numberOfColumns: function(oTable, bIncludeSpecial) {
1393
1468
  var iColCount = this.getVisibleColumns(oTable, bIncludeSpecial).length;
1394
1469
  return bIncludeSpecial ? iColCount : iColCount + oTable.hasPopin();
1395
1470
  },
1396
1471
  /**
1397
- * Retrieve the current row count.
1398
- * @param {sap.m.Table} oTable table instance
1399
- * @returns {number} row count
1472
+ * Retrieves the current row count.
1473
+ * @param {sap.m.Table} oTable Table instance
1474
+ * @returns {number} Row count
1400
1475
  */
1401
1476
  getRowCount: function(oTable) {
1402
1477
  return this._getVisibleItems(oTable).length;
1403
1478
  },
1404
1479
  /**
1405
- * Retrieve the cell reference for a given position
1406
- * @param {sap.m.Table} oTable table instance
1407
- * @param {sap.m.plugins.CellSelector.CellPosition} mPosition position of cell
1408
- * @returns {HTMLElement|undefined} cell's DOM element or undefined if the row or column index are invalid
1480
+ * Retrieves the cell reference for a given position.
1481
+ * @param {sap.m.Table} oTable Table instance
1482
+ * @param {sap.m.plugins.CellSelector.CellPosition} mPosition Position of cell
1483
+ * @param {boolean} bRange
1484
+ * @returns {HTMLElement|undefined} DOM reference of the cell, or undefined if the row or column index is invalid
1409
1485
  */
1410
1486
  getCellRef: function (oTable, mPosition, bRange) {
1411
1487
  const aRows = this._getVisibleItems(oTable);
@@ -1427,10 +1503,11 @@ sap.ui.define([
1427
1503
  return oColumn && getCellDOM(oRow.getCells(), oColumn.getInitialOrder(), this.selectableCells);
1428
1504
  },
1429
1505
  /**
1430
- * Retrieve cell information for a given DOM element.
1431
- * @param {sap.m.Table} oTable table instance
1432
- * @param {HTMLElement} oTarget DOM element of cell
1433
- * @returns {object} cell information containing rowIndex, colIndex and type of the cell
1506
+ * Retrieves cell information for a given DOM element.
1507
+ * @param {sap.m.Table} oTable Table instance
1508
+ * @param {HTMLElement} oTarget DOM reference of cell
1509
+ * @param {object} mPrevious DOM reference of previous cell
1510
+ * @returns {object} Cell information containing rowIndex, colIndex and cell type
1434
1511
  */
1435
1512
  getCellInfo: function (oTable, oTarget, mPrevious) {
1436
1513
  const aColumns = this.getVisibleColumns(oTable);
@@ -1455,9 +1532,9 @@ sap.ui.define([
1455
1532
  },
1456
1533
  /**
1457
1534
  * Returns the cell type of the given target cell.
1458
- * @param {sap.m.Table} oTable table instance
1459
- * @param {HTMLELement} oTarget cell reference
1460
- * @returns {string} cell type
1535
+ * @param {sap.m.Table} oTable Table instance
1536
+ * @param {HTMLELement} oTarget Cell reference
1537
+ * @returns {string|undefined} Cell type
1461
1538
  */
1462
1539
  getCellType: function (oTable, oTarget) {
1463
1540
  const oColumn = Element.getElementById(oTarget.getAttribute("data-sap-ui-column"));
@@ -1497,11 +1574,12 @@ sap.ui.define([
1497
1574
  .map((oItem) => oItem?.getBindingContext(oTable.getBindingInfo("items")?.model));
1498
1575
  },
1499
1576
  /**
1500
- * Select rows beginning at iFrom to iTo.
1577
+ * Selects rows between indices iFrom and iTo.
1501
1578
  * @param {sap.m.Table} oTable The table instance
1502
- * @param {int} iFrom starting row index
1503
- * @param {int} iTo ending row index
1504
- * @param {int} mFocus focused row index
1579
+ * @param {int} iFrom Start row index
1580
+ * @param {int} iTo End row index
1581
+ * @param {int} iFocus Focused row index
1582
+ * @returns {boolean} Whether the selection was successful
1505
1583
  */
1506
1584
  selectRows: function(oTable, iFrom, iTo, iFocus) {
1507
1585
  var sSelectionMode = oTable.getMode();
@@ -1521,10 +1599,10 @@ sap.ui.define([
1521
1599
  return true;
1522
1600
  },
1523
1601
  /**
1524
- * Checks if the given row is selected
1525
- * @param {sap.m.Table} oTable table instance
1526
- * @param {number|sap.m.ListBase} vRow either row index or row instance
1527
- * @returns {boolean} selection state
1602
+ * Returns whether the given row is selected
1603
+ * @param {sap.m.Table} oTable Table instance
1604
+ * @param {number|sap.m.ListBase} vRow Either row index or row instance
1605
+ * @returns {boolean} Selection state
1528
1606
  */
1529
1607
  isRowSelected: function(oTable, vRow) {
1530
1608
  if (typeof vRow === "number") {
@@ -1538,9 +1616,7 @@ sap.ui.define([
1538
1616
  return;
1539
1617
  }
1540
1618
 
1541
- const aRows = this._getVisibleItems(oTable);
1542
- const oRow = getRow(oTable.getItems(), mFocus.rowIndex, false, (oRow) => aRows.indexOf(oRow));
1543
- oRow?.focus();
1619
+ this.getCellRef(oTable, mFocus)?.focus();
1544
1620
  },
1545
1621
  scroll: function(oTable, bForward, bVertical) {
1546
1622
  return Promise.resolve();
@@ -1551,6 +1627,18 @@ sap.ui.define([
1551
1627
  detachSelectionChange: function(oTable, fnCallback) {
1552
1628
  oTable.detachSelectionChange(fnCallback);
1553
1629
  },
1630
+ attachBindingUpdate: function(oTable, oPlugin) {
1631
+ oTable.attachUpdateFinished(oPlugin, this._fnOnUpdateFinished);
1632
+ },
1633
+ detachBindingUpdate: function(oTable, oPlugin) {
1634
+ oTable.detachUpdateFinished(this._fnOnUpdateFinished);
1635
+ },
1636
+ _fnOnUpdateFinished: function(oEvent, oPlugin) {
1637
+ // ResponsiveTable does not rerender after sort/filter, so we need to clear the selection
1638
+ if (["Sort", "Filter"].includes(oEvent.getParameter("reason"))) {
1639
+ oPlugin.removeSelection();
1640
+ }
1641
+ },
1554
1642
  getBinding: function(oTable) {
1555
1643
  return oTable.getBinding("items");
1556
1644
  },
@@ -1573,7 +1661,24 @@ sap.ui.define([
1573
1661
 
1574
1662
  return [oCellRef];
1575
1663
  },
1576
- loadContexts: function (oBinding, iStartIndex, iLength) {
1664
+ onSelectionStart: function(oTable, oEvent) {
1665
+ if (oEvent.type.startsWith("mouse")) {
1666
+ // Remove focus and hover
1667
+ oTable.getItems().forEach(function(oItem) {
1668
+ oItem.setActive(false);
1669
+ oItem.getDomRef().classList.remove("sapMLIBHoverable");
1670
+ });
1671
+ }
1672
+ },
1673
+ onSelectionEnd: function(oTable, oEvent) {
1674
+ if (oEvent.type.startsWith("mouse")) {
1675
+ // Add focus and hover
1676
+ oTable.getItems().forEach(function(oItem) {
1677
+ if (oItem.isActionable()) {
1678
+ oItem.getDomRef().classList.add("sapMLIBHoverable");
1679
+ }
1680
+ });
1681
+ }
1577
1682
  }
1578
1683
  }
1579
1684
  }, CellSelector);