@openui5/sap.ui.table 1.140.0 → 1.141.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 (54) hide show
  1. package/THIRDPARTY.txt +2 -2
  2. package/package.json +3 -3
  3. package/src/sap/ui/table/.library +1 -1
  4. package/src/sap/ui/table/AnalyticalColumn.js +1 -1
  5. package/src/sap/ui/table/AnalyticalColumnMenu.js +1 -1
  6. package/src/sap/ui/table/AnalyticalTable.js +4 -2
  7. package/src/sap/ui/table/Column.js +1 -1
  8. package/src/sap/ui/table/ColumnMenu.js +1 -1
  9. package/src/sap/ui/table/CreationRow.js +1 -1
  10. package/src/sap/ui/table/Row.js +1 -1
  11. package/src/sap/ui/table/RowAction.js +1 -1
  12. package/src/sap/ui/table/RowActionItem.js +1 -1
  13. package/src/sap/ui/table/RowSettings.js +1 -1
  14. package/src/sap/ui/table/Table.js +2 -2
  15. package/src/sap/ui/table/TablePersoController.js +1 -1
  16. package/src/sap/ui/table/TreeTable.js +3 -1
  17. package/src/sap/ui/table/extensions/Accessibility.js +1 -1
  18. package/src/sap/ui/table/extensions/AccessibilityRender.js +1 -1
  19. package/src/sap/ui/table/extensions/DragAndDrop.js +1 -1
  20. package/src/sap/ui/table/extensions/ExtensionBase.js +1 -1
  21. package/src/sap/ui/table/extensions/Keyboard.js +1 -1
  22. package/src/sap/ui/table/extensions/KeyboardDelegate.js +1 -1
  23. package/src/sap/ui/table/extensions/Pointer.js +35 -12
  24. package/src/sap/ui/table/extensions/Scrolling.js +30 -21
  25. package/src/sap/ui/table/extensions/ScrollingIOS.js +15 -4
  26. package/src/sap/ui/table/extensions/Synchronization.js +1 -1
  27. package/src/sap/ui/table/library.js +10 -10
  28. package/src/sap/ui/table/menus/AnalyticalTableContextMenu.js +1 -1
  29. package/src/sap/ui/table/menus/ColumnHeaderMenuAdapter.js +1 -1
  30. package/src/sap/ui/table/menus/ContextMenu.js +1 -1
  31. package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +5 -8
  32. package/src/sap/ui/table/plugins/BindingSelection.js +1 -1
  33. package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +1 -1
  34. package/src/sap/ui/table/plugins/ODataV4Aggregation.js +4 -1
  35. package/src/sap/ui/table/plugins/ODataV4Hierarchy.js +4 -1
  36. package/src/sap/ui/table/plugins/ODataV4MultiLevel.js +1 -1
  37. package/src/sap/ui/table/plugins/ODataV4MultiSelection.js +1 -1
  38. package/src/sap/ui/table/plugins/ODataV4Selection.js +1 -1
  39. package/src/sap/ui/table/plugins/ODataV4SingleSelection.js +1 -1
  40. package/src/sap/ui/table/plugins/PluginBase.js +1 -1
  41. package/src/sap/ui/table/plugins/SelectionModelSelection.js +1 -1
  42. package/src/sap/ui/table/plugins/SelectionPlugin.js +1 -1
  43. package/src/sap/ui/table/rowmodes/Auto.js +1 -1
  44. package/src/sap/ui/table/rowmodes/Fixed.js +1 -1
  45. package/src/sap/ui/table/rowmodes/Interactive.js +1 -1
  46. package/src/sap/ui/table/rowmodes/RowMode.js +1 -1
  47. package/src/sap/ui/table/rowmodes/Variable.js +1 -1
  48. package/src/sap/ui/table/themes/base/DragDrop.less +8 -1
  49. package/src/sap/ui/table/themes/base/ScrollingIOS.less +1 -0
  50. package/src/sap/ui/table/utils/TableUtils.js +1 -1
  51. package/src/sap/ui/table/utils/_ColumnUtils.js +1 -1
  52. package/src/sap/ui/table/utils/_GroupingUtils.js +1 -1
  53. package/src/sap/ui/table/utils/_HookUtils.js +1 -1
  54. package/src/sap/ui/table/utils/_MenuUtils.js +1 -1
package/THIRDPARTY.txt CHANGED
@@ -379,7 +379,7 @@ License: MIT
379
379
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
380
380
  Contained in: src/sap.ui.integration/src/sap/ui/integration/thirdparty/adaptive-expressions.js
381
381
 
382
- Component: Markdown-it, version: 12.3.2
382
+ Component: Markdown-it, version: 14.1.0
383
383
  Copyright: 2014 Vitaly Puzrin, Alex Kocharin
384
384
  License: MIT
385
385
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
@@ -444,7 +444,7 @@ License: Apache-2.0
444
444
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
445
445
  Contained in: lib/jsdoc/ui5/plugin.js
446
446
 
447
- Component: SAP Theming Base Content, version: 11.31.1
447
+ Component: SAP Theming Base Content, version: 11.32.2-20250827135846+79bb30d311678435d61b21db26ecbe07d6b05079
448
448
  Copyright: SAP SE or an SAP affiliate company and Theming Base Content contributors
449
449
  License: Apache-2.0
450
450
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.table",
3
- "version": "1.140.0",
3
+ "version": "1.141.0",
4
4
  "description": "OpenUI5 UI Library sap.ui.table",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,7 +14,7 @@
14
14
  "url": "https://github.com/UI5/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.ui.core": "1.140.0",
18
- "@openui5/sap.ui.unified": "1.140.0"
17
+ "@openui5/sap.ui.core": "1.141.0",
18
+ "@openui5/sap.ui.unified": "1.141.0"
19
19
  }
20
20
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2025 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.140.0</version>
9
+ <version>1.141.0</version>
10
10
 
11
11
  <documentation>Table-like controls, mainly for desktop scenarios.</documentation>
12
12
 
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  * @extends sap.ui.table.Column
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.140.0
50
+ * @version 1.141.0
51
51
  *
52
52
  * @constructor
53
53
  * @public
@@ -20,7 +20,7 @@ sap.ui.define(['./ColumnMenu', "sap/ui/unified/MenuRenderer", './utils/TableUtil
20
20
  * @extends sap.ui.table.ColumnMenu
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.140.0
23
+ * @version 1.141.0
24
24
  *
25
25
  * @constructor
26
26
  * @public
@@ -45,12 +45,14 @@ sap.ui.define([
45
45
  * @param {object} [mSettings] initial settings for the new control
46
46
  *
47
47
  * @class
48
- * Table that handles analytical OData back-end scenarios. The <code>AnalyticalTable</code> only works with {@link sap.ui.model.analytics.AnalyticalBinding AnalyticalBinding} and
48
+ * Table that handles analytical OData V2 back-end scenarios. The <code>AnalyticalTable</code> only works with {@link sap.ui.model.analytics.AnalyticalBinding AnalyticalBinding} and
49
49
  * correctly annotated OData services. Please check out the functionality of analytical binding and the SAP Annotations for OData Version 2.0 documentation for further details.
50
+ * For an analytical-table-like behavior with OData V4 services, use the {@link sap.ui.table.Table Table} control with the {@link sap.ui.table.plugins.ODataV4Aggregation ODataV4Aggregation} plugin.
50
51
  * @see https://github.com/SAP/odata-vocabularies/blob/main/docs/v2-annotations.md
52
+ * @see {@link topic:148892ff9aea4a18b912829791e38f3e Tables: Which One Should I Choose?}
51
53
  *
52
54
  * @extends sap.ui.table.Table
53
- * @version 1.140.0
55
+ * @version 1.141.0
54
56
  *
55
57
  * @constructor
56
58
  * @public
@@ -63,7 +63,7 @@ sap.ui.define([
63
63
  * @class
64
64
  * The column allows you to define column specific properties that will be applied when rendering the table.
65
65
  * @extends sap.ui.core.Element
66
- * @version 1.140.0
66
+ * @version 1.141.0
67
67
  *
68
68
  * @constructor
69
69
  * @public
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @class
41
41
  * The column menu provides all common actions that can be performed on a column.
42
42
  * @extends sap.ui.unified.Menu
43
- * @version 1.140.0
43
+ * @version 1.141.0
44
44
  *
45
45
  * @constructor
46
46
  * @public
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * <code>sap.ui.commons</code> library.
33
33
  * @extends sap.ui.core.Control
34
34
  * @author SAP SE
35
- * @version 1.140.0
35
+ * @version 1.141.0
36
36
  *
37
37
  * @constructor
38
38
  * @private
@@ -135,7 +135,7 @@ sap.ui.define([
135
135
  * @class
136
136
  * The row.
137
137
  * @extends sap.ui.core.Element
138
- * @version 1.140.0
138
+ * @version 1.141.0
139
139
  *
140
140
  * @constructor
141
141
  * @public
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * If more action items are available as the available space allows to display an overflow mechanism is provided.
36
36
  * This control must only be used in the context of the <code>sap.ui.table.Table</code> control to define row actions.
37
37
  * @extends sap.ui.core.Control
38
- * @version 1.140.0
38
+ * @version 1.141.0
39
39
  *
40
40
  * @constructor
41
41
  * @public
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.core.Element
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.140.0
27
+ * @version 1.141.0
28
28
  * @since 1.45
29
29
  *
30
30
  * @constructor
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * The <code>RowSettings</code> control allows you to configure a row.
28
28
  * You can only use this control in the context of the <code>sap.ui.table.Table</code> control to define row settings.
29
29
  * @extends sap.ui.core.Element
30
- * @version 1.140.0
30
+ * @version 1.141.0
31
31
  *
32
32
  * @constructor
33
33
  * @public
@@ -106,7 +106,7 @@ sap.ui.define([
106
106
  * the data model and binding being used.
107
107
  * </p>
108
108
  * @extends sap.ui.core.Control
109
- * @version 1.140.0
109
+ * @version 1.141.0
110
110
  *
111
111
  * @constructor
112
112
  * @public
@@ -1150,7 +1150,7 @@ sap.ui.define([
1150
1150
  ExtensionBase.enrich(this, AccExtension); // Must be registered after keyboard to reach correct delegate order
1151
1151
  ExtensionBase.enrich(this, DragAndDropExtension);
1152
1152
 
1153
- if (Device.os.ios) {
1153
+ if (Device.os.ios /*iPhone*/ || (Device.os.macintosh && !Device.system.desktop) /*iPad*/) {
1154
1154
  sap.ui.require(["sap/ui/table/extensions/ScrollingIOS"], function(ScrollingIOSExtension) {
1155
1155
  if (!this.bIsDestroyed) {
1156
1156
  ExtensionBase.enrich(this, ScrollingIOSExtension);
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.base.ManagedObject
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.140.0
37
+ * @version 1.141.0
38
38
  * @since 1.21.1
39
39
  *
40
40
  * @constructor
@@ -35,8 +35,10 @@ sap.ui.define([
35
35
  *
36
36
  * @class
37
37
  * The TreeTable control provides a comprehensive set of features to display hierarchical data.
38
+ * The control can be used in combination with {@link sap.ui.model.json.JSONModel JSONModel} and {@link sap.ui.model.odata.v2.ODataModel ODataModel V2}.
39
+ * For a tree-table-like behavior with OData V4 services, use the {@link sap.ui.table.Table Table} control with the {@link sap.ui.table.plugins.ODataV4Hierarchy ODataV4Hierarchy} plugin.
38
40
  * @extends sap.ui.table.Table
39
- * @version 1.140.0
41
+ * @version 1.141.0
40
42
  *
41
43
  * @constructor
42
44
  * @public
@@ -1143,7 +1143,7 @@ sap.ui.define([
1143
1143
  * @class Extension for sap.ui.table.Table which handles ACC related things.
1144
1144
  * @extends sap.ui.table.extensions.ExtensionBase
1145
1145
  * @author SAP SE
1146
- * @version 1.140.0
1146
+ * @version 1.141.0
1147
1147
  * @constructor
1148
1148
  * @private
1149
1149
  * @alias sap.ui.table.extensions.Accessibility
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * @class Extension for sap.ui.table.TableRenderer which handles ACC related things.
45
45
  * @extends sap.ui.table.extensions.ExtensionBase
46
46
  * @author SAP SE
47
- * @version 1.140.0
47
+ * @version 1.141.0
48
48
  * @constructor
49
49
  * @private
50
50
  * @alias sap.ui.table.extensions.AccessibilityRender
@@ -274,7 +274,7 @@ sap.ui.define([
274
274
  *
275
275
  * @extends sap.ui.table.extensions.ExtensionBase
276
276
  * @author SAP SE
277
- * @version 1.140.0
277
+ * @version 1.141.0
278
278
  * @constructor
279
279
  * @private
280
280
  * @alias sap.ui.table.extensions.DragAndDrop
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  * @abstract
20
20
  * @extends sap.ui.base.Object
21
21
  * @author SAP SE
22
- * @version 1.140.0
22
+ * @version 1.141.0
23
23
  * @constructor
24
24
  * @private
25
25
  * @alias sap.ui.table.extensions.ExtensionBase
@@ -265,7 +265,7 @@ sap.ui.define([
265
265
  * @class Extension for sap.ui.table.Table which handles keyboard related things.
266
266
  * @extends sap.ui.table.extensions.ExtensionBase
267
267
  * @author SAP SE
268
- * @version 1.140.0
268
+ * @version 1.141.0
269
269
  * @constructor
270
270
  * @private
271
271
  * @alias sap.ui.table.extensions.Keyboard
@@ -64,7 +64,7 @@ sap.ui.define([
64
64
  *
65
65
  * @extends sap.ui.base.Object
66
66
  * @author SAP SE
67
- * @version 1.140.0
67
+ * @version 1.141.0
68
68
  * @constructor
69
69
  * @private
70
70
  * @alias sap.ui.table.extensions.KeyboardDelegate
@@ -189,19 +189,15 @@ sap.ui.define([
189
189
  for (let i = 0; i < this._aTableHeaders.length; i++) {
190
190
  const oTableHeaderRect = this._aTableHeaders[i].getBoundingClientRect();
191
191
  if (this._bRtlMode) {
192
- // 5px for resizer width
193
- if ((iPositionX < oTableHeaderRect.right - 5) && (iPositionX >= oTableHeaderRect.left)) {
192
+ if ((iPositionX < oTableHeaderRect.right - 5) && (iPositionX >= oTableHeaderRect.left)) { // 5px for resizer width
194
193
  iLastHoveredColumn = i;
195
194
  iResizerPositionX = oTableHeaderRect.left - iTableRect.left;
196
195
  break;
197
196
  }
198
- } else {
199
- // 5px for resizer width
200
- if ((iPositionX > oTableHeaderRect.left + 5) && (iPositionX <= oTableHeaderRect.right)) {
201
- iLastHoveredColumn = i;
202
- iResizerPositionX = oTableHeaderRect.right - iTableRect.left;
203
- break;
204
- }
197
+ } else if ((iPositionX > oTableHeaderRect.left + 5) && (iPositionX <= oTableHeaderRect.right)) { // 5px for resizer width
198
+ iLastHoveredColumn = i;
199
+ iResizerPositionX = oTableHeaderRect.right - iTableRect.left;
200
+ break;
205
201
  }
206
202
  }
207
203
 
@@ -223,6 +219,7 @@ sap.ui.define([
223
219
  * Initializes the drag&drop for reordering
224
220
  */
225
221
  initReordering: function(oTable, iColIndex, oEvent) {
222
+ oTable._getPointerExtension()._bReorderInProgress = true;
226
223
  const oColumn = oTable.getColumns()[iColIndex];
227
224
  const $Col = oColumn.$();
228
225
  const $Table = oTable.$();
@@ -337,6 +334,8 @@ sap.ui.define([
337
334
  * Ends the column reordering process via drag&drop.
338
335
  */
339
336
  exitReordering: function(oEvent) {
337
+ this._getPointerExtension()._bReorderInProgress = true;
338
+
340
339
  const iOldIndex = this._iDnDColIndex;
341
340
  const iNewIndex = this._iNewColPos;
342
341
 
@@ -656,6 +655,9 @@ sap.ui.define([
656
655
  oEvent.setMarked("sapUiTableHandledByPointerExtension");
657
656
  oEvent.preventDefault(); // To prevent opening the default browser context menu.
658
657
  delete oPointerExtension._bHideMenu;
658
+ } else if (oPointerExtension._bReorderInProgress) {
659
+ oEvent.setMarked("sapUiTableHandledByPointerExtension");
660
+ oEvent.preventDefault();
659
661
  }
660
662
  }
661
663
  };
@@ -668,7 +670,7 @@ sap.ui.define([
668
670
  * @class Extension for sap.ui.table.Table which handles mouse and touch related things.
669
671
  * @extends sap.ui.table.extensions.ExtensionBase
670
672
  * @author SAP SE
671
- * @version 1.140.0
673
+ * @version 1.141.0
672
674
  * @constructor
673
675
  * @private
674
676
  * @alias sap.ui.table.extensions.Pointer
@@ -699,8 +701,11 @@ sap.ui.define([
699
701
  _attachEvents: function() {
700
702
  const oTable = this.getTable();
701
703
  if (oTable) {
702
- // Initialize the basic event handling for column resizing.
703
- ColumnResizeHelper.initColumnTracking(oTable);
704
+ // Column resizing on touch devices is triggered via a button in the column menu.
705
+ if (Device.system.desktop) {
706
+ ColumnResizeHelper.initColumnTracking(oTable);
707
+ }
708
+
704
709
  RowHoverHandler.initRowHovering(oTable);
705
710
  }
706
711
  },
@@ -737,6 +742,24 @@ sap.ui.define([
737
742
  this._KNOWNCLICKABLECONTROLS = KNOWNCLICKABLECONTROLS;
738
743
  },
739
744
 
745
+ /**
746
+ * Shows the column resizer for the given column.
747
+ * @param {sap.ui.table.Column} oColumn The column for which the resizer should be shown.
748
+ */
749
+ showColumnResizer: function(oColumn) {
750
+ const oTable = oColumn._getTable();
751
+ const oDomRef = oTable.getDomRef("sapUiTableCnt");
752
+ const oTableRect = oDomRef.getBoundingClientRect();
753
+ const iColIndex = oColumn.getIndex();
754
+ const oColumnHeaderRect = oTable._aTableHeaders[iColIndex].getBoundingClientRect();
755
+ const iResizerPositionX = oTable._bRtlMode ? oColumnHeaderRect.left - oTableRect.left : oColumnHeaderRect.right - oTableRect.left;
756
+
757
+ oTable.$().toggleClass("sapUiTableResizing", true);
758
+ oTable._$colResize = oTable.$("rsz");
759
+ oTable._$colResize.toggleClass("sapUiTableColRszActive", true);
760
+ oTable._$colResize.css("left", iResizerPositionX + "px");
761
+ },
762
+
740
763
  /**
741
764
  * Initialize the basic event handling for column reordering and starts the reordering.
742
765
  *
@@ -725,12 +725,14 @@ sap.ui.define([
725
725
  };
726
726
 
727
727
  oTable._getKeyboardExtension().setActionMode(false);
728
+ const oScrollExtension = oTable._getScrollExtension();
728
729
 
729
- if (oTable._bLargeDataScrolling) {
730
+ // No large data scrolling on touch move
731
+ if (oTable._bLargeDataScrolling && !oScrollExtension._bTouchScroll) {
730
732
  _private(oTable).mTimeouts.largeDataScrolling = setTimeout(function() {
731
733
  delete _private(oTable).mTimeouts.largeDataScrolling;
732
734
 
733
- if (oTable._getScrollExtension().getVerticalScrollbar() != null) {
735
+ if (oScrollExtension.getVerticalScrollbar() != null) {
734
736
  log("VerticalScrollingHelper.performUpdateFromScrollbar (async: large data scrolling)", oTable);
735
737
  VerticalScrollingHelper._performUpdateFromScrollbar(oTable, oProcessInterface).then(resolve);
736
738
  } else {
@@ -746,6 +748,7 @@ sap.ui.define([
746
748
  }
747
749
  });
748
750
  } else {
751
+ delete oScrollExtension._bTouchScroll;
749
752
  VerticalScrollingHelper._performUpdateFromScrollbar(oTable, oProcessInterface).then(resolve);
750
753
  }
751
754
  });
@@ -1754,24 +1757,7 @@ sap.ui.define([
1754
1757
  return;
1755
1758
  }
1756
1759
 
1757
- const oHSb = oScrollExtension.getHorizontalScrollbar();
1758
- const mRowCounts = oTable._getRowCounts();
1759
-
1760
- let iOffsetBottom = 0;
1761
- if (oHSb && _private(oTable).bHorizontalScrollbarRequired && oScrollExtension.isHorizontalScrollbarVisible()) {
1762
- iOffsetBottom = oHSb.offsetHeight;
1763
- }
1764
- if (mRowCounts.fixedBottom > 0) {
1765
- iOffsetBottom += mRowCounts.fixedBottom * oTable._getBaseRowHeight();
1766
- }
1767
- const oCreationRow = oTable.getCreationRow();
1768
- if (oCreationRow) {
1769
- const oCreationRowDomRef = oCreationRow.getDomRef();
1770
- if (oCreationRowDomRef && oCreationRow.getVisible()) {
1771
- iOffsetBottom += oCreationRowDomRef.offsetHeight;
1772
- }
1773
- }
1774
- oVSb.style.bottom = iOffsetBottom + "px";
1760
+ oVSb.style.bottom = oScrollExtension.getVerticalScrollbarBottomOffset(oTable) + "px";
1775
1761
  },
1776
1762
 
1777
1763
  /**
@@ -2038,6 +2024,7 @@ sap.ui.define([
2038
2024
  if (!mTouchSessionData.initialScrolledToEnd) {
2039
2025
  oVSb.scrollTop = mTouchSessionData.initialScrollTop - iTouchDistanceY;
2040
2026
  bScrollingPerformed = true;
2027
+ oScrollExtension._bTouchScroll = true;
2041
2028
  }
2042
2029
  }
2043
2030
  break;
@@ -2327,7 +2314,7 @@ sap.ui.define([
2327
2314
  * @class Extension for sap.ui.table.Table which handles scrolling.
2328
2315
  * @extends sap.ui.table.extensions.ExtensionBase
2329
2316
  * @author SAP SE
2330
- * @version 1.140.0
2317
+ * @version 1.141.0
2331
2318
  * @constructor
2332
2319
  * @private
2333
2320
  * @alias sap.ui.table.extensions.Scrolling
@@ -2641,6 +2628,28 @@ sap.ui.define([
2641
2628
  oVSb._scrollTop = oVSb.scrollTop;
2642
2629
  };
2643
2630
 
2631
+ ScrollExtension.prototype.getVerticalScrollbarBottomOffset = function(oTable) {
2632
+ const oScrollExtension = oTable._getScrollExtension();
2633
+ const oHSb = oScrollExtension.getHorizontalScrollbar();
2634
+ const mRowCounts = oTable._getRowCounts();
2635
+
2636
+ let iOffsetBottom = 0;
2637
+ if (oHSb && _private(oTable).bHorizontalScrollbarRequired && oScrollExtension.isHorizontalScrollbarVisible()) {
2638
+ iOffsetBottom = oHSb.offsetHeight;
2639
+ }
2640
+ if (mRowCounts.fixedBottom > 0) {
2641
+ iOffsetBottom += mRowCounts.fixedBottom * oTable._getBaseRowHeight();
2642
+ }
2643
+ const oCreationRow = oTable.getCreationRow();
2644
+ if (oCreationRow) {
2645
+ const oCreationRowDomRef = oCreationRow.getDomRef();
2646
+ if (oCreationRowDomRef && oCreationRow.getVisible()) {
2647
+ iOffsetBottom += oCreationRowDomRef.offsetHeight;
2648
+ }
2649
+ }
2650
+ return iOffsetBottom;
2651
+ };
2652
+
2644
2653
  /**
2645
2654
  * Gets the vertical scroll height.
2646
2655
  *
@@ -17,6 +17,8 @@ sap.ui.define([
17
17
  }
18
18
  };
19
19
 
20
+ const MIN_THUMB_HEIGHT = 25; // For better usability on touch devices the minimum height of the scroll thumb is 25px.
21
+
20
22
  /**
21
23
  * Extension for sap.ui.table.Table which displays vertical scrollbar on iOS and provides event handlers for user interaction.
22
24
  * <b>This is an internal class that is only intended to be used inside the sap.ui.table library! Any usage outside the sap.ui.table library
@@ -27,7 +29,7 @@ sap.ui.define([
27
29
  * @class Extension for sap.ui.table.Table which handles the scrollbar on iOS.
28
30
  * @extends sap.ui.table.extensions.ExtensionBase
29
31
  * @author SAP SE
30
- * @version 1.140.0
32
+ * @version 1.141.0
31
33
  * @constructor
32
34
  * @private
33
35
  * @alias sap.ui.table.extensions.ScrollingIOS
@@ -173,12 +175,20 @@ sap.ui.define([
173
175
  const oVSbIOS = this.getVerticalScrollbar();
174
176
 
175
177
  oVSbIOS.style.height = oTable._getScrollExtension().getVerticalScrollbarHeight() + "px";
176
- oVSbIOS.style.top = Math.max(0, oTable._getRowCounts().fixedTop * oTable._getBaseRowHeight() - 1) + "px";
177
178
 
179
+ this.updateVerticalScrollbarPosition();
178
180
  this.updateVerticalScrollbarThumbPosition();
179
181
  this.updateVerticalScrollbarThumbHeight();
180
182
  };
181
183
 
184
+ ScrollIOSExtension.prototype.updateVerticalScrollbarPosition = function() {
185
+ const oTable = this.getTable();
186
+ const oScrollExtension = oTable._getScrollExtension();
187
+ const oVSbIOS = this.getVerticalScrollbar();
188
+
189
+ oVSbIOS.style.bottom = oScrollExtension.getVerticalScrollbarBottomOffset(oTable) + "px";
190
+ };
191
+
182
192
  /**
183
193
  * Updates the position of the vertical scroll thumb
184
194
  */
@@ -218,7 +228,7 @@ sap.ui.define([
218
228
  const iVerticalScrollbarHeight = oScrollExtension.getVerticalScrollbarHeight();
219
229
  const iVerticalScrollHeight = oScrollExtension.getVerticalScrollHeight();
220
230
 
221
- return Math.round(Math.pow(iVerticalScrollbarHeight, 2) / iVerticalScrollHeight);
231
+ return Math.max(MIN_THUMB_HEIGHT, Math.round(Math.pow(iVerticalScrollbarHeight, 2) / iVerticalScrollHeight));
222
232
  };
223
233
 
224
234
  /**
@@ -234,7 +244,8 @@ sap.ui.define([
234
244
  const oVSb = oScrollExtension.getVerticalScrollbar();
235
245
  const iVerticalScrollTop = oVSb ? oScrollExtension.getVerticalScrollbar().scrollTop : 0;
236
246
 
237
- return Math.round(iVerticalScrollTop * iVerticalScrollbarHeight / iVerticalScrollHeight);
247
+ const iThumbHeight = this.getCalculateThumbHeight();
248
+ return Math.round(iVerticalScrollTop * (iVerticalScrollbarHeight - iThumbHeight) / (iVerticalScrollHeight - iThumbHeight));
238
249
  };
239
250
 
240
251
  /**
@@ -185,7 +185,7 @@ sap.ui.define([
185
185
  * @class Extension for sap.ui.table.Table that allows synchronization with a table.
186
186
  * @extends sap.ui.table.extensions.ExtensionBase
187
187
  * @author SAP SE
188
- * @version 1.140.0
188
+ * @version 1.141.0
189
189
  * @constructor
190
190
  * @private
191
191
  * @alias sap.ui.table.extensions.Synchronization
@@ -40,14 +40,14 @@ sap.ui.define([
40
40
  * @namespace
41
41
  * @alias sap.ui.table
42
42
  * @author SAP SE
43
- * @version 1.140.0
43
+ * @version 1.141.0
44
44
  * @since 0.8
45
45
  * @public
46
46
  */
47
47
  const thisLib = Library.init({
48
48
  name: "sap.ui.table",
49
49
  apiVersion: 2,
50
- version: "1.140.0",
50
+ version: "1.141.0",
51
51
  dependencies: ["sap.ui.core", "sap.ui.unified"],
52
52
  ...{
53
53
  interactionDocumentation: true
@@ -114,7 +114,7 @@ sap.ui.define([
114
114
  /**
115
115
  * Navigation mode of the table
116
116
  *
117
- * @version 1.140.0
117
+ * @version 1.141.0
118
118
  * @enum {string}
119
119
  * @deprecated As of version 1.38, the concept has been discarded.
120
120
  * @public
@@ -145,7 +145,7 @@ sap.ui.define([
145
145
  /**
146
146
  * Row Action types.
147
147
  *
148
- * @version 1.140.0
148
+ * @version 1.141.0
149
149
  * @enum {string}
150
150
  * @public
151
151
  */
@@ -176,7 +176,7 @@ sap.ui.define([
176
176
  /**
177
177
  * Selection behavior of the table
178
178
  *
179
- * @version 1.140.0
179
+ * @version 1.141.0
180
180
  * @enum {string}
181
181
  * @public
182
182
  */
@@ -207,7 +207,7 @@ sap.ui.define([
207
207
  /**
208
208
  * Selection mode of the table
209
209
  *
210
- * @version 1.140.0
210
+ * @version 1.141.0
211
211
  * @enum {string}
212
212
  * @public
213
213
  */
@@ -245,7 +245,7 @@ sap.ui.define([
245
245
  /**
246
246
  * Sort order of a column
247
247
  *
248
- * @version 1.140.0
248
+ * @version 1.141.0
249
249
  * @enum {string}
250
250
  * @public
251
251
  * @deprecated As of version 1.120, replaced with <code>sap.ui.core.SortOrder</code>
@@ -272,7 +272,7 @@ sap.ui.define([
272
272
  /**
273
273
  * VisibleRowCountMode of the table
274
274
  *
275
- * @version 1.140.0
275
+ * @version 1.141.0
276
276
  * @enum {string}
277
277
  * @deprecated As of version 1.119, see the <code>rowMode</code> aggregation of <code>sap.ui.table.Table</code> for more details.
278
278
  * @public
@@ -317,7 +317,7 @@ sap.ui.define([
317
317
  *
318
318
  * Contains IDs of shared DOM references, which should be accessible to inheriting controls via getDomRef() function.
319
319
  *
320
- * @version 1.140.0
320
+ * @version 1.141.0
321
321
  * @enum {string}
322
322
  * @public
323
323
  */
@@ -418,7 +418,7 @@ sap.ui.define([
418
418
  *
419
419
  * This is an alias for {@link sap.ui.model.TreeAutoExpandMode} and kept for compatibility reasons.
420
420
  *
421
- * @version 1.140.0
421
+ * @version 1.141.0
422
422
  * @typedef {sap.ui.model.TreeAutoExpandMode}
423
423
  * @public
424
424
  * @deprecated As of version 1.120, replaced by <code>sap.ui.model.TreeAutoExpandMode</code>
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * @class
36
36
  * @extends sap.ui.table.menus.ContextMenu
37
37
  * @author SAP SE
38
- * @version 1.140.0
38
+ * @version 1.141.0
39
39
  * @private
40
40
  * @alias sap.ui.table.menus.AnalyticalTableContextMenu
41
41
  */
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  *
36
36
  * @extends sap.ui.base.Object
37
37
  * @author SAP SE
38
- * @version 1.140.0
38
+ * @version 1.141.0
39
39
  * @private
40
40
  * @alias sap.ui.table.menus.ColumnHeaderMenuAdapter
41
41
  */
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @class
24
24
  * @extends sap.ui.core.Element
25
25
  * @author SAP SE
26
- * @version 1.140.0
26
+ * @version 1.141.0
27
27
  * @private
28
28
  * @alias sap.ui.table.menus.ContextMenu
29
29
  */
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  *
58
58
  * @extends sap.ui.table.menus.ColumnHeaderMenuAdapter
59
59
  * @author SAP SE
60
- * @version 1.140.0
60
+ * @version 1.141.0
61
61
  * @private
62
62
  * @alias sap.ui.table.menus.MobileColumnHeaderMenuAdapter
63
63
  */
@@ -399,7 +399,7 @@ sap.ui.define([
399
399
  MobileColumnHeaderMenuAdapter.prototype._prepareQuickResize = function(oColumn) {
400
400
  if (!Device.system.desktop && oColumn.getResizable()) {
401
401
  if (!this._oQuickResize) {
402
- this._oQuickResize = this._createQuickResize(oColumn);
402
+ this._oQuickResize = this._createQuickResize();
403
403
  }
404
404
  this._oQuickResize.setVisible(true);
405
405
  } else if (this._oQuickResize) {
@@ -407,7 +407,7 @@ sap.ui.define([
407
407
  }
408
408
  };
409
409
 
410
- MobileColumnHeaderMenuAdapter.prototype._createQuickResize = function(oColumn) {
410
+ MobileColumnHeaderMenuAdapter.prototype._createQuickResize = function() {
411
411
  const oSapMResourceBundle = Library.getResourceBundleFor("sap.m");
412
412
  const sLabel = oSapMResourceBundle.getText("table.COLUMNMENU_RESIZE");
413
413
 
@@ -417,7 +417,7 @@ sap.ui.define([
417
417
  icon: "sap-icon://resize-horizontal",
418
418
  tooltip: sLabel,
419
419
  press: [function(oEvent) {
420
- this._startColumnResize(oColumn);
420
+ this._startColumnResize(this._oColumn);
421
421
  this._oMenu.close();
422
422
  }, this]
423
423
  })
@@ -425,10 +425,7 @@ sap.ui.define([
425
425
  };
426
426
 
427
427
  MobileColumnHeaderMenuAdapter.prototype._startColumnResize = function(oColumn) {
428
- const oTable = oColumn._getTable();
429
- oTable.$().toggleClass("sapUiTableResizing", true);
430
- oTable._$colResize = oTable.$("rsz");
431
- oTable._$colResize.toggleClass("sapUiTableColRszActive", true);
428
+ oColumn._getTable()._getPointerExtension().showColumnResizer(oColumn);
432
429
  };
433
430
 
434
431
  MobileColumnHeaderMenuAdapter.prototype._prepareQuickResizeInput = function(oColumn) {
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.table.plugins.SelectionPlugin
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.140.0
27
+ * @version 1.141.0
28
28
 
29
29
  * @private
30
30
  * @alias sap.ui.table.plugins.BindingSelection
@@ -56,7 +56,7 @@ sap.ui.define([
56
56
  * @extends sap.ui.table.plugins.SelectionPlugin
57
57
  *
58
58
  * @author SAP SE
59
- * @version 1.140.0
59
+ * @version 1.141.0
60
60
  *
61
61
  * @public
62
62
  * @since 1.64
@@ -21,10 +21,13 @@ sap.ui.define([
21
21
  *
22
22
  * For details about data aggregation, see {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation}.
23
23
  *
24
+ * In combination with the {@link sap.ui.table.Table Table} control, this plugin offers a UI for OData V4 that is similar to the one
25
+ * the {@link sap.ui.table.AnalyticalTable AnalyticalTable} offers for OData V2.
26
+ *
24
27
  * @extends sap.ui.core.Element
25
28
  *
26
29
  * @author SAP SE
27
- * @version 1.140.0
30
+ * @version 1.141.0
28
31
  *
29
32
  * @public
30
33
  * @since 1.140
@@ -21,10 +21,13 @@ sap.ui.define([
21
21
  *
22
22
  * For details about hierarchies, see {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation}.
23
23
  *
24
+ * In combination with the {@link sap.ui.table.Table Table} control, this plugin offers a UI for OData V4 that is similar to the one
25
+ * the {@link sap.ui.table.TreeTable TreeTable} offers for other models.
26
+ *
24
27
  * @extends sap.ui.core.Element
25
28
  *
26
29
  * @author SAP SE
27
- * @version 1.140.0
30
+ * @version 1.141.0
28
31
  *
29
32
  * @public
30
33
  * @since 1.140
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @extends sap.ui.table.plugins.PluginBase
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.140.0
24
+ * @version 1.141.0
25
25
  *
26
26
  * @private
27
27
  * @alias sap.ui.table.plugins.ODataV4MultiLevel
@@ -41,7 +41,7 @@ sap.ui.define([
41
41
  * @extends sap.ui.table.plugins.SelectionPlugin
42
42
  *
43
43
  * @author SAP SE
44
- * @version 1.140.0
44
+ * @version 1.141.0
45
45
  *
46
46
  * @public
47
47
  * @since 1.140
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * @extends sap.ui.table.plugins.SelectionPlugin
36
36
  *
37
37
  * @author SAP SE
38
- * @version 1.140.0
38
+ * @version 1.141.0
39
39
  *
40
40
  * @private
41
41
  * @alias sap.ui.table.plugins.ODataV4Selection
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @extends sap.ui.table.plugins.SelectionPlugin
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.140.0
39
+ * @version 1.141.0
40
40
  *
41
41
  * @public
42
42
  * @since 1.140
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  * @extends sap.ui.core.Element
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.140.0
22
+ * @version 1.141.0
23
23
  *
24
24
  * @private
25
25
  * @experimental Since 1.75
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.table.plugins.SelectionPlugin
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.140.0
29
+ * @version 1.141.0
30
30
  *
31
31
  * @private
32
32
  * @alias sap.ui.table.plugins.SelectionModelSelection
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @extends sap.ui.core.Element
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.140.0
24
+ * @version 1.141.0
25
25
  *
26
26
  * @public
27
27
  * @since 1.64
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @public
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.140.0
41
+ * @version 1.141.0
42
42
  */
43
43
  const AutoRowMode = RowMode.extend("sap.ui.table.rowmodes.Auto", /** @lends sap.ui.table.rowmodes.Auto.prototype */ {
44
44
  metadata: {
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @public
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.140.0
30
+ * @version 1.141.0
31
31
  */
32
32
  const FixedRowMode = RowMode.extend("sap.ui.table.rowmodes.Fixed", /** @lends sap.ui.table.rowmodes.Fixed.prototype */ {
33
33
  metadata: {
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @public
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.140.0
43
+ * @version 1.141.0
44
44
  */
45
45
  const InteractiveRowMode = RowMode.extend("sap.ui.table.rowmodes.Interactive", /** @lends sap.ui.table.rowmodes.Interactive.prototype */ {
46
46
  metadata: {
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @public
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.140.0
40
+ * @version 1.141.0
41
41
  */
42
42
  const RowMode = Element.extend("sap.ui.table.rowmodes.RowMode", /** @lends sap.ui.table.rowmodes.RowMode.prototype */ {
43
43
  metadata: {
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.table.rowmodes.RowMode
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.140.0
26
+ * @version 1.141.0
27
27
  *
28
28
  * @constructor
29
29
  * @private
@@ -141,6 +141,8 @@ html[data-sap-ui-animation^='on'] .sapUiTableColReorderIndicator {
141
141
 
142
142
  .sapUiTableColRsz.sapUiTableColRszActive {
143
143
  z-index: 5; /* Ensure be above Row Action Area */
144
+ padding: 0 12px; /* Increase clickable area (width) to 24px */
145
+ margin: 0 -12px;
144
146
  }
145
147
 
146
148
  html[dir=rtl] .sapUiTableColRsz {
@@ -156,7 +158,12 @@ html.sap-desktop .sapUiTableColRsz:hover {
156
158
 
157
159
  .sapUiTableColRszActive,
158
160
  html.sap-desktop .sapUiTableColRsz.sapUiTableColRszActive:hover {
159
- background-color: @_sap_ui_table_DragDrop_ColumnDnDHighlightColor;
161
+ background: linear-gradient(
162
+ to left,
163
+ transparent 0% 40%,
164
+ @_sap_ui_table_DragDrop_ColumnDnDHighlightColor 40% 60%,
165
+ transparent 60%
166
+ );
160
167
  opacity: 1;
161
168
  }
162
169
 
@@ -6,6 +6,7 @@
6
6
  .sapUiTableVSbIOS {
7
7
  position: absolute;
8
8
  width: 100%;
9
+ bottom: 0;
9
10
  z-index: 5;
10
11
 
11
12
  .sapUiTableVSbIOSThumb {
@@ -208,7 +208,7 @@ sap.ui.define([
208
208
  * Static collection of utility functions related to the sap.ui.table.Table, ...
209
209
  *
210
210
  * @author SAP SE
211
- * @version 1.140.0
211
+ * @version 1.141.0
212
212
  * @namespace
213
213
  * @alias sap.ui.table.utils.TableUtils
214
214
  * @private
@@ -18,7 +18,7 @@ sap.ui.define([
18
18
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Column...</code>
19
19
  *
20
20
  * @author SAP SE
21
- * @version 1.140.0
21
+ * @version 1.141.0
22
22
  * @namespace
23
23
  * @alias sap.ui.table.utils._ColumnUtils
24
24
  * @private
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Grouping...</code>
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.140.0
27
+ * @version 1.141.0
28
28
  * @namespace
29
29
  * @alias sap.ui.table.utils._GroupingUtils
30
30
  * @private
@@ -21,7 +21,7 @@ sap.ui.define(["sap/ui/base/DataType", "sap/ui/model/ChangeReason"], function(Da
21
21
  * - There is no concept for public or protected hooks. Never expose a hook directly, only indirectly as can be seen in the examples.
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.140.0
24
+ * @version 1.141.0
25
25
  * @namespace
26
26
  * @alias sap.ui.table.utils._HookUtils
27
27
  *
@@ -14,7 +14,7 @@ sap.ui.define([], function() {
14
14
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Menu...</code>
15
15
  *
16
16
  * @author SAP SE
17
- * @version 1.140.0
17
+ * @version 1.141.0
18
18
  * @namespace
19
19
  * @alias sap.ui.table.utils._MenuUtils
20
20
  * @private