@openui5/sap.f 1.116.0 → 1.117.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 (83) hide show
  1. package/package.json +4 -4
  2. package/src/sap/f/.library +1 -1
  3. package/src/sap/f/Avatar.js +1 -1
  4. package/src/sap/f/AvatarGroup.js +1 -1
  5. package/src/sap/f/AvatarGroupItem.js +1 -1
  6. package/src/sap/f/CalendarAppointmentInCard.js +1 -1
  7. package/src/sap/f/CalendarInCard.js +1 -1
  8. package/src/sap/f/Card.js +1 -1
  9. package/src/sap/f/CardBase.js +1 -1
  10. package/src/sap/f/DynamicPage.js +38 -4
  11. package/src/sap/f/DynamicPageAccessibleLandmarkInfo.js +1 -1
  12. package/src/sap/f/DynamicPageHeader.js +1 -1
  13. package/src/sap/f/DynamicPageTitle.js +1 -1
  14. package/src/sap/f/FlexibleColumnLayout.js +1 -1
  15. package/src/sap/f/FlexibleColumnLayoutAccessibleLandmarkInfo.js +1 -1
  16. package/src/sap/f/FlexibleColumnLayoutSemanticHelper.js +1 -1
  17. package/src/sap/f/GridContainer.js +1 -1
  18. package/src/sap/f/GridContainerItemLayoutData.js +1 -1
  19. package/src/sap/f/GridContainerSettings.js +2 -2
  20. package/src/sap/f/GridList.js +1 -1
  21. package/src/sap/f/GridListItem.js +1 -1
  22. package/src/sap/f/GridNavigationMatrix.js +61 -33
  23. package/src/sap/f/IllustratedMessage.js +1 -1
  24. package/src/sap/f/Illustration.js +1 -1
  25. package/src/sap/f/PlanningCalendarInCardLegend.js +1 -1
  26. package/src/sap/f/ProductSwitch.js +1 -1
  27. package/src/sap/f/ProductSwitchItem.js +1 -1
  28. package/src/sap/f/SearchManager.js +1 -1
  29. package/src/sap/f/ShellBar.js +1 -1
  30. package/src/sap/f/SidePanel.js +17 -5
  31. package/src/sap/f/SidePanelItem.js +1 -1
  32. package/src/sap/f/SidePanelRenderer.js +1 -1
  33. package/src/sap/f/cards/BaseHeader.js +1 -1
  34. package/src/sap/f/cards/Header.js +9 -1
  35. package/src/sap/f/cards/HeaderRenderer.js +1 -1
  36. package/src/sap/f/cards/NumericHeader.js +1 -1
  37. package/src/sap/f/cards/NumericIndicators.js +1 -1
  38. package/src/sap/f/cards/NumericSideIndicator.js +1 -1
  39. package/src/sap/f/cards/loading/AnalyticalPlaceholder.js +1 -1
  40. package/src/sap/f/cards/loading/CalendarPlaceholder.js +1 -1
  41. package/src/sap/f/cards/loading/GenericPlaceholder.js +1 -1
  42. package/src/sap/f/cards/loading/ListPlaceholder.js +1 -1
  43. package/src/sap/f/cards/loading/ObjectPlaceholder.js +1 -1
  44. package/src/sap/f/cards/loading/PlaceholderBase.js +1 -1
  45. package/src/sap/f/cards/loading/TablePlaceholder.js +1 -1
  46. package/src/sap/f/cards/loading/TimelinePlaceholder.js +1 -1
  47. package/src/sap/f/changeHandler/MoveDynamicPageTitleActions.js +1 -1
  48. package/src/sap/f/delegate/GridContainerItemNavigation.js +1 -1
  49. package/src/sap/f/delegate/GridItemNavigation.js +135 -111
  50. package/src/sap/f/dnd/GridDragOver.js +1 -1
  51. package/src/sap/f/dnd/GridDropInfo.js +1 -1
  52. package/src/sap/f/library.js +2 -2
  53. package/src/sap/f/messagebundle_fr.properties +4 -4
  54. package/src/sap/f/semantic/AddAction.js +1 -1
  55. package/src/sap/f/semantic/CloseAction.js +1 -1
  56. package/src/sap/f/semantic/CopyAction.js +1 -1
  57. package/src/sap/f/semantic/DeleteAction.js +1 -1
  58. package/src/sap/f/semantic/DiscussInJamAction.js +1 -1
  59. package/src/sap/f/semantic/EditAction.js +1 -1
  60. package/src/sap/f/semantic/ExitFullScreenAction.js +1 -1
  61. package/src/sap/f/semantic/FavoriteAction.js +1 -1
  62. package/src/sap/f/semantic/FlagAction.js +1 -1
  63. package/src/sap/f/semantic/FooterMainAction.js +1 -1
  64. package/src/sap/f/semantic/FullScreenAction.js +1 -1
  65. package/src/sap/f/semantic/MainAction.js +1 -1
  66. package/src/sap/f/semantic/MessagesIndicator.js +1 -1
  67. package/src/sap/f/semantic/NegativeAction.js +1 -1
  68. package/src/sap/f/semantic/PositiveAction.js +1 -1
  69. package/src/sap/f/semantic/PrintAction.js +1 -1
  70. package/src/sap/f/semantic/SemanticButton.js +1 -1
  71. package/src/sap/f/semantic/SemanticConfiguration.js +1 -1
  72. package/src/sap/f/semantic/SemanticControl.js +1 -1
  73. package/src/sap/f/semantic/SemanticPage.js +1 -1
  74. package/src/sap/f/semantic/SemanticToggleButton.js +1 -1
  75. package/src/sap/f/semantic/SendEmailAction.js +1 -1
  76. package/src/sap/f/semantic/SendMessageAction.js +1 -1
  77. package/src/sap/f/semantic/ShareInJamAction.js +1 -1
  78. package/src/sap/f/semantic/TitleMainAction.js +1 -1
  79. package/src/sap/f/shellBar/AdditionalContentSupport.js +1 -1
  80. package/src/sap/f/shellBar/CoPilot.js +1 -1
  81. package/src/sap/f/shellBar/ControlSpacer.js +1 -1
  82. package/src/sap/f/shellBar/Search.js +1 -1
  83. package/ui5.yaml +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.f",
3
- "version": "1.116.0",
3
+ "version": "1.117.0",
4
4
  "description": "OpenUI5 UI Library sap.f",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,8 +14,8 @@
14
14
  "url": "https://github.com/SAP/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.m": "1.116.0",
18
- "@openui5/sap.ui.core": "1.116.0",
19
- "@openui5/sap.ui.layout": "1.116.0"
17
+ "@openui5/sap.m": "1.117.0",
18
+ "@openui5/sap.ui.core": "1.117.0",
19
+ "@openui5/sap.ui.layout": "1.117.0"
20
20
  }
21
21
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.116.0</version>
9
+ <version>1.117.0</version>
10
10
 
11
11
  <documentation>SAPUI5 library with Fiori controls.</documentation>
12
12
 
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @extends sap.m.Avatar
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.116.0
43
+ * @version 1.117.0
44
44
  *
45
45
  * @constructor
46
46
  * @public
@@ -98,7 +98,7 @@ sap.ui.define([
98
98
  * @extends sap.ui.core.Control
99
99
  *
100
100
  * @author SAP SE
101
- * @version 1.116.0
101
+ * @version 1.117.0
102
102
  *
103
103
  * @constructor
104
104
  * @public
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @extends sap.ui.core.Control
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.116.0
35
+ * @version 1.117.0
36
36
  *
37
37
  * @constructor
38
38
  * @public
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * This calendar appointment is used in card content of type Calendar.
22
22
  *
23
23
  * @extends sap.ui.unified.CalendarAppointment
24
- * @version 1.116.0
24
+ * @version 1.117.0
25
25
  *
26
26
  * @constructor
27
27
  * @private
@@ -43,7 +43,7 @@ sap.ui.define([
43
43
  * <code>sap.m.Toolbar</code> with <code>sap.m.Buttons</code>.
44
44
  *
45
45
  * @extends sap.ui.unified.Calendar
46
- * @version 1.116.0
46
+ * @version 1.117.0
47
47
  *
48
48
  * @constructor
49
49
  * @private
package/src/sap/f/Card.js CHANGED
@@ -71,7 +71,7 @@ sap.ui.define([
71
71
  * @extends sap.f.CardBase
72
72
  *
73
73
  * @author SAP SE
74
- * @version 1.116.0
74
+ * @version 1.117.0
75
75
  *
76
76
  * @constructor
77
77
  * @public
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @extends sap.ui.core.Control
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.116.0
40
+ * @version 1.117.0
41
41
  *
42
42
  * @constructor
43
43
  * @public
@@ -112,7 +112,7 @@ sap.ui.define([
112
112
  * @extends sap.ui.core.Control
113
113
  *
114
114
  * @author SAP SE
115
- * @version 1.116.0
115
+ * @version 1.117.0
116
116
  *
117
117
  * @constructor
118
118
  * @public
@@ -410,6 +410,7 @@ sap.ui.define([
410
410
  });
411
411
  this._oStickyHeaderObserver = null;
412
412
  this._oHeaderObserver = null;
413
+ this._oTitleObserver = null;
413
414
  this._oSubHeaderAfterRenderingDelegate = {onAfterRendering: function() {
414
415
  this._bStickySubheaderInTitleArea = false; // reset the flag as the stickySubHeader is freshly rerendered with the iconTabBar
415
416
  this._cacheDomElements();
@@ -431,6 +432,7 @@ sap.ui.define([
431
432
  this._attachTitleMouseOverHandlers();
432
433
  }
433
434
  this._attachHeaderObserver();
435
+ this._attachTitleObserver();
434
436
  this._addStickySubheaderAfterRenderingDelegate();
435
437
  this._detachScrollHandler();
436
438
  this._detachResizeHandlers();
@@ -489,6 +491,10 @@ sap.ui.define([
489
491
  this._oHeaderObserver.disconnect();
490
492
  }
491
493
 
494
+ if (this._oTitleObserver) {
495
+ this._oTitleObserver.disconnect();
496
+ }
497
+
492
498
  if (this._oStickySubheader) {
493
499
  this._oStickySubheader.removeEventDelegate(this._oSubHeaderAfterRenderingDelegate);
494
500
  }
@@ -622,7 +628,7 @@ sap.ui.define([
622
628
  };
623
629
 
624
630
  /**
625
- * Returns the <code>sap.ui.core.ScrollEnablement</code> delegate which is used with this control.
631
+ * Returns the <code>sap.ui.core.delegate.ScrollEnablement</code> delegate which is used with this control.
626
632
  *
627
633
  * @public
628
634
  * @returns {sap.ui.core.delegate.ScrollEnablement} The scroll delegate instance
@@ -2158,7 +2164,8 @@ sap.ui.define([
2158
2164
  var oTitle = this.getTitle(),
2159
2165
  oHeader = this.getHeader(),
2160
2166
  oContent = this.getContent(),
2161
- oPageChildrenAfterRenderingDelegate = {onAfterRendering: this._onChildControlAfterRendering.bind(this)};
2167
+ oCallback = this._onChildControlAfterRendering.bind(this),
2168
+ oPageChildrenAfterRenderingDelegate = {onAfterRendering: oCallback};
2162
2169
 
2163
2170
  if (exists(oTitle)) {
2164
2171
  oTitle.addEventDelegate(oPageChildrenAfterRenderingDelegate);
@@ -2229,7 +2236,7 @@ sap.ui.define([
2229
2236
  // => the header will be removed from DOM
2230
2237
  // but no afterRendering event will be fired (framework-specific behavior)
2231
2238
  // so we need to reflect the removal of the header height from now
2232
- oHeader.rerender(); // force the DOM update
2239
+ oHeader.invalidate(); // force the DOM update
2233
2240
  // update according to the latest header height
2234
2241
  this._updateTitlePositioning();
2235
2242
  }
@@ -2253,6 +2260,24 @@ sap.ui.define([
2253
2260
  }
2254
2261
  };
2255
2262
 
2263
+ /**
2264
+ * Attaches observer to the <code>DynamicPageHeader</code> visible property.
2265
+ * @private
2266
+ */
2267
+ DynamicPage.prototype._attachTitleObserver = function () {
2268
+ var oTitle = this.getTitle();
2269
+
2270
+ if (exists(oTitle) && !this._bAlreadyAttachedTitleObserver) {
2271
+ if (!this._oTitleObserver) {
2272
+ this._oTitleObserver = new ManagedObjectObserver(this._onTitleFieldChange.bind(this));
2273
+ }
2274
+
2275
+ this._oTitleObserver.observe(oTitle, {properties: ["visible"]});
2276
+
2277
+ this._bAlreadyAttachedTitleObserver = true;
2278
+ }
2279
+ };
2280
+
2256
2281
  DynamicPage.prototype._onHeaderFieldChange = function (oEvent) {
2257
2282
 
2258
2283
  if ((oEvent.type === "property") && (oEvent.name === "pinnable")) {
@@ -2263,6 +2288,15 @@ sap.ui.define([
2263
2288
  this._updateToggleHeaderVisualIndicators();
2264
2289
  };
2265
2290
 
2291
+ DynamicPage.prototype._onTitleFieldChange = function (oEvent) {
2292
+
2293
+ if ((oEvent.type === "property") && (oEvent.name === "visible")) {
2294
+ this.invalidate();
2295
+ return;
2296
+ }
2297
+
2298
+ };
2299
+
2266
2300
  /**
2267
2301
  * Attaches handlers to <code>DynamicPageTitle</code> and <DynamicPageHeader</> visual indicators` <code>press</code> events.
2268
2302
  * @private
@@ -23,7 +23,7 @@ sap.ui.define(['sap/ui/core/Element', './library'],
23
23
  * @extends sap.ui.core.Element
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.116.0
26
+ * @version 1.117.0
27
27
  *
28
28
  * @constructor
29
29
  * @public
@@ -62,7 +62,7 @@ sap.ui.define([
62
62
  * @extends sap.ui.core.Control
63
63
  *
64
64
  * @author SAP SE
65
- * @version 1.116.0
65
+ * @version 1.117.0
66
66
  *
67
67
  * @constructor
68
68
  * @public
@@ -89,7 +89,7 @@ sap.ui.define([
89
89
  * @extends sap.ui.core.Control
90
90
  *
91
91
  * @author SAP SE
92
- * @version 1.116.0
92
+ * @version 1.117.0
93
93
  *
94
94
  * @constructor
95
95
  * @public
@@ -97,7 +97,7 @@ sap.ui.define([
97
97
  *
98
98
  * @extends sap.ui.core.Control
99
99
  * @author SAP SE
100
- * @version 1.116.0
100
+ * @version 1.117.0
101
101
  *
102
102
  * @constructor
103
103
  * @public
@@ -22,7 +22,7 @@ sap.ui.define(['sap/ui/core/Element', './library'],
22
22
  * @extends sap.ui.core.Element
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.116.0
25
+ * @version 1.117.0
26
26
  * @since 1.95
27
27
  *
28
28
  * @constructor
@@ -49,7 +49,7 @@ sap.ui.define([
49
49
  *
50
50
  * For more information, see {@link sap.f.FlexibleColumnLayoutSemanticHelper#getCurrentUIState} and {@link sap.f.FlexibleColumnLayoutSemanticHelper#getNextUIState}
51
51
  *
52
- * @version 1.116.0
52
+ * @version 1.117.0
53
53
  * @param {sap.f.FlexibleColumnLayout} oFlexibleColumnLayout
54
54
  * The <code>sap.f.FlexibleColumnLayout</code> object whose state will be manipulated.
55
55
  *
@@ -171,7 +171,7 @@ sap.ui.define([
171
171
  * @see {@link sap.f.dnd.GridDropInfo}
172
172
  *
173
173
  * @author SAP SE
174
- * @version 1.116.0
174
+ * @version 1.117.0
175
175
  *
176
176
  * @extends sap.ui.core.Control
177
177
  *
@@ -21,7 +21,7 @@ sap.ui.define(['sap/ui/core/LayoutData'],
21
21
  * @see {@link topic:32d4b9c2b981425dbc374d3e9d5d0c2e Grid Controls}
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.116.0
24
+ * @version 1.117.0
25
25
  *
26
26
  * @extends sap.ui.core.LayoutData
27
27
  *
@@ -58,14 +58,14 @@ sap.ui.define([
58
58
  * Can be used to define the sizes of columns and rows for different screen sizes, by using the <code>layout</code> aggregations of <code>sap.f.GridContainer</code>.
59
59
  *
60
60
  * @author SAP SE
61
- * @version 1.116.0
61
+ * @version 1.117.0
62
62
  *
63
63
  * @extends sap.ui.base.ManagedObject
64
64
  *
65
65
  * @see {@link topic:32d4b9c2b981425dbc374d3e9d5d0c2e Grid Controls}
66
66
  *
67
67
  * @author SAP SE
68
- * @version 1.116.0
68
+ * @version 1.117.0
69
69
  *
70
70
  * @experimental Since 1.65 This class is experimental. The API may change.
71
71
  * @since 1.65
@@ -93,7 +93,7 @@ sap.ui.define([
93
93
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout MDN web docs: CSS Grid Layout}
94
94
  *
95
95
  * @author SAP SE
96
- * @version 1.116.0
96
+ * @version 1.117.0
97
97
  *
98
98
  * @extends sap.m.ListBase
99
99
  * @implements sap.ui.layout.cssgrid.IGridConfigurable
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.m.ListItemBase
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.116.0
27
+ * @version 1.117.0
28
28
  *
29
29
  * @since 1.70
30
30
  * @constructor
@@ -8,7 +8,11 @@
8
8
  * Code other than the OpenUI5 libraries must not introduce dependencies to this module.
9
9
  */
10
10
 
11
- sap.ui.define([], function () {
11
+ sap.ui.define([
12
+ "sap/ui/core/Configuration"
13
+ ], function (
14
+ Configuration
15
+ ) {
12
16
  "use strict";
13
17
 
14
18
  return {
@@ -21,18 +25,19 @@ sap.ui.define([], function () {
21
25
  * @returns {Array.<Array.<HTMLElement>>} The matrix
22
26
  */
23
27
  create: function (oGridDomRef, aItemsDomRefs) {
24
- var mGridStyles = window.getComputedStyle(oGridDomRef);
28
+ const mGridStyles = window.getComputedStyle(oGridDomRef);
25
29
 
26
- var oLayoutSizes = {
30
+ const oLayoutSizes = {
27
31
  columns: mGridStyles.gridTemplateColumns.split(/\s+/),
28
32
  rows: mGridStyles.gridTemplateRows.split(/\s+/),
29
33
  rowGap: parseFloat(mGridStyles.rowGap),
30
34
  columnGap: parseFloat(mGridStyles.columnGap),
31
35
  paddingTop: parseFloat(mGridStyles.paddingTop),
32
- paddingLeft: parseFloat(mGridStyles.paddingLeft)
36
+ paddingLeft: parseFloat(mGridStyles.paddingLeft),
37
+ paddingRight: parseFloat(mGridStyles.paddingRight)
33
38
  };
34
39
 
35
- var aMatrix = Array.from(
40
+ const aMatrix = Array.from(
36
41
  new Array(oLayoutSizes.rows.length),
37
42
  function () {
38
43
  return new Array(oLayoutSizes.columns.length).fill(this.EMPTY_CELL);
@@ -40,7 +45,7 @@ sap.ui.define([], function () {
40
45
  );
41
46
 
42
47
  aItemsDomRefs.forEach(function (oItemDomRef) {
43
- var oPos = this._getPosition(oGridDomRef, oItemDomRef, oLayoutSizes);
48
+ const oPos = this._getPosition(oGridDomRef, oItemDomRef, oLayoutSizes);
44
49
 
45
50
  this._addToMatrix(aMatrix, oPos, oItemDomRef);
46
51
  }.bind(this));
@@ -49,10 +54,10 @@ sap.ui.define([], function () {
49
54
  },
50
55
 
51
56
  _getPosition: function (oGridDomRef, oItemDomRef, oLayoutSizes) {
52
- var oGridRect = oGridDomRef.getBoundingClientRect(),
53
- oItemRect = oItemDomRef.getBoundingClientRect(),
54
- oGridRow = this._getGridRow(oGridRect, oItemRect, oLayoutSizes),
55
- oGridCol = this._getGridCol(oGridRect, oItemRect, oLayoutSizes);
57
+ const oGridRect = oGridDomRef.getBoundingClientRect();
58
+ const oItemRect = oItemDomRef.getBoundingClientRect();
59
+ const oGridRow = this._getGridRow(oGridRect, oItemRect, oLayoutSizes);
60
+ const oGridCol = this._getGridCol(oGridRect, oItemRect, oLayoutSizes);
56
61
 
57
62
  return {
58
63
  xFrom: oGridRow.start,
@@ -63,14 +68,13 @@ sap.ui.define([], function () {
63
68
  },
64
69
 
65
70
  _getGridRow: function (oGridRect, oItemRect, oLayoutSizes) {
66
- var iStartRow = -1,
71
+ let iStartRow = -1,
67
72
  iEndRow = 0,
68
- fSumRows = 0,
69
- i,
70
- fTopOffsetInGrid = oItemRect.top - oGridRect.top - oLayoutSizes.paddingTop,
71
- fBottomOffsetInGrid = fTopOffsetInGrid + oItemRect.height;
73
+ fSumRows = 0;
74
+ const fTopOffsetInGrid = oItemRect.top - oGridRect.top - oLayoutSizes.paddingTop;
75
+ const fBottomOffsetInGrid = fTopOffsetInGrid + oItemRect.height;
72
76
 
73
- for (i = 0; i < oLayoutSizes.rows.length; i++) {
77
+ for (let i = 0; i < oLayoutSizes.rows.length; i++) {
74
78
  fSumRows += parseFloat(oLayoutSizes.rows[i]);
75
79
 
76
80
  if (iStartRow === -1 && fTopOffsetInGrid < fSumRows) {
@@ -92,25 +96,51 @@ sap.ui.define([], function () {
92
96
  },
93
97
 
94
98
  _getGridCol: function (oGridRect, oItemRect, oLayoutSizes) {
95
- var iStartCol = -1,
96
- iEndCol = 0,
99
+ let iStartCol,
100
+ iEndCol,
97
101
  fSumCols = 0,
98
- i,
99
- fLeftOffsetInGrid = oItemRect.left - oGridRect.left - oLayoutSizes.paddingLeft,
100
- fRightOffsetInGrid = fLeftOffsetInGrid + oItemRect.width;
102
+ fLeftOffsetInGrid,
103
+ fRightOffsetInGrid;
104
+
105
+ if (Configuration.getRTL()) {
106
+ iEndCol = -1;
107
+ iStartCol = oLayoutSizes.columns.length - 1;
108
+ fRightOffsetInGrid = oGridRect.right - oLayoutSizes.paddingRight - oItemRect.right;
109
+ fLeftOffsetInGrid = fRightOffsetInGrid + oItemRect.width;
110
+
111
+ for (let i = oLayoutSizes.columns.length; i > 0; i--) {
112
+ fSumCols += parseFloat(oLayoutSizes.columns[i - 1]);
101
113
 
102
- for (i = 0; i < oLayoutSizes.columns.length; i++) {
103
- fSumCols += parseFloat(oLayoutSizes.columns[i]);
114
+ if (iEndCol === -1 && fRightOffsetInGrid < fSumCols) {
115
+ iEndCol = i;
116
+ }
104
117
 
105
- if (iStartCol === -1 && fLeftOffsetInGrid < fSumCols) {
106
- iStartCol = i;
118
+ fSumCols += oLayoutSizes.columnGap;
119
+
120
+ if (Math.round(fLeftOffsetInGrid) <= Math.round(fSumCols)) {
121
+ iStartCol = i - 1;
122
+ break;
123
+ }
107
124
  }
125
+ } else {
126
+ iStartCol = -1;
127
+ iEndCol = 0;
128
+ fLeftOffsetInGrid = oItemRect.left - oGridRect.left - oLayoutSizes.paddingLeft;
129
+ fRightOffsetInGrid = fLeftOffsetInGrid + oItemRect.width;
108
130
 
109
- fSumCols += oLayoutSizes.columnGap;
131
+ for (let i = 0; i < oLayoutSizes.columns.length; i++) {
132
+ fSumCols += parseFloat(oLayoutSizes.columns[i]);
110
133
 
111
- if (Math.round(fRightOffsetInGrid) <= Math.round(fSumCols)) {
112
- iEndCol = i + 1;
113
- break;
134
+ if (iStartCol === -1 && fLeftOffsetInGrid < fSumCols) {
135
+ iStartCol = i;
136
+ }
137
+
138
+ fSumCols += oLayoutSizes.columnGap;
139
+
140
+ if (Math.round(fRightOffsetInGrid) <= Math.round(fSumCols)) {
141
+ iEndCol = i + 1;
142
+ break;
143
+ }
114
144
  }
115
145
  }
116
146
 
@@ -121,10 +151,8 @@ sap.ui.define([], function () {
121
151
  },
122
152
 
123
153
  _addToMatrix: function (aMatrix, oPosition, oDomRef) {
124
- var iRow, iCol;
125
-
126
- for (iRow = oPosition.xFrom; iRow < oPosition.xTo; iRow++) {
127
- for (iCol = oPosition.yFrom; iCol < oPosition.yTo; iCol++) {
154
+ for (let iRow = oPosition.xFrom; iRow < oPosition.xTo; iRow++) {
155
+ for (let iCol = oPosition.yFrom; iCol < oPosition.yTo; iCol++) {
128
156
  aMatrix[iRow][iCol] = oDomRef;
129
157
  }
130
158
  }
@@ -56,7 +56,7 @@ sap.ui.define([
56
56
  * @extends sap.m.IllustratedMessage
57
57
  *
58
58
  * @author SAP SE
59
- * @version 1.116.0
59
+ * @version 1.117.0
60
60
  *
61
61
  * @constructor
62
62
  * @public
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.m.Illustration
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.116.0
33
+ * @version 1.117.0
34
34
  *
35
35
  * @constructor
36
36
  * @public
@@ -22,7 +22,7 @@ sap.ui.define(['sap/m/PlanningCalendarLegend', 'sap/ui/unified/CalendarLegendIte
22
22
  * @extends sap.m.PlanningCalendarLegend
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.116.0
25
+ * @version 1.117.0
26
26
  *
27
27
  * @constructor
28
28
  * @private
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.core.Control
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.116.0
37
+ * @version 1.117.0
38
38
  *
39
39
  * @constructor
40
40
  * @public
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @extends sap.ui.core.Control
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.116.0
43
+ * @version 1.117.0
44
44
  *
45
45
  * @constructor
46
46
  * @public
@@ -23,7 +23,7 @@ sap.ui.define(['sap/ui/core/Element', 'sap/ui/base/ManagedObjectObserver', './sh
23
23
  * @extends sap.ui.core.Element
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.116.0
26
+ * @version 1.117.0
27
27
  *
28
28
  * @constructor
29
29
  * @public
@@ -56,7 +56,7 @@ function(
56
56
  * @implements sap.f.IShellBar, sap.m.IBar, sap.tnt.IToolHeader
57
57
  *
58
58
  * @author SAP SE
59
- * @version 1.116.0
59
+ * @version 1.117.0
60
60
  *
61
61
  * @constructor
62
62
  * @public
@@ -142,14 +142,14 @@ sap.ui.define([
142
142
  * <li>[End] - set the expanded side panel width to the maximum value defined in <code>sidePanelMaxWidth</code> property</li>
143
143
  * <li>[Enter] - set the expanded side panel width to the default value defined in <code>sidePanelWidth</code> property</li>
144
144
  * <li>[Shift]+[F10] or [Context menu] - show the resize context menu</li>
145
- * <li>[Arrow Left] / [Arrow Right] - increase/decrease the width of the expanded side panel with the regular step</li>
146
- * <li>[Shift] + [Arrow Left] / [Arrow Right] - increase/decrease the width of the expanded side panel with the larger step</li>
145
+ * <li>[Arrow Left] or [Arrow Up] / [Arrow Right] or [Arrow Down] - increase/decrease the width of the expanded side panel with the regular step</li>
146
+ * <li>[Shift] + [Arrow Left] or [Shift] + [Arrow Up] / [Shift] + [Arrow Right] or [Shift] + [Arrow Down] - increase/decrease the width of the expanded side panel with the larger step</li>
147
147
  * </ul>
148
148
  *
149
149
  * @extends sap.ui.core.Control
150
150
  *
151
151
  * @author SAP SE
152
- * @version 1.116.0
152
+ * @version 1.117.0
153
153
  *
154
154
  * @constructor
155
155
  * @public
@@ -415,7 +415,7 @@ sap.ui.define([
415
415
  SidePanel.prototype.onBeforeRendering = function() {
416
416
  var oExpandCollapseButton = this.getAggregation("_arrowButton"),
417
417
  bActionBarExpanded = this.getActionBarExpanded(),
418
- sTooltip = bActionBarExpanded ? oResourceBundle.getText("SIDEPANEL_COLLAPSE_BUTTON_TEXT") : oResourceBundle.getText("SIDEPANEL_EXPAND_BUTTON_TEXT"),
418
+ sTooltip = oResourceBundle.getText("SIDEPANEL_EXPAND_BUTTON_TEXT") + "/" + oResourceBundle.getText("SIDEPANEL_COLLAPSE_BUTTON_TEXT"),
419
419
  sNextArrow;
420
420
 
421
421
  if (SidePanelPosition.Right === this.getSidePanelPosition()) {
@@ -530,9 +530,11 @@ sap.ui.define([
530
530
  this._setSidePanelResizePosition(SIDE_PANEL_POSITION_MIN_WIDTH);
531
531
  break;
532
532
  case KeyCodes.ARROW_LEFT:
533
+ case KeyCodes.ARROW_UP:
533
534
  this._moveSidePanelResizePositionWith(oEvent.shiftKey ? this.getSidePanelResizeLargerStep() : this.getSidePanelResizeStep());
534
535
  break;
535
536
  case KeyCodes.ARROW_RIGHT:
537
+ case KeyCodes.ARROW_DOWN:
536
538
  this._moveSidePanelResizePositionWith(oEvent.shiftKey ? -this.getSidePanelResizeLargerStep() : -this.getSidePanelResizeStep());
537
539
  break;
538
540
  case KeyCodes.F10:
@@ -668,7 +670,17 @@ sap.ui.define([
668
670
  };
669
671
 
670
672
  SidePanel.prototype._focusMain = function() {
671
- this._oPreviousFocusedMainElement && this._oPreviousFocusedMainElement.focus();
673
+ if (this._oPreviousFocusedMainElement) {
674
+ this._oPreviousFocusedMainElement.focus();
675
+ } else {
676
+ var oMainContent = this.getMainContent();
677
+ for (let i = 0; i < oMainContent.length; ++i) {
678
+ if (oMainContent[i].isFocusable()) {
679
+ oMainContent[i].focus();
680
+ break;
681
+ }
682
+ }
683
+ }
672
684
  };
673
685
 
674
686
  SidePanel.prototype._focusSideContent = function() {
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @extends sap.ui.core.Item
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.116.0
30
+ * @version 1.117.0
31
31
  *
32
32
  * @constructor
33
33
  * @public
@@ -225,7 +225,7 @@ sap.ui.define([
225
225
  oRm.attr("tabindex", 0);
226
226
  oRm.attr("role", "separator");
227
227
  oRm.attr("aria-orientation", "vertical");
228
- oRm.attr("aria-roledescription", "splitter separator");
228
+ oRm.attr("aria-roledescription", "splitter");
229
229
  oRm.attr("title", oControl._getSplitterTitle());
230
230
  oRm.openEnd();
231
231
 
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @abstract
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.116.0
41
+ * @version 1.117.0
42
42
  *
43
43
  * @constructor
44
44
  * @public
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  * @implements sap.f.cards.IHeader
47
47
  *
48
48
  * @author SAP SE
49
- * @version 1.116.0
49
+ * @version 1.117.0
50
50
  *
51
51
  * @constructor
52
52
  * @public
@@ -238,6 +238,14 @@ sap.ui.define([
238
238
  oAvatar.setBackgroundColor(this.getIconBackgroundColor());
239
239
  };
240
240
 
241
+ /**
242
+ * @protected
243
+ * @returns {boolean} If the icon should be shown.
244
+ */
245
+ Header.prototype.shouldShowIcon = function () {
246
+ return this.getIconVisible();
247
+ };
248
+
241
249
  /**
242
250
  * This method is a hook for the RenderManager that gets called
243
251
  * during the rendering of child Controls. It allows to add,