@openui5/sap.ui.table 1.139.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 (154) 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 +4 -14
  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 +17 -9
  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/i18n/interaction_ar.xml +1 -1
  28. package/src/sap/ui/table/i18n/interaction_bg.xml +1 -1
  29. package/src/sap/ui/table/i18n/interaction_ca.xml +1 -1
  30. package/src/sap/ui/table/i18n/interaction_cnr.xml +1 -1
  31. package/src/sap/ui/table/i18n/interaction_cs.xml +1 -1
  32. package/src/sap/ui/table/i18n/interaction_cy.xml +1 -1
  33. package/src/sap/ui/table/i18n/interaction_da.xml +1 -1
  34. package/src/sap/ui/table/i18n/interaction_de.xml +2 -2
  35. package/src/sap/ui/table/i18n/interaction_el.xml +1 -1
  36. package/src/sap/ui/table/i18n/interaction_en.xml +1 -1
  37. package/src/sap/ui/table/i18n/interaction_en_GB.xml +1 -1
  38. package/src/sap/ui/table/i18n/interaction_en_US_saprigi.xml +1 -1
  39. package/src/sap/ui/table/i18n/interaction_es.xml +1 -1
  40. package/src/sap/ui/table/i18n/interaction_es_MX.xml +1 -1
  41. package/src/sap/ui/table/i18n/interaction_et.xml +1 -1
  42. package/src/sap/ui/table/i18n/interaction_fi.xml +1 -1
  43. package/src/sap/ui/table/i18n/interaction_fr.xml +1 -1
  44. package/src/sap/ui/table/i18n/interaction_fr_CA.xml +1 -1
  45. package/src/sap/ui/table/i18n/interaction_hi.xml +1 -1
  46. package/src/sap/ui/table/i18n/interaction_hr.xml +1 -1
  47. package/src/sap/ui/table/i18n/interaction_hu.xml +1 -1
  48. package/src/sap/ui/table/i18n/interaction_id.xml +1 -1
  49. package/src/sap/ui/table/i18n/interaction_it.xml +1 -1
  50. package/src/sap/ui/table/i18n/interaction_iw.xml +1 -1
  51. package/src/sap/ui/table/i18n/interaction_ja.xml +1 -1
  52. package/src/sap/ui/table/i18n/interaction_kk.xml +1 -1
  53. package/src/sap/ui/table/i18n/interaction_ko.xml +1 -1
  54. package/src/sap/ui/table/i18n/interaction_lt.xml +1 -1
  55. package/src/sap/ui/table/i18n/interaction_lv.xml +1 -1
  56. package/src/sap/ui/table/i18n/interaction_mk.xml +1 -1
  57. package/src/sap/ui/table/i18n/interaction_ms.xml +1 -1
  58. package/src/sap/ui/table/i18n/interaction_nl.xml +1 -1
  59. package/src/sap/ui/table/i18n/interaction_no.xml +1 -1
  60. package/src/sap/ui/table/i18n/interaction_pl.xml +1 -1
  61. package/src/sap/ui/table/i18n/interaction_pt.xml +1 -1
  62. package/src/sap/ui/table/i18n/interaction_pt_PT.xml +1 -1
  63. package/src/sap/ui/table/i18n/interaction_ro.xml +1 -1
  64. package/src/sap/ui/table/i18n/interaction_ru.xml +1 -1
  65. package/src/sap/ui/table/i18n/interaction_sh.xml +1 -1
  66. package/src/sap/ui/table/i18n/interaction_sk.xml +1 -1
  67. package/src/sap/ui/table/i18n/interaction_sl.xml +1 -1
  68. package/src/sap/ui/table/i18n/interaction_sr.xml +1 -1
  69. package/src/sap/ui/table/i18n/interaction_sv.xml +1 -1
  70. package/src/sap/ui/table/i18n/interaction_th.xml +1 -1
  71. package/src/sap/ui/table/i18n/interaction_tr.xml +1 -1
  72. package/src/sap/ui/table/i18n/interaction_uk.xml +1 -1
  73. package/src/sap/ui/table/i18n/interaction_vi.xml +1 -1
  74. package/src/sap/ui/table/i18n/interaction_zh_CN.xml +1 -1
  75. package/src/sap/ui/table/i18n/interaction_zh_TW.xml +1 -1
  76. package/src/sap/ui/table/library.js +27 -11
  77. package/src/sap/ui/table/menus/AnalyticalTableContextMenu.js +1 -1
  78. package/src/sap/ui/table/menus/ColumnHeaderMenuAdapter.js +1 -1
  79. package/src/sap/ui/table/menus/ContextMenu.js +1 -1
  80. package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +6 -9
  81. package/src/sap/ui/table/messagebundle.properties +7 -0
  82. package/src/sap/ui/table/messagebundle_ar.properties +5 -0
  83. package/src/sap/ui/table/messagebundle_bg.properties +5 -0
  84. package/src/sap/ui/table/messagebundle_ca.properties +5 -0
  85. package/src/sap/ui/table/messagebundle_cnr.properties +5 -0
  86. package/src/sap/ui/table/messagebundle_cs.properties +7 -2
  87. package/src/sap/ui/table/messagebundle_cy.properties +5 -0
  88. package/src/sap/ui/table/messagebundle_da.properties +5 -0
  89. package/src/sap/ui/table/messagebundle_de.properties +11 -6
  90. package/src/sap/ui/table/messagebundle_el.properties +5 -0
  91. package/src/sap/ui/table/messagebundle_en.properties +5 -0
  92. package/src/sap/ui/table/messagebundle_en_GB.properties +5 -0
  93. package/src/sap/ui/table/messagebundle_en_US_saprigi.properties +5 -0
  94. package/src/sap/ui/table/messagebundle_es.properties +6 -1
  95. package/src/sap/ui/table/messagebundle_es_MX.properties +5 -0
  96. package/src/sap/ui/table/messagebundle_et.properties +5 -0
  97. package/src/sap/ui/table/messagebundle_fi.properties +6 -1
  98. package/src/sap/ui/table/messagebundle_fr.properties +7 -2
  99. package/src/sap/ui/table/messagebundle_fr_CA.properties +7 -2
  100. package/src/sap/ui/table/messagebundle_hi.properties +5 -0
  101. package/src/sap/ui/table/messagebundle_hr.properties +5 -0
  102. package/src/sap/ui/table/messagebundle_hu.properties +5 -0
  103. package/src/sap/ui/table/messagebundle_id.properties +5 -0
  104. package/src/sap/ui/table/messagebundle_it.properties +5 -0
  105. package/src/sap/ui/table/messagebundle_iw.properties +5 -0
  106. package/src/sap/ui/table/messagebundle_ja.properties +6 -1
  107. package/src/sap/ui/table/messagebundle_kk.properties +5 -0
  108. package/src/sap/ui/table/messagebundle_ko.properties +5 -0
  109. package/src/sap/ui/table/messagebundle_lt.properties +5 -0
  110. package/src/sap/ui/table/messagebundle_lv.properties +7 -2
  111. package/src/sap/ui/table/messagebundle_mk.properties +7 -2
  112. package/src/sap/ui/table/messagebundle_ms.properties +7 -2
  113. package/src/sap/ui/table/messagebundle_nl.properties +6 -1
  114. package/src/sap/ui/table/messagebundle_no.properties +5 -0
  115. package/src/sap/ui/table/messagebundle_pl.properties +5 -0
  116. package/src/sap/ui/table/messagebundle_pt.properties +5 -0
  117. package/src/sap/ui/table/messagebundle_pt_PT.properties +6 -1
  118. package/src/sap/ui/table/messagebundle_ro.properties +7 -2
  119. package/src/sap/ui/table/messagebundle_ru.properties +9 -4
  120. package/src/sap/ui/table/messagebundle_sh.properties +5 -0
  121. package/src/sap/ui/table/messagebundle_sk.properties +5 -0
  122. package/src/sap/ui/table/messagebundle_sl.properties +5 -0
  123. package/src/sap/ui/table/messagebundle_sr.properties +5 -0
  124. package/src/sap/ui/table/messagebundle_sv.properties +5 -0
  125. package/src/sap/ui/table/messagebundle_th.properties +5 -0
  126. package/src/sap/ui/table/messagebundle_tr.properties +5 -0
  127. package/src/sap/ui/table/messagebundle_uk.properties +5 -0
  128. package/src/sap/ui/table/messagebundle_vi.properties +5 -0
  129. package/src/sap/ui/table/messagebundle_zh_CN.properties +5 -0
  130. package/src/sap/ui/table/messagebundle_zh_TW.properties +7 -2
  131. package/src/sap/ui/table/plugins/BindingSelection.js +1 -1
  132. package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +6 -2
  133. package/src/sap/ui/table/plugins/{V4Aggregation.js → ODataV4Aggregation.js} +54 -70
  134. package/src/sap/ui/table/plugins/ODataV4Hierarchy.js +94 -0
  135. package/src/sap/ui/table/plugins/ODataV4MultiLevel.js +100 -0
  136. package/src/sap/ui/table/plugins/ODataV4MultiSelection.js +489 -0
  137. package/src/sap/ui/table/plugins/ODataV4Selection.js +51 -412
  138. package/src/sap/ui/table/plugins/ODataV4SingleSelection.js +120 -0
  139. package/src/sap/ui/table/plugins/PluginBase.js +1 -1
  140. package/src/sap/ui/table/plugins/SelectionModelSelection.js +1 -1
  141. package/src/sap/ui/table/plugins/SelectionPlugin.js +18 -16
  142. package/src/sap/ui/table/rowmodes/Auto.js +1 -1
  143. package/src/sap/ui/table/rowmodes/Fixed.js +1 -1
  144. package/src/sap/ui/table/rowmodes/Interactive.js +1 -1
  145. package/src/sap/ui/table/rowmodes/RowMode.js +1 -1
  146. package/src/sap/ui/table/rowmodes/Variable.js +1 -1
  147. package/src/sap/ui/table/themes/base/DragDrop.less +8 -1
  148. package/src/sap/ui/table/themes/base/ScrollingIOS.less +1 -0
  149. package/src/sap/ui/table/utils/TableUtils.js +1 -1
  150. package/src/sap/ui/table/utils/_ColumnUtils.js +1 -1
  151. package/src/sap/ui/table/utils/_GroupingUtils.js +1 -1
  152. package/src/sap/ui/table/utils/_HookUtils.js +1 -1
  153. package/src/sap/ui/table/utils/_MenuUtils.js +1 -1
  154. package/src/sap/ui/table/plugins/SelectionMode.js +0 -35
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.30.0
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.139.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.139.0",
18
- "@openui5/sap.ui.unified": "1.139.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.139.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.139.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.139.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.139.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.139.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.139.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.139.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.139.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.139.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.139.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.139.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.139.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);
@@ -1826,21 +1826,11 @@ sap.ui.define([
1826
1826
  };
1827
1827
 
1828
1828
  Table.prototype.setFirstVisibleRow = function(iRowIndex) {
1829
- if (iRowIndex == null) {
1830
- iRowIndex = 0;
1831
- } else if (iRowIndex < 0) {
1829
+ if (iRowIndex < 0) {
1832
1830
  Log.error("The index of the first visible row must be greater than or equal to 0. The value has been set to 0.", this);
1833
- iRowIndex = 0;
1834
- } else if (this._bContextsAvailable) {
1835
- const iMaxRowIndex = this._getMaxFirstVisibleRowIndex();
1836
-
1837
- if (iMaxRowIndex < iRowIndex) {
1838
- Log.warning("The index of the first visible row is too high. The value has been set to " + iMaxRowIndex + ".", this);
1839
- iRowIndex = iMaxRowIndex;
1840
- }
1841
1831
  }
1842
1832
 
1843
- this._setFirstVisibleRowIndex(iRowIndex);
1833
+ this._setFirstVisibleRowIndex(this.validateProperty("firstVisibleRow", iRowIndex));
1844
1834
 
1845
1835
  return this;
1846
1836
  };
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.base.ManagedObject
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.139.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.139.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.139.0
1146
+ * @version 1.141.0
1147
1147
  * @constructor
1148
1148
  * @private
1149
1149
  * @alias sap.ui.table.extensions.Accessibility
@@ -1497,19 +1497,27 @@ sap.ui.define([
1497
1497
  */
1498
1498
  AccExtension.prototype.getKeyboardTexts = function() {
1499
1499
  const sSelectionMode = this.getTable().getSelectionMode();
1500
- const mTexts = {
1501
- rowSelect: "",
1502
- rowDeselect: ""
1503
- };
1504
1500
 
1505
1501
  if (sSelectionMode === SelectionMode.None) {
1506
- return mTexts;
1502
+ return {
1503
+ rowSelect: "",
1504
+ rowDeselect: ""
1505
+ };
1507
1506
  }
1508
1507
 
1509
- mTexts.rowSelect = TableUtils.getResourceText("TBL_ROW_SELECT_KEY");
1510
- mTexts.rowDeselect = TableUtils.getResourceText("TBL_ROW_DESELECT_KEY");
1508
+ return this.getSelectionTexts();
1509
+ };
1511
1510
 
1512
- return mTexts;
1511
+ /**
1512
+ * Retrieve the resource texts for row selection.
1513
+ *
1514
+ * @returns {{rowSelect: string, rowDeselect: string}} The resource texts for row selection.
1515
+ */
1516
+ AccExtension.prototype.getSelectionTexts = function() {
1517
+ return {
1518
+ rowSelect: TableUtils.getResourceText("TBL_ROW_SELECT_KEY"),
1519
+ rowDeselect: TableUtils.getResourceText("TBL_ROW_DESELECT_KEY")
1520
+ };
1513
1521
  };
1514
1522
 
1515
1523
  /**
@@ -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.139.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.139.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.139.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.139.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.139.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.139.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.139.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.139.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.139.0
188
+ * @version 1.141.0
189
189
  * @constructor
190
190
  * @private
191
191
  * @alias sap.ui.table.extensions.Synchronization
@@ -174,7 +174,7 @@
174
174
  <p>إذا كان التركيز على مقدمة العمود، فسيتم فتح قائمة مقدمة العمود.</p>
175
175
  </description>
176
176
  </interaction>
177
- <interaction> <kbd>Shift + mouse click</kbd> <description>
177
+ <interaction> <kbd>Shift + MouseClick</kbd> <description>
178
178
  <p><span class="emphasis">إذا تم تمكين تحديد الخلية:</span></p>
179
179
  <p>في حالة تحديد الخلايا، يقوم <kbd>Shift + MouseClick</kbd> في خلية مختلفة بتحسين التحديد حتى الخلية التي تم النقر فوقها.</p>
180
180
  </description>
@@ -174,7 +174,7 @@
174
174
  <p>Ако фокусът е върху заглавката на колоната, менюто в заглавката се отваря.</p>
175
175
  </description>
176
176
  </interaction>
177
- <interaction> <kbd>Shift + mouse click</kbd> <description>
177
+ <interaction> <kbd>Shift + MouseClick</kbd> <description>
178
178
  <p><span class="emphasis">Ако изборът на клетка е активиран:</span></p>
179
179
  <p>Ако са избрани клетки, <kbd>Shift + MouseClick</kbd> върху друга клетка разширява избора до кликнатата клетка.</p>
180
180
  </description>
@@ -174,7 +174,7 @@
174
174
  <p>Si el focus és a la capçalera de columna, s'obre el menú de la capçalera de columna.</p>
175
175
  </description>
176
176
  </interaction>
177
- <interaction> <kbd>Shift + mouse click</kbd> <description>
177
+ <interaction> <kbd>Shift + MouseClick</kbd> <description>
178
178
  <p><span class="emphasis">Si la selecció de cel·les està activada:</span></p>
179
179
  <p>Si hi ha cel·les seleccionades, en prémer <kbd>Shift + MouseClick</kbd> en una altra cel·la, s'amplia la selecció fins a la cel·la en què s'ha fet clic.</p>
180
180
  </description>
@@ -174,7 +174,7 @@
174
174
  <p>Ako je fokus na zaglavlju kolone, otvara se meni zaglavlja kolone.</p>
175
175
  </description>
176
176
  </interaction>
177
- <interaction> <kbd>Shift + mouse click</kbd> <description>
177
+ <interaction> <kbd>Shift + MouseClick</kbd> <description>
178
178
  <p><span class="emphasis">Ako je odabir ćelije aktiviran:</span></p>
179
179
  <p>Ako su ćelije odabrane, <kbd>Shift + MouseClick</kbd> na drugoj ćeliji proširuje odabir do ćelije na koju je kliknuto.</p>
180
180
  </description>
@@ -174,7 +174,7 @@
174
174
  <p>Je-li fokus na hlavičce sloupce, otevře se menu hlavičky sloupce.</p>
175
175
  </description>
176
176
  </interaction>
177
- <interaction> <kbd>Shift + mouse click</kbd> <description>
177
+ <interaction> <kbd>Shift + MouseClick</kbd> <description>
178
178
  <p><span class="emphasis">Když je aktivován výběr buňky:</span></p>
179
179
  <p>Jsou-li buňky vybrány, <kbd>Shift + MouseClick</kbd> na jinou buňku rozšíří výběr až po buňku, na niž se klikne.</p>
180
180
  </description>
@@ -174,7 +174,7 @@
174
174
  <p>Os yw'r ffocws ar bennawd colofn, bydd dewislen pennawd y golofn yn agor.</p>
175
175
  </description>
176
176
  </interaction>
177
- <interaction> <kbd>Shift + mouse click</kbd> <description>
177
+ <interaction> <kbd>Shift + MouseClick</kbd> <description>
178
178
  <p><span class="emphasis">Os yw dewis cell wedi'i alluogi:</span></p>
179
179
  <p>Os caiff celloedd eu dewis, bydd <kbd>Shift + MouseClick</kbd> ar gell wahanol yn ymestyn y dewis hyd at y gell y cliciwyd arni.</p>
180
180
  </description>
@@ -174,7 +174,7 @@
174
174
  <p>Hvis fokus er på kolonneoverskriften, åbnes kolonneoverskriftsmenuen.</p>
175
175
  </description>
176
176
  </interaction>
177
- <interaction> <kbd>Shift + mouse click</kbd> <description>
177
+ <interaction> <kbd>Shift + MouseClick</kbd> <description>
178
178
  <p><span class="emphasis">Hvis cellevalg er aktiveret:</span></p>
179
179
  <p>Hvis celler er valgt, udvider <kbd>Shift + MouseClick</kbd> på en anden celle valget op til den klikkede celle.</p>
180
180
  </description>