@openui5/sap.ui.table 1.92.0 → 1.93.3

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 (49) hide show
  1. package/.reuse/dep5 +5 -0
  2. package/THIRDPARTY.txt +10 -1
  3. package/package.json +3 -3
  4. package/src/sap/ui/table/.library +1 -1
  5. package/src/sap/ui/table/AnalyticalColumn.js +2 -2
  6. package/src/sap/ui/table/AnalyticalColumnMenu.js +1 -1
  7. package/src/sap/ui/table/AnalyticalTable.js +2 -1
  8. package/src/sap/ui/table/Column.js +2 -2
  9. package/src/sap/ui/table/ColumnMenu.js +1 -1
  10. package/src/sap/ui/table/CreationRow.js +1 -1
  11. package/src/sap/ui/table/Row.js +1 -1
  12. package/src/sap/ui/table/RowAction.js +1 -1
  13. package/src/sap/ui/table/RowActionItem.js +1 -1
  14. package/src/sap/ui/table/RowSettings.js +1 -1
  15. package/src/sap/ui/table/Table.js +4 -6
  16. package/src/sap/ui/table/TablePersoController.js +1 -1
  17. package/src/sap/ui/table/TreeTable.js +1 -1
  18. package/src/sap/ui/table/extensions/Accessibility.js +31 -6
  19. package/src/sap/ui/table/extensions/AccessibilityRender.js +1 -1
  20. package/src/sap/ui/table/extensions/DragAndDrop.js +1 -1
  21. package/src/sap/ui/table/extensions/ExtensionBase.js +1 -1
  22. package/src/sap/ui/table/extensions/Keyboard.js +1 -1
  23. package/src/sap/ui/table/extensions/KeyboardDelegate.js +28 -13
  24. package/src/sap/ui/table/extensions/Pointer.js +1 -1
  25. package/src/sap/ui/table/extensions/Scrolling.js +7 -8
  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/messagebundle_de.properties +1 -1
  29. package/src/sap/ui/table/plugins/BindingSelection.js +1 -1
  30. package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +2 -2
  31. package/src/sap/ui/table/plugins/PluginBase.js +2 -2
  32. package/src/sap/ui/table/plugins/SelectionModelSelection.js +26 -4
  33. package/src/sap/ui/table/plugins/SelectionPlugin.js +1 -1
  34. package/src/sap/ui/table/plugins/V4Aggregation.js +1 -1
  35. package/src/sap/ui/table/rowmodes/AutoRowMode.js +1 -1
  36. package/src/sap/ui/table/rowmodes/FixedRowMode.js +1 -1
  37. package/src/sap/ui/table/rowmodes/InteractiveRowMode.js +1 -1
  38. package/src/sap/ui/table/rowmodes/RowMode.js +1 -1
  39. package/src/sap/ui/table/rowmodes/VariableRowMode.js +1 -1
  40. package/src/sap/ui/table/themes/base/Cell.less +14 -14
  41. package/src/sap/ui/table/themes/base/Grouping.less +18 -3
  42. package/src/sap/ui/table/themes/base/Table.less +1 -1
  43. package/src/sap/ui/table/themes/base/library.source.less +3 -2
  44. package/src/sap/ui/table/utils/TableUtils.js +4 -4
  45. package/src/sap/ui/table/utils/_BindingUtils.js +1 -1
  46. package/src/sap/ui/table/utils/_ColumnUtils.js +1 -1
  47. package/src/sap/ui/table/utils/_GroupingUtils.js +3 -1
  48. package/src/sap/ui/table/utils/_HookUtils.js +4 -1
  49. package/src/sap/ui/table/utils/_MenuUtils.js +1 -1
package/.reuse/dep5 CHANGED
@@ -464,3 +464,8 @@ Copyright:
464
464
  License: Apache-2.0
465
465
  Comment: these files contain content from SAP and JSDoc 3: plugin.js is overall written by SAP, but contains code taken from JSDoc 3.6.7 (see the respective comments)
466
466
 
467
+ Files: src/sap.ui.core/src/sap/ui/core/themes/base/base.less src/themelib_sap_belize/src/sap/ui/core/themes/*/base.less src/themelib_sap_fiori_3/src/sap/ui/core/themes/*/base.less src/themelib_sap_horizon/src/sap/ui/core/themes/*/base.less
468
+ Copyright: SAP SE or an SAP affiliate company and Theming Base Content contributors
469
+ License: Apache-2.0
470
+ Comment: these files belong to: SAP Theming Base Content
471
+
package/THIRDPARTY.txt CHANGED
@@ -197,7 +197,7 @@ License: BSD-3-Clause
197
197
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/BSD-3-Clause.txt
198
198
  Contained in: src/sap.ui.core/src/sap/ui/thirdparty/sinon-qunit.js
199
199
 
200
- Component: URI.js, version: 1.19.6
200
+ Component: URI.js, version: 1.19.7
201
201
  Copyright: Rodney Rehm
202
202
  License: MIT
203
203
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/MIT.txt
@@ -462,6 +462,15 @@ License: Apache-2.0
462
462
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
463
463
  Contained in: lib/jsdoc/ui5/plugin.js
464
464
 
465
+ Component: SAP Theming Base Content, version: 11.1.34
466
+ Copyright: SAP SE or an SAP affiliate company and Theming Base Content contributors
467
+ License: Apache-2.0
468
+ License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
469
+ Contained in: src/sap.ui.core/src/sap/ui/core/themes/base/base.less
470
+ src/themelib_sap_belize/src/sap/ui/core/themes/*/base.less
471
+ src/themelib_sap_fiori_3/src/sap/ui/core/themes/*/base.less
472
+ src/themelib_sap_horizon/src/sap/ui/core/themes/*/base.less
473
+
465
474
 
466
475
  ALL LICENSE TEXTS:
467
476
  ==================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.table",
3
- "version": "1.92.0",
3
+ "version": "1.93.3",
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/SAP/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.ui.core": "1.92.0",
18
- "@openui5/sap.ui.unified": "1.92.0"
17
+ "@openui5/sap.ui.core": "1.93.3",
18
+ "@openui5/sap.ui.unified": "1.93.3"
19
19
  }
20
20
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.92.0</version>
9
+ <version>1.93.3</version>
10
10
 
11
11
  <documentation>Table-like controls, mainly for desktop scenarios.</documentation>
12
12
 
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  * @extends sap.ui.table.Column
47
47
  *
48
48
  * @author SAP SE
49
- * @version 1.92.0
49
+ * @version 1.93.3
50
50
  *
51
51
  * @constructor
52
52
  * @public
@@ -296,7 +296,7 @@ sap.ui.define([
296
296
 
297
297
  /**
298
298
  * Checks whether or not the menu has items
299
- * @returns {Boolean} True if the menu has or could have items.
299
+ * @returns {boolean} True if the menu has or could have items.
300
300
  */
301
301
  AnalyticalColumn.prototype._menuHasItems = function() {
302
302
  var fnMenuHasItems = function() {
@@ -23,7 +23,7 @@ sap.ui.define(['./ColumnMenu', "sap/ui/unified/MenuRenderer", './library', "sap/
23
23
  * @extends sap.ui.table.ColumnMenu
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.92.0
26
+ * @version 1.93.3
27
27
  *
28
28
  * @constructor
29
29
  * @public
@@ -62,7 +62,7 @@ sap.ui.define([
62
62
  * @see http://scn.sap.com/docs/DOC-44986
63
63
  *
64
64
  * @extends sap.ui.table.Table
65
- * @version 1.92.0
65
+ * @version 1.93.3
66
66
  *
67
67
  * @constructor
68
68
  * @public
@@ -424,6 +424,7 @@ sap.ui.define([
424
424
  if (this._aGroupedColumns.indexOf(oColumn.getId()) > -1) {
425
425
  continue;
426
426
  }
427
+ // eslint-disable-next-line no-unsafe-negation
427
428
  if (!oColumn instanceof AnalyticalColumn) {
428
429
  Log.error("You have to use AnalyticalColumns for the Analytical table");
429
430
  }
@@ -70,7 +70,7 @@ sap.ui.define([
70
70
  * @class
71
71
  * The column allows you to define column specific properties that will be applied when rendering the table.
72
72
  * @extends sap.ui.core.Element
73
- * @version 1.92.0
73
+ * @version 1.93.3
74
74
  *
75
75
  * @constructor
76
76
  * @public
@@ -576,7 +576,7 @@ sap.ui.define([
576
576
  * Checks whether or not the menu has items. This function considers table and column
577
577
  * properties to determine whether the column menu would have items. If there is a menu set,
578
578
  * it will just check whether there are items in the item aggregation.
579
- * @returns {Boolean} True if the menu has or could have items.
579
+ * @returns {boolean} True if the menu has or could have items.
580
580
  * @private
581
581
  */
582
582
  Column.prototype._menuHasItems = function() {
@@ -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.92.0
43
+ * @version 1.93.3
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.92.0
35
+ * @version 1.93.3
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.92.0
138
+ * @version 1.93.3
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.92.0
38
+ * @version 1.93.3
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.92.0
27
+ * @version 1.93.3
28
28
  * @since 1.45
29
29
  *
30
30
  * @constructor
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * The <code>RowSettings</code> control allows you to configure a row.
25
25
  * You can only use this control in the context of the <code>sap.ui.table.Table</code> control to define row settings.
26
26
  * @extends sap.ui.core.Element
27
- * @version 1.92.0
27
+ * @version 1.93.3
28
28
  *
29
29
  * @constructor
30
30
  * @public
@@ -94,7 +94,7 @@ sap.ui.define([
94
94
  * the data model and binding being used.
95
95
  * </p>
96
96
  * @extends sap.ui.core.Control
97
- * @version 1.92.0
97
+ * @version 1.93.3
98
98
  *
99
99
  * @constructor
100
100
  * @public
@@ -2446,13 +2446,11 @@ sap.ui.define([
2446
2446
  Table.prototype._adjustToTotalRowCount = function() {
2447
2447
  var oBinding = this.getBinding();
2448
2448
  var iTotalRowCount = this._getTotalRowCount();
2449
- var oScrollExtension = this._getScrollExtension();
2450
2449
 
2451
2450
  if (this._iBindingLength !== iTotalRowCount) {
2452
2451
  this._iBindingLength = iTotalRowCount;
2453
2452
  this._updateFixedBottomRows();
2454
- this._getAccExtension()._updateAriaRowCount();
2455
- oScrollExtension.adjustToTotalRowCount();
2453
+ TableUtils.Hook.call(this, Hook.TotalRowCountChanged);
2456
2454
 
2457
2455
  if (!oBinding || !TableUtils.hasPendingRequests(this)) {
2458
2456
  // A client binding -or- an $expand filled list binding does not fire dataReceived events. Therefore we need to update the no data area here.
@@ -3052,7 +3050,7 @@ sap.ui.define([
3052
3050
  * Pushes the sorted column to array.
3053
3051
  *
3054
3052
  * @param {sap.ui.table.Column} oColumn Column to be sorted
3055
- * @param {Boolean} bAdd Set to true to add the new sort criterion to the existing sort criteria
3053
+ * @param {boolean} bAdd Set to true to add the new sort criterion to the existing sort criteria
3056
3054
  * @private
3057
3055
  * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
3058
3056
  */
@@ -3085,7 +3083,7 @@ sap.ui.define([
3085
3083
  *
3086
3084
  * @param {sap.ui.table.Column | undefined} oColumn Column to be sorted or undefined to clear sorting
3087
3085
  * @param {sap.ui.table.SortOrder} oSortOrder Sort order of the column (if undefined the default will be ascending)
3088
- * @param {Boolean} bAdd Set to true to add the new sort criterion to the existing sort criteria
3086
+ * @param {boolean} bAdd Set to true to add the new sort criterion to the existing sort criteria
3089
3087
  * @public
3090
3088
  * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
3091
3089
  */
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.base.ManagedObject
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.92.0
33
+ * @version 1.93.3
34
34
  * @since 1.21.1
35
35
  *
36
36
  * @constructor
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @class
39
39
  * The TreeTable control provides a comprehensive set of features to display hierarchical data.
40
40
  * @extends sap.ui.table.Table
41
- * @version 1.92.0
41
+ * @version 1.93.3
42
42
  *
43
43
  * @constructor
44
44
  * @public
@@ -384,7 +384,6 @@ sap.ui.define([
384
384
 
385
385
  if (bIsGroupHeader) {
386
386
  aLabels.push(sTableId + "-ariarowgrouplabel");
387
- aLabels.push(sRowId + "-groupHeader");
388
387
  } else if (oRow.isTotalSummary()) {
389
388
  aLabels.push(sTableId + "-ariagrandtotallabel");
390
389
  } else if (oRow.isGroupSummary()) {
@@ -424,7 +423,10 @@ sap.ui.define([
424
423
  }
425
424
 
426
425
  ExtensionHelper.performCellModifications(this, $Cell, aDefaultLabels, null, aLabels, aDescriptions, sText,
427
- function(aLabels, aDescriptions, bRowChange, bColChange, bInitial) {
426
+ function(aLabels, aDescriptions, bRowChange, bColChange) {
427
+ if (bIsGroupHeader && bRowChange) {
428
+ aLabels.splice(3, 0, sRowId + "-groupHeader");
429
+ }
428
430
  var bContainsTreeIcon = $Cell.find(".sapUiTableTreeIcon").not(".sapUiTableTreeIconLeaf").length == 1;
429
431
 
430
432
  if ((bContainsTreeIcon || bIsGroupHeader) && (bRowChange || bColChange)) {
@@ -541,10 +543,10 @@ sap.ui.define([
541
543
  var aDefaultLabels = ExtensionHelper.getAriaAttributesFor(this, AccExtension.ELEMENTTYPES.ROWACTION)["aria-labelledby"] || [];
542
544
  var aLabels = [sTableId + "-rownumberofrows", sTableId + "-colnumberofcols"].concat(aDefaultLabels);
543
545
  var aDescriptions = [];
546
+ var bIsGroupHeader = oRow.isGroupHeader();
544
547
 
545
- if (oRow.isGroupHeader()) {
548
+ if (bIsGroupHeader) {
546
549
  aLabels.push(sTableId + "-ariarowgrouplabel");
547
- aLabels.push(sRowId + "-groupHeader");
548
550
  aLabels.push(sTableId + (oRow.isExpanded() ? "-rowcollapsetext" : "-rowexpandtext"));
549
551
  }
550
552
 
@@ -577,7 +579,14 @@ sap.ui.define([
577
579
  }
578
580
  }
579
581
 
580
- ExtensionHelper.performCellModifications(this, $Cell, aDefaultLabels, [], aLabels, aDescriptions, sText);
582
+ ExtensionHelper.performCellModifications(this, $Cell, aDefaultLabels, [], aLabels, aDescriptions, sText,
583
+ function(aLabels, aDescriptions, bRowChange) {
584
+ if (bIsGroupHeader && bRowChange) {
585
+ var iIndex = aLabels.indexOf(sTableId + "-ariarowgrouplabel") + 1;
586
+ aLabels.splice(iIndex, 0, sRowId + "-groupHeader");
587
+ }
588
+ }
589
+ );
581
590
  },
582
591
 
583
592
  /**
@@ -874,7 +883,7 @@ sap.ui.define([
874
883
  * @class Extension for sap.ui.table.Table which handles ACC related things.
875
884
  * @extends sap.ui.table.extensions.ExtensionBase
876
885
  * @author SAP SE
877
- * @version 1.92.0
886
+ * @version 1.93.3
878
887
  * @constructor
879
888
  * @private
880
889
  * @alias sap.ui.table.extensions.Accessibility
@@ -897,6 +906,22 @@ sap.ui.define([
897
906
  return "AccExtension";
898
907
  },
899
908
 
909
+ /**
910
+ * @override
911
+ * @inheritDoc
912
+ */
913
+ _attachEvents: function() {
914
+ TableUtils.Hook.register(this.getTable(), TableUtils.Hook.Keys.Table.TotalRowCountChanged, this._updateAriaRowCount, this);
915
+ },
916
+
917
+ /**
918
+ * @override
919
+ * @inheritDoc
920
+ */
921
+ _detachEvents: function() {
922
+ TableUtils.Hook.deregister(this.getTable(), TableUtils.Hook.Keys.Table.TotalRowCountChanged, this._updateAriaRowCount, this);
923
+ },
924
+
900
925
  /**
901
926
  * Enables debugging for the extension. Internal helper classes become accessible.
902
927
  *
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @class Extension for sap.ui.table.TableRenderer which handles ACC related things.
43
43
  * @extends sap.ui.table.extensions.ExtensionBase
44
44
  * @author SAP SE
45
- * @version 1.92.0
45
+ * @version 1.93.3
46
46
  * @constructor
47
47
  * @private
48
48
  * @alias sap.ui.table.extensions.AccessibilityRender
@@ -244,7 +244,7 @@ sap.ui.define([
244
244
  *
245
245
  * @extends sap.ui.table.extensions.ExtensionBase
246
246
  * @author SAP SE
247
- * @version 1.92.0
247
+ * @version 1.93.3
248
248
  * @constructor
249
249
  * @private
250
250
  * @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.92.0
22
+ * @version 1.93.3
23
23
  * @constructor
24
24
  * @private
25
25
  * @alias sap.ui.table.extensions.ExtensionBase
@@ -260,7 +260,7 @@ sap.ui.define([
260
260
  * @class Extension for sap.ui.table.Table which handles keyboard related things.
261
261
  * @extends sap.ui.table.extensions.ExtensionBase
262
262
  * @author SAP SE
263
- * @version 1.92.0
263
+ * @version 1.93.3
264
264
  * @constructor
265
265
  * @private
266
266
  * @alias sap.ui.table.extensions.Keyboard
@@ -52,7 +52,7 @@ sap.ui.define([
52
52
  *
53
53
  * @extends sap.ui.base.Object
54
54
  * @author SAP SE
55
- * @version 1.92.0
55
+ * @version 1.93.3
56
56
  * @constructor
57
57
  * @private
58
58
  * @alias sap.ui.table.extensions.KeyboardDelegate
@@ -473,7 +473,7 @@ sap.ui.define([
473
473
  oTable._getSelectionPlugin().onHeaderSelectorPress();
474
474
 
475
475
  // Expand/Collapse group.
476
- } else if (KeyboardDelegate._isElementGroupToggler(oTable, oEvent.target)) {
476
+ } else if (KeyboardDelegate._allowsToggleExpandedState(oTable, oEvent.target)) {
477
477
  getRowByDomRef(oTable, oEvent.target).toggleExpandedState();
478
478
 
479
479
  // Select/Deselect row.
@@ -645,22 +645,31 @@ sap.ui.define([
645
645
  }
646
646
 
647
647
  /**
648
- * Checks whether an element is in the list of elements which can allow expanding and collapsing a group, if a specific key is pressed on them.
648
+ * Checks whether an element is a tree icon.
649
+ *
650
+ * @param {HTMLElement} oElement The element to check.
651
+ * @returns {boolean} Whether the element is a tree icon.
652
+ */
653
+ function isTreeIcon(oElement) {
654
+ return oElement.classList.contains("sapUiTableTreeIconNodeOpen") || oElement.classList.contains("sapUiTableTreeIconNodeClosed");
655
+ }
656
+
657
+ /**
658
+ * Checks whether an element allows a group or a tree node to be expanded or collapsed on user interaction.
649
659
  *
650
660
  * @param {sap.ui.table.Table} oTable Instance of the table.
651
661
  * @param {HTMLElement} oElement The element to check.
652
- * @returns {boolean} Returns <code>true</code>, if pressing a specific key on this element can cause a group to expand or to collapse.
662
+ * @returns {boolean} Whether user interaction with this element can trigger expand or collapse of a group or tree node.
653
663
  * @private
654
664
  * @static
655
665
  */
656
- KeyboardDelegate._isElementGroupToggler = function(oTable, oElement) {
666
+ KeyboardDelegate._allowsToggleExpandedState = function(oTable, oElement) {
657
667
  return TableUtils.Grouping.isInGroupHeaderRow(oElement)
658
668
  || (TableUtils.Grouping.isInTreeMode(oTable)
659
669
  && oElement.classList.contains("sapUiTableCellFirst")
660
670
  && (oElement.querySelector(".sapUiTableTreeIconNodeOpen")
661
671
  || oElement.querySelector(".sapUiTableTreeIconNodeClosed")))
662
- || oElement.classList.contains("sapUiTableTreeIconNodeOpen")
663
- || oElement.classList.contains("sapUiTableTreeIconNodeClosed");
672
+ || isTreeIcon(oElement);
664
673
  };
665
674
 
666
675
  /**
@@ -1038,14 +1047,20 @@ sap.ui.define([
1038
1047
  }
1039
1048
 
1040
1049
  return;
1050
+ }
1041
1051
 
1042
1052
  // Expand/Collapse group.
1043
- } else if (KeyboardDelegate._isKeyCombination(oEvent, KeyCodes.F4) &&
1044
- KeyboardDelegate._isElementGroupToggler(this, oEvent.target)) {
1053
+ if (KeyboardDelegate._isKeyCombination(oEvent, KeyCodes.F4) && KeyboardDelegate._allowsToggleExpandedState(this, oEvent.target)) {
1045
1054
  getRowByDomRef(this, oEvent.target).toggleExpandedState();
1046
1055
  return;
1047
1056
  }
1048
1057
 
1058
+ // Prevent page scrolling when pressing Space on the tree icon.
1059
+ if (KeyboardDelegate._isKeyCombination(oEvent, KeyCodes.SPACE) && isTreeIcon(oEvent.target)) {
1060
+ oEvent.preventDefault(); // Prevent scrolling the page.
1061
+ return;
1062
+ }
1063
+
1049
1064
  if (this._getKeyboardExtension().isInActionMode() || !oCellInfo.isOfType(CellType.ANY)) {
1050
1065
  return;
1051
1066
  }
@@ -1104,13 +1119,13 @@ sap.ui.define([
1104
1119
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1105
1120
 
1106
1121
  if (KeyboardDelegate._isKeyCombination(oEvent, "+")) {
1107
- if (KeyboardDelegate._isElementGroupToggler(this, oEvent.target)) {
1122
+ if (KeyboardDelegate._allowsToggleExpandedState(this, oEvent.target)) {
1108
1123
  getRowByDomRef(this, oEvent.target).expand();
1109
1124
  } else if (oCellInfo.isOfType(CellType.DATACELL | CellType.ROWACTION)) {
1110
1125
  oKeyboardExtension.setActionMode(true);
1111
1126
  }
1112
1127
  } else if (KeyboardDelegate._isKeyCombination(oEvent, "-")) {
1113
- if (KeyboardDelegate._isElementGroupToggler(this, oEvent.target)) {
1128
+ if (KeyboardDelegate._allowsToggleExpandedState(this, oEvent.target)) {
1114
1129
  getRowByDomRef(this, oEvent.target).collapse();
1115
1130
  } else if (oCellInfo.isOfType(CellType.DATACELL | CellType.ROWACTION)) {
1116
1131
  oKeyboardExtension.setActionMode(true);
@@ -1357,7 +1372,7 @@ sap.ui.define([
1357
1372
  var oKeyboardExtension = this._getKeyboardExtension();
1358
1373
 
1359
1374
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.ALT) &&
1360
- KeyboardDelegate._isElementGroupToggler(this, oEvent.target)) {
1375
+ KeyboardDelegate._allowsToggleExpandedState(this, oEvent.target)) {
1361
1376
 
1362
1377
  preventItemNavigation(oEvent);
1363
1378
  getRowByDomRef(this, oEvent.target).expand();
@@ -1433,7 +1448,7 @@ sap.ui.define([
1433
1448
  }
1434
1449
 
1435
1450
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.ALT) &&
1436
- KeyboardDelegate._isElementGroupToggler(this, oEvent.target)) {
1451
+ KeyboardDelegate._allowsToggleExpandedState(this, oEvent.target)) {
1437
1452
 
1438
1453
  preventItemNavigation(oEvent);
1439
1454
  getRowByDomRef(this, oEvent.target).collapse();
@@ -805,7 +805,7 @@ sap.ui.define([
805
805
  * @class Extension for sap.ui.table.Table which handles mouse and touch related things.
806
806
  * @extends sap.ui.table.extensions.ExtensionBase
807
807
  * @author SAP SE
808
- * @version 1.92.0
808
+ * @version 1.93.3
809
809
  * @constructor
810
810
  * @private
811
811
  * @alias sap.ui.table.extensions.Pointer
@@ -1570,6 +1570,10 @@ sap.ui.define([
1570
1570
  }
1571
1571
  },
1572
1572
 
1573
+ onTotalRowCountChanged: function() {
1574
+ VerticalScrollingHelper.adjustToTotalRowCount(this);
1575
+ },
1576
+
1573
1577
  adjustToTotalRowCount: function(oTable) {
1574
1578
  var oScrollExtension = oTable._getScrollExtension();
1575
1579
 
@@ -2159,7 +2163,7 @@ sap.ui.define([
2159
2163
  * @class Extension for sap.ui.table.Table which handles scrolling.
2160
2164
  * @extends sap.ui.table.extensions.ExtensionBase
2161
2165
  * @author SAP SE
2162
- * @version 1.92.0
2166
+ * @version 1.93.3
2163
2167
  * @constructor
2164
2168
  * @private
2165
2169
  * @alias sap.ui.table.extensions.Scrolling
@@ -2207,6 +2211,7 @@ sap.ui.define([
2207
2211
  HorizontalScrollingHelper.addEventListeners(oTable);
2208
2212
  VerticalScrollingHelper.addEventListeners(oTable);
2209
2213
  ScrollingHelper.addEventListeners(oTable);
2214
+ TableUtils.Hook.register(oTable, TableUtils.Hook.Keys.Table.TotalRowCountChanged, VerticalScrollingHelper.onTotalRowCountChanged, oTable);
2210
2215
  },
2211
2216
 
2212
2217
  /**
@@ -2219,6 +2224,7 @@ sap.ui.define([
2219
2224
  HorizontalScrollingHelper.removeEventListeners(oTable);
2220
2225
  VerticalScrollingHelper.removeEventListeners(oTable);
2221
2226
  ScrollingHelper.removeEventListeners(oTable);
2227
+ TableUtils.Hook.deregister(oTable, TableUtils.Hook.Keys.Table.TotalRowCountChanged, VerticalScrollingHelper.onTotalRowCountChanged, oTable);
2222
2228
  },
2223
2229
 
2224
2230
  /**
@@ -2543,13 +2549,6 @@ sap.ui.define([
2543
2549
  }
2544
2550
  };
2545
2551
 
2546
- /**
2547
- * Adjusts the scrollbar and the scroll position to the total row count. Expects that rows will be updated.
2548
- */
2549
- ScrollExtension.prototype.adjustToTotalRowCount = function() {
2550
- VerticalScrollingHelper.adjustToTotalRowCount(this.getTable());
2551
- };
2552
-
2553
2552
  /**
2554
2553
  * Restores the vertical scroll position.
2555
2554
  */
@@ -142,7 +142,7 @@ sap.ui.define([
142
142
  * @class Extension for sap.ui.table.Table that allows synchronization with a table.
143
143
  * @extends sap.ui.table.extensions.ExtensionBase
144
144
  * @author SAP SE
145
- * @version 1.92.0
145
+ * @version 1.93.3
146
146
  * @constructor
147
147
  * @private
148
148
  * @alias sap.ui.table.extensions.Synchronization
@@ -17,7 +17,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
17
17
  // delegate further initialization of this library to the Core
18
18
  sap.ui.getCore().initLibrary({
19
19
  name : "sap.ui.table",
20
- version: "1.92.0",
20
+ version: "1.93.3",
21
21
  dependencies : ["sap.ui.core","sap.ui.unified"],
22
22
  designtime: "sap/ui/table/designtime/library.designtime",
23
23
  types: [
@@ -74,7 +74,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
74
74
  * @namespace
75
75
  * @alias sap.ui.table
76
76
  * @author SAP SE
77
- * @version 1.92.0
77
+ * @version 1.93.3
78
78
  * @since 0.8
79
79
  * @public
80
80
  */
@@ -83,7 +83,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
83
83
  /**
84
84
  * Navigation mode of the table
85
85
  *
86
- * @version 1.92.0
86
+ * @version 1.93.3
87
87
  * @enum {string}
88
88
  * @public
89
89
  * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel
@@ -111,7 +111,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
111
111
  /**
112
112
  * Row Action types.
113
113
  *
114
- * @version 1.92.0
114
+ * @version 1.93.3
115
115
  * @enum {string}
116
116
  * @public
117
117
  * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel
@@ -142,7 +142,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
142
142
  /**
143
143
  * Selection behavior of the table
144
144
  *
145
- * @version 1.92.0
145
+ * @version 1.93.3
146
146
  * @enum {string}
147
147
  * @public
148
148
  * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel
@@ -173,7 +173,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
173
173
  /**
174
174
  * Selection mode of the table
175
175
  *
176
- * @version 1.92.0
176
+ * @version 1.93.3
177
177
  * @enum {string}
178
178
  * @public
179
179
  * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel
@@ -211,7 +211,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
211
211
  /**
212
212
  * Sort order of a column
213
213
  *
214
- * @version 1.92.0
214
+ * @version 1.93.3
215
215
  * @enum {string}
216
216
  * @public
217
217
  * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel
@@ -236,7 +236,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
236
236
  /**
237
237
  * VisibleRowCountMode of the table
238
238
  *
239
- * @version 1.92.0
239
+ * @version 1.93.3
240
240
  * @enum {string}
241
241
  * @public
242
242
  * @ui5-metamodel This enumeration also will be described in the UI5 (legacy) designtime metamodel
@@ -268,7 +268,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
268
268
  *
269
269
  * Contains IDs of shared DOM references, which should be accessible to inheriting controls via getDomRef() function.
270
270
  *
271
- * @version 1.92.0
271
+ * @version 1.93.3
272
272
  * @enum {string}
273
273
  * @public
274
274
  */
@@ -366,7 +366,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/model/TreeAutoExpandMode',
366
366
  *
367
367
  * This is an alias for {@link sap.ui.model.TreeAutoExpandMode} and kept for compatibility reasons.
368
368
  *
369
- * @version 1.92.0
369
+ * @version 1.93.3
370
370
  * @typedef {sap.ui.model.TreeAutoExpandMode}
371
371
  * @public
372
372
  */
@@ -40,7 +40,7 @@ TBL_NO_COLUMNS=Es gibt gerade keine sichtbaren Spalten in der Tabelle. Bitte w\u
40
40
 
41
41
  TBL_NO_DATA=Keine Daten
42
42
 
43
- TBL_SELECT_ALL=Alles markieren
43
+ TBL_SELECT_ALL=Alle markieren
44
44
  TBL_DESELECT_ALL=Alle Markierungen l\u00F6schen
45
45
 
46
46
  TBL_TOGGLE_EDIT_KEY=Um in eine Tabellenzelle zu springen, F2 dr\u00FCcken
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  *
23
23
  * @class Implements the selection methods for TreeTable and AnalyticalTable
24
24
  * @extends sap.ui.table.plugins.SelectionPlugin
25
- * @version 1.92.0
25
+ * @version 1.93.3
26
26
  * @constructor
27
27
  * @private
28
28
  * @alias sap.ui.table.plugins.BindingSelection
@@ -114,7 +114,7 @@ sap.ui.define([
114
114
  MultiSelectionPlugin.prototype.init = function() {
115
115
  SelectionPlugin.prototype.init.apply(this, arguments);
116
116
 
117
- var oIcon = new Icon({src: IconPool.getIconURI(TableUtils.ThemeParameters.resetIcon), useIconTooltip: false});
117
+ var oIcon = new Icon({src: IconPool.getIconURI(TableUtils.ThemeParameters.clearSelectionIcon), useIconTooltip: false});
118
118
  oIcon.addStyleClass("sapUiTableSelectClear");
119
119
 
120
120
  this._bLimitReached = false;
@@ -726,7 +726,7 @@ sap.ui.define([
726
726
  };
727
727
 
728
728
  MultiSelectionPlugin.prototype.onThemeChanged = function() {
729
- this.oDeselectAllIcon.setSrc(IconPool.getIconURI(TableUtils.ThemeParameters.resetIcon));
729
+ this.oDeselectAllIcon.setSrc(IconPool.getIconURI(TableUtils.ThemeParameters.clearSelectionIcon));
730
730
  };
731
731
 
732
732
  return MultiSelectionPlugin;
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.core.Element
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.92.0
31
+ * @version 1.93.3
32
32
  *
33
33
  * @private
34
34
  * @experimental Since 1.75
@@ -93,7 +93,7 @@ sap.ui.define([
93
93
  * Determines whether the plugin is applicable to the control.
94
94
  *
95
95
  * @param {sap.ui.core.Control} oControl The control the plugin should be applied to
96
- * @returns {Boolean} Whether it is applicable
96
+ * @returns {boolean} Whether it is applicable
97
97
  * @protected
98
98
  * @virtual
99
99
  */
@@ -14,7 +14,6 @@ sap.ui.define([
14
14
  TableUtils,
15
15
  library
16
16
  ) {
17
-
18
17
  "use strict";
19
18
 
20
19
  var SelectionMode = library.SelectionMode;
@@ -24,7 +23,7 @@ sap.ui.define([
24
23
  *
25
24
  * @class Implements the selection methods for a Table
26
25
  * @extends sap.ui.table.plugins.SelectionPlugin
27
- * @version 1.92.0
26
+ * @version 1.93.3
28
27
  * @constructor
29
28
  * @private
30
29
  * @alias sap.ui.table.plugins.SelectionModelSelection
@@ -76,19 +75,22 @@ sap.ui.define([
76
75
  /**
77
76
  * @inheritDoc
78
77
  */
79
- SelectionModelSelection.prototype.onActivate = function() {
78
+ SelectionModelSelection.prototype.onActivate = function(oTable) {
80
79
  SelectionPlugin.prototype.onActivate.apply(this, arguments);
81
80
  this.oSelectionModel.attachSelectionChanged(this._onSelectionChange, this);
81
+ TableUtils.Hook.register(oTable, TableUtils.Hook.Keys.Table.TotalRowCountChanged, onTotalRowCountChanged, this);
82
+ this._bIgnoreNextTotalRowCountChange = oTable._getTotalRowCount() === 0;
82
83
  };
83
84
 
84
85
  /**
85
86
  * @inheritDoc
86
87
  */
87
- SelectionModelSelection.prototype.onDeactivate = function() {
88
+ SelectionModelSelection.prototype.onDeactivate = function(oTable) {
88
89
  SelectionPlugin.prototype.onDeactivate.apply(this, arguments);
89
90
  this.oSelectionModel.detachSelectionChanged(this._onSelectionChange, this);
90
91
  this.oSelectionModel.clearSelection();
91
92
  detachFromBinding(this, this.getTableBinding());
93
+ TableUtils.Hook.deregister(oTable, TableUtils.Hook.Keys.Table.TotalRowCountChanged, onTotalRowCountChanged, this);
92
94
  };
93
95
 
94
96
  /**
@@ -308,6 +310,12 @@ sap.ui.define([
308
310
  */
309
311
  SelectionModelSelection.prototype.onTableRowsBound = function(oBinding) {
310
312
  SelectionPlugin.prototype.onTableRowsBound.apply(this, arguments);
313
+ if (!this.hasOwnProperty("_bIgnoreNextTotalRowCountChange")) {
314
+ this._bIgnoreNextTotalRowCountChange = true;
315
+ }
316
+ if (!this.getTable()._bContextsAvailable) {
317
+ this._bWaitForBindingChange = true;
318
+ }
311
319
  attachToBinding(this, oBinding);
312
320
  };
313
321
 
@@ -344,7 +352,21 @@ sap.ui.define([
344
352
  if (sReason === "sort" || sReason === "filter") {
345
353
  this.clearSelection();
346
354
  }
355
+
356
+ if (this._bWaitForBindingChange) {
357
+ this._bIgnoreNextTotalRowCountChange = true;
358
+ delete this._bWaitForBindingChange;
359
+ }
347
360
  };
348
361
 
362
+ function onTotalRowCountChanged() {
363
+ if (!this._bIgnoreNextTotalRowCountChange) {
364
+ // If rows are added or removed, the index-based selection of the SelectionModel is invalid and needs to be cleared.
365
+ // The initial change is ignored for compatibility, so it is possible to select something before the initial rows update is done.
366
+ this.clearSelection();
367
+ }
368
+ delete this._bIgnoreNextTotalRowCountChange;
369
+ }
370
+
349
371
  return SelectionModelSelection;
350
372
  });
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @class Implements the selection methods for a table.
30
30
  * @extends sap.ui.core.Element
31
31
  * @author SAP SE
32
- * @version 1.92.0
32
+ * @version 1.93.3
33
33
  * @public
34
34
  * @since 1.64
35
35
  * @experimental As of version 1.64
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @class TODO (don't forget to document fixed row count restrictions because fixed rows are set by this plugin)
33
33
  * @extends sap.ui.table.plugins.PluginBase
34
34
  * @author SAP SE
35
- * @version 1.92.0
35
+ * @version 1.93.3
36
36
  * @private
37
37
  * @since 1.76
38
38
  * @experimental
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * @ui5-restricted sap.ui.mdc
36
36
  *
37
37
  * @author SAP SE
38
- * @version 1.92.0
38
+ * @version 1.93.3
39
39
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
40
40
  */
41
41
  var AutoRowMode = RowMode.extend("sap.ui.table.rowmodes.AutoRowMode", /** @lends sap.ui.table.rowmodes.AutoRowMode.prototype */ {
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @ui5-restricted sap.ui.mdc
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.92.0
32
+ * @version 1.93.3
33
33
  *
34
34
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
35
35
  */
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * @ui5-restricted sap.ui.mdc
34
34
  *
35
35
  * @author SAP SE
36
- * @version 1.92.0
36
+ * @version 1.93.3
37
37
  *
38
38
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
39
39
  */
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @ui5-restricted sap.ui.mdc
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.92.0
39
+ * @version 1.93.3
40
40
  * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel
41
41
  */
42
42
  var RowMode = Element.extend("sap.ui.table.rowmodes.RowMode", /** @lends sap.ui.table.rowmodes.RowMode.prototype */ {
@@ -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.92.0
26
+ * @version 1.93.3
27
27
  *
28
28
  * @constructor
29
29
  * @private
@@ -3,8 +3,8 @@
3
3
  /* Base theme */
4
4
  /* ========================== */
5
5
 
6
- @_sap_ui_table_Cell_FocusOutlineOffset: -1px;
7
- @_sap_ui_table_Cell_FocusOutlineOffsetInZoomedChrome: -2px;
6
+ @_sap_ui_table_Cell_FocusOutlineOffset: -@sapUiContentFocusWidth;
7
+ @_sap_ui_table_Cell_FocusOutlineOffsetInZoomedChrome: calc(-@sapUiContentFocusWidth ~"- 0.0625rem");
8
8
  @_sap_ui_table_Cell_Padding: 0 0.5rem;
9
9
  @_sap_ui_table_Cell_TouchMenuIconSize: 1.375rem;
10
10
  @_sap_ui_table_Cell_ColumnIconSize: 0.75rem;
@@ -17,16 +17,19 @@
17
17
  * Focus outline
18
18
  */
19
19
  .sapUiTableCell:focus {
20
- outline-offset: @_sap_ui_table_Cell_FocusOutlineOffset;
21
- outline: @_sap_ui_table_FocusOutlineWidth dotted @sapUiContentFocusColor;
20
+ outline: none;
22
21
 
23
- .sapUiTableZoomout & {
24
- outline-offset: @_sap_ui_table_Cell_FocusOutlineOffsetInZoomedChrome;
25
- }
22
+ &::before {
23
+ content: "";
24
+ position: absolute;
25
+ inset: 0;
26
+ pointer-events: none;
27
+ outline: @_sap_ui_table_FocusOutlineWidth @sapUiContentFocusStyle @sapUiContentFocusColor;
28
+ outline-offset: @_sap_ui_table_Cell_FocusOutlineOffset;
26
29
 
27
- // To show the bottom focus outline of row selection cells that would otherwise be hidden by the top border of the selection cell below.
28
- .sapUiTableGroupMode &.sapUiTableRowSelectionCell:focus {
29
- z-index: 1;
30
+ .sapUiTableZoomout & {
31
+ outline-offset: @_sap_ui_table_Cell_FocusOutlineOffsetInZoomedChrome;
32
+ }
30
33
  }
31
34
  }
32
35
 
@@ -43,6 +46,7 @@
43
46
  * Borders
44
47
  */
45
48
  .sapUiTableCell {
49
+ position: relative;
46
50
  box-sizing: border-box;
47
51
  border-right: @_sap_ui_table_BaseBorderWidth solid @sapUiListVerticalBorderColor;
48
52
  border-bottom: @_sap_ui_table_BaseBorderWidth solid @sapUiListBorderColor;
@@ -124,10 +128,6 @@
124
128
 
125
129
  .sapUiTableRowSel > & {
126
130
  border-bottom-color: @_sap_ui_table_Cell_BorderColorSelected;
127
-
128
- &:focus {
129
- border-bottom-color: transparent;
130
- }
131
131
  }
132
132
 
133
133
  .sapUiTableSummaryRow > & {
@@ -29,7 +29,7 @@
29
29
  }
30
30
 
31
31
  &:focus {
32
- outline: @_sap_ui_table_Grouping_GroupOutlineWidth dotted @sapUiContentFocusColor;
32
+ outline: @_sap_ui_table_Grouping_GroupOutlineWidth @sapUiContentFocusStyle @sapUiContentFocusColor;
33
33
  outline-offset: -2px;
34
34
  }
35
35
  }
@@ -42,7 +42,7 @@
42
42
  position: absolute;
43
43
  left: 1px;
44
44
  top: @_sap_ui_table_Grouping_GroupOutlineWidth;
45
- bottom: 0;
45
+ bottom: @_sap_ui_table_Grouping_GroupOutlineWidth;
46
46
  white-space: nowrap;
47
47
  font-weight: normal;
48
48
  color: @sapUiListTextColor;
@@ -80,6 +80,7 @@
80
80
  text-align: center;
81
81
  vertical-align: middle;
82
82
  margin-left: -2px;
83
+ margin-right: 2px;
83
84
  }
84
85
 
85
86
  .sapUiSizeCozy .sapUiTableGroupIcon::before {
@@ -121,11 +122,21 @@ html[dir=rtl] {
121
122
 
122
123
  .sapUiTableGroupHeaderRow > .sapUiTableRowSelectionCell:focus .sapUiTableGroupIcon {
123
124
  outline-width: @_sap_ui_table_Grouping_GroupOutlineWidth;
124
- outline-style: dotted;
125
+ outline-style: @sapUiContentFocusStyle;
125
126
  outline-offset: 0;
126
127
  outline-color: @sapUiContentFocusColor;
127
128
  }
128
129
 
130
+ .sapUiTableGroupHeaderRow > .sapUiTableRowSelectionCell:focus::before {
131
+ outline: none;
132
+ }
133
+
134
+ .sapUiTableGroupHeaderRow > .sapUiTableCell.sapUiTableCellFirst:focus::before,
135
+ .sapUiTableGroupMode .sapUiTableRowIndented > .sapUiTableCell.sapUiTableCellFirst:focus::before {
136
+ z-index: 2;
137
+ left: var(--CalculatedGroupIndent, 0);
138
+ }
139
+
129
140
  // Override row background and cell borders in group header rows.
130
141
  .sapUiTableGroupHeaderRow {
131
142
  &.sapUiTableRow {
@@ -181,6 +192,10 @@ html[dir=rtl] {
181
192
  pointer-events: none;
182
193
  }
183
194
 
195
+ .sapUiTableRowHidden > .sapUiTableCell > .sapUiTableGroupShield {
196
+ display: block;
197
+ }
198
+
184
199
  .sapUiTableGroupHeaderRow > .sapUiTableRowSelectionCell:focus {
185
200
  outline: 0;
186
201
  }
@@ -183,7 +183,7 @@
183
183
  .sapUiTableCtrlEmpty:focus,
184
184
  .sapUiTableCnt > .sapUiLocalBusyIndicator:focus {
185
185
  outline-width: @_sap_ui_table_FocusOutlineWidth;
186
- outline-style: dotted;
186
+ outline-style: @sapUiContentFocusStyle;
187
187
  outline-offset: -3px;
188
188
  outline-color: @sapUiContentFocusColor;
189
189
  }
@@ -43,9 +43,10 @@
43
43
 
44
44
  @_sap_ui_table_NavigationIcon: navigation-right-arrow;
45
45
  @_sap_ui_table_DeleteIcon: sys-cancel;
46
- @_sap_ui_table_ResetIcon: undo;
46
+ @_sap_ui_table_ClearSelectionIcon: clear-all;
47
47
 
48
- @_sap_ui_table_FocusOutlineWidth: 1px;
48
+ /*TBD: Table specific parameter should be removed and replaced with sapUiContentFocusWidth*/
49
+ @_sap_ui_table_FocusOutlineWidth: @sapUiContentFocusWidth;
49
50
 
50
51
  @import "Table.less";
51
52
  @import "Row.less";
@@ -140,13 +140,13 @@ sap.ui.define([
140
140
  * @typedef {Object} sap.ui.table.utils.TableUtils.ThemeParameters
141
141
  * @property {string} navigationIcon - Name of the navigation icon.
142
142
  * @property {string} deleteIcon - Name of the delete icon.
143
- * @property {string} resetIcon - Name of the reset icon.
143
+ * @property {string} clearSelectionIcon - Name of the clearSelection icon.
144
144
  * @property {int} navIndicatorWidth - Width of the navigation indicator
145
145
  */
146
146
  var mThemeParameters = {
147
147
  navigationIcon: "navigation-right-arrow",
148
148
  deleteIcon: "sys-cancel",
149
- resetIcon: "undo",
149
+ clearSelectionIcon: "clear-all",
150
150
  navIndicatorWidth: 3
151
151
  };
152
152
 
@@ -209,7 +209,7 @@ sap.ui.define([
209
209
  * Static collection of utility functions related to the sap.ui.table.Table, ...
210
210
  *
211
211
  * @author SAP SE
212
- * @version 1.92.0
212
+ * @version 1.93.3
213
213
  * @namespace
214
214
  * @alias sap.ui.table.utils.TableUtils
215
215
  * @private
@@ -1459,7 +1459,7 @@ sap.ui.define([
1459
1459
 
1460
1460
  mThemeParameters.navigationIcon = ThemeParameters.get("_sap_ui_table_NavigationIcon");
1461
1461
  mThemeParameters.deleteIcon = ThemeParameters.get("_sap_ui_table_DeleteIcon");
1462
- mThemeParameters.resetIcon = ThemeParameters.get("_sap_ui_table_ResetIcon");
1462
+ mThemeParameters.clearSelectionIcon = ThemeParameters.get("_sap_ui_table_ClearSelectionIcon");
1463
1463
  mThemeParameters.navIndicatorWidth = getPixelValue("_sap_ui_table_NavIndicatorWidth");
1464
1464
  },
1465
1465
 
@@ -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.Binding...</code>
15
15
  *
16
16
  * @author SAP SE
17
- * @version 1.92.0
17
+ * @version 1.93.3
18
18
  * @namespace
19
19
  * @alias sap.ui.table.utils._BindingUtils
20
20
  * @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.92.0
21
+ * @version 1.93.3
22
22
  * @namespace
23
23
  * @alias sap.ui.table.utils._ColumnUtils
24
24
  * @private
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Grouping...</code>
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.92.0
26
+ * @version 1.93.3
27
27
  * @namespace
28
28
  * @alias sap.ui.table.utils._GroupingUtils
29
29
  * @private
@@ -273,12 +273,14 @@ sap.ui.define([
273
273
  $RowHdr.css(bRTL ? "right" : "left", "");
274
274
  $Shield.css("width", "").css(bRTL ? "margin-right" : "margin-left", "");
275
275
  $FirstCellContentInRow.css(bRTL ? "padding-right" : "padding-left", "");
276
+ $Row.css("--CalculatedGroupIndent", "0");
276
277
  } else {
277
278
  // Apply indent on table row
278
279
  $RowHdr.css(bRTL ? "right" : "left", iIndent + "px");
279
280
  $Shield.css("width", iIndent + "px").css(bRTL ? "margin-right" : "margin-left", ((-1) * iIndent) + "px");
280
281
  $FirstCellContentInRow.css(bRTL ? "padding-right" : "padding-left",
281
282
  (iIndent + 8/* +8px standard padding .sapUiTableCellInner */) + "px");
283
+ $Row.css("--CalculatedGroupIndent", iIndent + "px");
282
284
  }
283
285
  },
284
286
 
@@ -22,7 +22,7 @@ sap.ui.define(["sap/ui/base/DataType", "sap/base/Log"], function(DataType, Log)
22
22
  * - There is no concept for public or protected hooks. Never expose a hook directly, only indirectly as can be seen in the examples.
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.92.0
25
+ * @version 1.93.3
26
26
  * @namespace
27
27
  * @alias sap.ui.table.utils._HookUtils
28
28
  *
@@ -163,6 +163,9 @@ sap.ui.define(["sap/ui/base/DataType", "sap/base/Log"], function(DataType, Log)
163
163
  {type: validateCellInfo},
164
164
  {type: "class:sap.ui.unified.Menu"}
165
165
  ]
166
+ },
167
+ TotalRowCountChanged: {
168
+ arguments: []
166
169
  }
167
170
  },
168
171
  Row: {
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Menu...</code>
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.92.0
45
+ * @version 1.93.3
46
46
  * @namespace
47
47
  * @alias sap.ui.table.utils._MenuUtils
48
48
  * @private