@openui5/sap.uxap 1.102.1 → 1.103.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.uxap",
3
- "version": "1.102.1",
3
+ "version": "1.103.1",
4
4
  "description": "OpenUI5 UI Library sap.uxap",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,9 +14,9 @@
14
14
  "url": "https://github.com/SAP/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.f": "1.102.1",
18
- "@openui5/sap.m": "1.102.1",
19
- "@openui5/sap.ui.core": "1.102.1",
20
- "@openui5/sap.ui.layout": "1.102.1"
17
+ "@openui5/sap.f": "1.103.1",
18
+ "@openui5/sap.m": "1.103.1",
19
+ "@openui5/sap.ui.core": "1.103.1",
20
+ "@openui5/sap.ui.layout": "1.103.1"
21
21
  }
22
22
  }
@@ -3,7 +3,7 @@
3
3
 
4
4
  <name>sap.uxap</name>
5
5
  <vendor>SAP SE</vendor>
6
- <version>1.102.1</version>
6
+ <version>1.103.1</version>
7
7
  <copyright>OpenUI5
8
8
  * (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.
9
9
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
@@ -489,7 +489,7 @@ sap.ui.define([
489
489
  AnchorBar.prototype._applyHierarchicalSelectMode = function () {
490
490
 
491
491
  if (this._sHierarchicalSelectMode === AnchorBarRenderer._AnchorBarHierarchicalSelectMode.Icon) {
492
- this._bHideScrollContainer = false;
492
+ this.$().find(".sapUxAPAnchorBarScrollContainer").show();
493
493
 
494
494
  this._oSelect.setWidth("auto");
495
495
  this._oSelect.setAutoAdjustWidth(true);
@@ -497,7 +497,7 @@ sap.ui.define([
497
497
  this._computeBarSectionsInfo();
498
498
 
499
499
  } else {
500
- this._bHideScrollContainer = true;
500
+ this.$().find(".sapUxAPAnchorBarScrollContainer").hide();
501
501
 
502
502
  this._oSelect.setWidth("100%");
503
503
  this._oSelect.setAutoAdjustWidth(false);
@@ -505,8 +505,6 @@ sap.ui.define([
505
505
  }
506
506
 
507
507
  this.$().toggleClass("sapUxAPAnchorBarOverflow", this._sHierarchicalSelectMode === AnchorBarRenderer._AnchorBarHierarchicalSelectMode.Icon);
508
-
509
- this.invalidate();
510
508
  };
511
509
 
512
510
  AnchorBar.prototype._adjustSize = function (oEvent) {
@@ -27,9 +27,6 @@ sap.ui.define(["sap/m/ToolbarRenderer", "sap/ui/core/Renderer", "sap/m/BarInPage
27
27
  rm.renderControl(oToolbar._getScrollArrowLeft());
28
28
 
29
29
  rm.openStart("div", oToolbar.getId() + "-scrollContainer");
30
- if (oToolbar._bHideScrollContainer) {
31
- rm.style("display", "none");
32
- }
33
30
  // ARIA attributes
34
31
  rm.class("sapUxAPAnchorBarScrollContainer")
35
32
  .openEnd();
@@ -40,9 +37,7 @@ sap.ui.define(["sap/m/ToolbarRenderer", "sap/ui/core/Renderer", "sap/m/BarInPage
40
37
  .attr("aria-label", sap.ui.getCore().getLibraryResourceBundle("sap.uxap").getText("ANCHOR_BAR_ARIA_LABEL"))
41
38
  .openEnd();
42
39
 
43
- if (!oToolbar._bHideScrollContainer) {
44
- AnchorBarRenderer.renderBarItems(rm, oToolbar);
45
- }
40
+ AnchorBarRenderer.renderBarItems(rm, oToolbar);
46
41
 
47
42
  rm.close("div");
48
43
 
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  *
22
22
  * @class
23
23
  * @author SAP SE
24
- * @version 1.102.1
24
+ * @version 1.103.1
25
25
  * @since 1.26
26
26
  * @alias sap.uxap.BlockBaseMetadata
27
27
  * @extends sap.ui.core.ElementMetadata
@@ -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.102.1
25
+ * @version 1.103.1
26
26
  *
27
27
  * @constructor
28
28
  * @public
@@ -41,7 +41,7 @@ sap.ui.define([
41
41
  * @implements sap.uxap.IHeaderContent
42
42
  *
43
43
  * @author SAP SE
44
- * @version 1.102.1
44
+ * @version 1.103.1
45
45
  *
46
46
  * @constructor
47
47
  * @public
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @implements sap.uxap.IHeaderTitle
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.102.1
45
+ * @version 1.103.1
46
46
  *
47
47
  * @constructor
48
48
  * @public
@@ -21,7 +21,6 @@ sap.ui.define([
21
21
  "./LazyLoading",
22
22
  "./ObjectPageLayoutABHelper",
23
23
  "./ThrottledTaskHelper",
24
- "sap/m/ScrollBar",
25
24
  "sap/ui/core/library",
26
25
  "./library",
27
26
  "./ObjectPageLayoutRenderer",
@@ -51,7 +50,6 @@ sap.ui.define([
51
50
  LazyLoading,
52
51
  ABHelper,
53
52
  ThrottledTask,
54
- ScrollBar,
55
53
  coreLibrary,
56
54
  library,
57
55
  ObjectPageLayoutRenderer,
@@ -411,9 +409,7 @@ sap.ui.define([
411
409
  /**
412
410
  * Internal aggregation to hold the reference to the IHeaderContent implementation.
413
411
  */
414
- _headerContent: {type: "sap.uxap.IHeaderContent", multiple: false, visibility: "hidden"},
415
-
416
- _customScrollBar: {type: "sap.ui.core.Control", multiple: false, visibility: "hidden"}
412
+ _headerContent: {type: "sap.uxap.IHeaderContent", multiple: false, visibility: "hidden"}
417
413
  },
418
414
  events: {
419
415
 
@@ -682,6 +678,7 @@ sap.ui.define([
682
678
  bPinnable;
683
679
 
684
680
  this._deregisterScreenSizeListener();
681
+ this._deregisterTitleSizeListener();
685
682
 
686
683
  if (this._oLazyLoading) {
687
684
  this._oLazyLoading.destroy();
@@ -907,6 +904,7 @@ sap.ui.define([
907
904
  this._moveHeaderToContentArea();
908
905
  this._scrollTo(0, 0, 0);
909
906
  this._bHeaderExpanded = true;
907
+ this._adjustHeaderHeights(); // call synchonously (before resize notification) to avoid visual flickering
910
908
  this._updateToggleHeaderVisualIndicators();
911
909
 
912
910
  if (this._isHeaderPinnable()) {
@@ -1012,7 +1010,7 @@ sap.ui.define([
1012
1010
  /**
1013
1011
  * Retrieves the list of sections to render initially
1014
1012
  * (the list includes the sections to be loaded lazily, as these are empty in the beginning, only their skeleton will be rendered)
1015
- * @returns the sections list
1013
+ * @returns {sap.uxap.ObjectPageSection[]} the sections list
1016
1014
  */
1017
1015
  ObjectPageLayout.prototype._getSectionsToRender = function () {
1018
1016
  this._adjustSelectedSectionByUXRules();
@@ -1057,7 +1055,7 @@ sap.ui.define([
1057
1055
  * (1) the currently <code>selectedSection</code>
1058
1056
  * (2) the static configuration for the count of items to preload in <code>sap.uxap._helpers.LazyLoading</code>
1059
1057
  *
1060
- * @returns the subSections list
1058
+ * @returns {sap.uxap.ObjectPageSubSection[]} the subSections list
1061
1059
  */
1062
1060
  ObjectPageLayout.prototype._getSectionsToPreloadOnBeforeFirstRendering = function () {
1063
1061
  var aSectionBases,
@@ -1131,12 +1129,13 @@ sap.ui.define([
1131
1129
 
1132
1130
  this._bInvalidatedAndNotRerendered = false;
1133
1131
 
1134
- this._iResizeId = ResizeHandler.register(this, this._onUpdateScreenSize.bind(this));
1135
-
1136
1132
  this._ensureCorrectParentHeight();
1137
1133
 
1138
1134
  this._cacheDomElements();
1139
1135
 
1136
+ this._iResizeId = ResizeHandler.register(this, this._onUpdateScreenSize.bind(this));
1137
+ this._iTitleResizeId = ResizeHandler.register(this._$titleArea.get(0), this._adjustTitlePositioning.bind(this));
1138
+
1140
1139
  if (this._hasDynamicTitle()) {
1141
1140
  this.addStyleClass("sapUxAPObjectPageHasDynamicTitle");
1142
1141
  }
@@ -1207,10 +1206,6 @@ sap.ui.define([
1207
1206
  // (to avoid any scrollbar appearing even for an instance while we snap/unsnap header)
1208
1207
  this._toggleScrolling(!this._bAllContentFitsContainer);
1209
1208
 
1210
- if (Device.system.desktop) {
1211
- this._$opWrapper.on("scroll.OPL", this.onWrapperScroll.bind(this));
1212
- }
1213
-
1214
1209
  this._registerOnContentResize();
1215
1210
 
1216
1211
  this.getHeaderTitle() && this._shiftHeaderTitle();
@@ -1333,46 +1328,6 @@ sap.ui.define([
1333
1328
  this._oFirstVisibleSubSection = null;
1334
1329
  };
1335
1330
 
1336
- ObjectPageLayout.prototype._getCustomScrollBar = function () {
1337
-
1338
- if (!this.getAggregation("_customScrollBar")) {
1339
- var oVSB = new ScrollBar(this.getId() + "-vertSB", {
1340
- scrollPosition: 0,
1341
- scroll: this.onCustomScrollerScroll.bind(this),
1342
- visible: false
1343
- });
1344
- this.setAggregation("_customScrollBar", oVSB, true);
1345
- }
1346
-
1347
- return this.getAggregation("_customScrollBar");
1348
- };
1349
-
1350
- ObjectPageLayout.prototype.onWrapperScroll = function (oEvent) {
1351
- var iScrollTop = Math.max(oEvent.target.scrollTop, 0);
1352
-
1353
- if (this._getCustomScrollBar()) {
1354
- if (this.allowCustomScroll === true) {
1355
- this.allowCustomScroll = false;
1356
- return;
1357
- }
1358
- this.allowInnerDiv = true;
1359
-
1360
- this._getCustomScrollBar().setScrollPosition(iScrollTop);
1361
- }
1362
- };
1363
-
1364
- ObjectPageLayout.prototype.onCustomScrollerScroll = function (oEvent) {
1365
- var iScrollTop = Math.max(this._getCustomScrollBar().getScrollPosition(), 0); // top of the visible page
1366
-
1367
- if (this.allowInnerDiv === true) {
1368
- this.allowInnerDiv = false;
1369
- return;
1370
- }
1371
- this.allowCustomScroll = true;
1372
-
1373
- jQuery(this._$opWrapper).scrollTop(iScrollTop);
1374
- };
1375
-
1376
1331
  ObjectPageLayout.prototype.setShowOnlyHighImportance = function (bValue) {
1377
1332
  var bOldValue = this.getShowOnlyHighImportance();
1378
1333
 
@@ -1420,43 +1375,33 @@ sap.ui.define([
1420
1375
  };
1421
1376
 
1422
1377
  /**
1423
- * Callback for the end of the scroll triggered from <code>scrollToElement</code>
1424
- * of <code>sap.ui.core.delegate.ScrollEnablement</code>.
1378
+ * Offsets to the required scroll position.
1379
+ * The offset is the offset of the scroll container from the top of the content container.
1425
1380
  *
1426
- * Required for Safari and IE11 (where there is no browser automatic scroll adjustment,
1427
- * see <code>overflow-anchor</code> CSS property).
1428
- *
1429
- * The execution of <code>scrollToElement</code> changes the current scroll position,
1430
- * so we check if the new scroll position entails subsequent change of the scroll
1431
- * container of our page(namely: snapping of the header, which involves removal
1432
- * of the anchorBar from the top of the scroll container and placing it
1433
- * in the title area above the scroll container instead).
1434
- *
1435
- * If such a change (namely, removal of the anchorBar from the top of the scroll container)
1436
- * should occur, then the content bellow the removed anchorBar will became offset with X pixels,
1437
- * where X is the anchorBar height => the element [provided to <code>scrollToElement </code>]
1438
- * will be misplaced as a result.
1439
- *
1440
- * Therefore here we synchronously call the listener to the "scroll" event to check if
1441
- * it entails the above snapping and subsequent misplacement => if it entails it,
1442
- * then we adjust back the scroll position to correct the misplacement of the scrolled element.
1381
+ * This is required because <code>sap.ui.code>ScrollEnablement.prototype.scrollToElement</code>
1382
+ * scrolls the element to the very top of the scroll container, regardless of the scroll container top-padding.
1443
1383
  *
1444
1384
  * @private
1445
1385
  */
1446
1386
  ObjectPageLayout.prototype._onAfterScrollToElement = function () {
1447
1387
  var iScrollTop = this._$opWrapper.scrollTop(),
1448
- bStickyAnchorBarBefore = this._bStickyAnchorBar;
1388
+ bStickyAnchorBarBefore = this._bStickyAnchorBar,
1389
+ iOffset;
1449
1390
 
1450
1391
  // synchronously call the listener for the "scroll" event, to trigger any pending toggling of the header
1451
1392
  this._onScroll({ target: { scrollTop: iScrollTop}});
1452
1393
 
1453
- // if the anchorBar was sticked (removed from the topmost part of the scrollable area) =>
1454
- // all elements bellow it became offset with X pixels, where X is the anchorBar height =>
1455
- // the element (target of <code>scrollToElement</code>) was offset respectively =>
1456
- // adjust the scroll position to ensure the element is back visible (outside scroll overflow)
1394
+ // the <code>this._$contentContainer</code> is offset from the top of the scroll container
1395
+ // with padding, in order to make space for the elements in the title area
1396
+ iOffset = this._$contentContainer.get(0).offsetTop;
1397
+
1457
1398
  if (this._bStickyAnchorBar && !bStickyAnchorBarBefore && this._$opWrapper.scrollTop() === iScrollTop) {
1458
- this._$opWrapper.scrollTop(iScrollTop - this.iAnchorBarHeight);
1399
+ // the offset in sticky mode is different from the offset in expanded mode
1400
+ // where the difference is obtained from <code>this._getTitleHeightDelta()</code>
1401
+ iOffset -= this._getTitleHeightDelta();
1459
1402
  }
1403
+
1404
+ this._$opWrapper.scrollTop(iScrollTop - iOffset);
1460
1405
  };
1461
1406
 
1462
1407
  /**
@@ -2201,8 +2146,6 @@ sap.ui.define([
2201
2146
 
2202
2147
  this._preloadSectionsOnBeforeScroll(oSection);
2203
2148
 
2204
- this.getHeaderTitle() && this._shiftHeaderTitle();
2205
-
2206
2149
  iScrollTo += iOffset;
2207
2150
 
2208
2151
  if (!this._bStickyAnchorBar && this._shouldSnapHeaderOnScroll(iScrollTo)) {
@@ -2289,7 +2232,7 @@ sap.ui.define([
2289
2232
  * @param {object} oTargetSection the section
2290
2233
  * @private
2291
2234
  */
2292
- ObjectPageLayout.prototype._preloadSectionsOnBeforeScroll = function (oTargetSection) {
2235
+ ObjectPageLayout.prototype._preloadSectionsOnBeforeScroll = function (oTargetSection) {
2293
2236
 
2294
2237
  var sId = oTargetSection.getId(),
2295
2238
  aToLoad;
@@ -2308,22 +2251,28 @@ sap.ui.define([
2308
2251
  //on desktop we delay the call to have the preload done during the scrolling animation
2309
2252
  setTimeout(function () {
2310
2253
  this._connectModelsForSections(aToLoad);
2254
+
2255
+ this._fireSubSectionEnteredViewPortEvent(aToLoad);
2311
2256
  }.bind(this), 50);
2312
2257
  } else {
2313
2258
  //on device, do the preload first then scroll.
2314
2259
  //doing anything during the scrolling animation may
2315
2260
  //trouble animation and lazy loading on slow devices.
2316
2261
  this._connectModelsForSections(aToLoad);
2317
- }
2318
2262
 
2319
- aToLoad.forEach(function (subSection) {
2320
- this.fireEvent("subSectionEnteredViewPort", {
2321
- subSection: subSection
2322
- });
2323
- }, this);
2263
+ this._fireSubSectionEnteredViewPortEvent(aToLoad);
2264
+ }
2324
2265
  }
2325
2266
  };
2326
2267
 
2268
+ ObjectPageLayout.prototype._fireSubSectionEnteredViewPortEvent = function (aToLoad) {
2269
+ aToLoad.forEach(function (oSubSection) {
2270
+ this.fireEvent("subSectionEnteredViewPort", {
2271
+ subSection: oSubSection
2272
+ });
2273
+ }, this);
2274
+ };
2275
+
2327
2276
  /**
2328
2277
  * Returns the UI5 ID of the Section that is currently being scrolled.
2329
2278
  *
@@ -2632,7 +2581,7 @@ sap.ui.define([
2632
2581
  });
2633
2582
  }
2634
2583
 
2635
- this._updateCustomScrollerHeight(bStickyTitleMode);
2584
+ this._adjustTitlePositioning();
2636
2585
 
2637
2586
  this._setSectionInfoIsDirty(false);
2638
2587
 
@@ -2678,27 +2627,6 @@ sap.ui.define([
2678
2627
  return iSectionsContainerHeight + "px";
2679
2628
  };
2680
2629
 
2681
- ObjectPageLayout.prototype._updateCustomScrollerHeight = function(bRequiresSnap) {
2682
-
2683
- if (Device.system.desktop && this.getAggregation("_customScrollBar")) {
2684
-
2685
- // update content size
2686
- var iScrollableContentSize = this._computeScrollableContentSize(bRequiresSnap);
2687
- iScrollableContentSize += this._getStickyAreaHeight(bRequiresSnap);
2688
- this._getCustomScrollBar().setContentSize(iScrollableContentSize + "px");
2689
-
2690
-
2691
- // update visibility
2692
- var bShouldBeVisible = (iScrollableContentSize > Math.ceil(this.iScreenHeight)),
2693
- bVisibilityChange = (bShouldBeVisible !== this._getCustomScrollBar().getVisible());
2694
-
2695
- if (bVisibilityChange) {
2696
- this._getCustomScrollBar().setVisible(bShouldBeVisible);
2697
- this.getHeaderTitle() && this._shiftHeaderTitle();
2698
- }
2699
- }
2700
- };
2701
-
2702
2630
  ObjectPageLayout.prototype._computeScrollableContentSize = function(bShouldStick) {
2703
2631
 
2704
2632
  var iScrollableContentHeight = 0;
@@ -3004,6 +2932,34 @@ sap.ui.define([
3004
2932
  || (this._$contentContainer.length && this._$contentContainer.get(0).offsetHeight !== this.iContentHeight);
3005
2933
  };
3006
2934
 
2935
+ ObjectPageLayout.prototype._adjustTitlePositioning = function (oEvent) {
2936
+ if (!this._$titleArea.length || !this._$opWrapper.length) {
2937
+ return;
2938
+ }
2939
+
2940
+ var oWrapperElement = this._$opWrapper.get(0),
2941
+ oTitleElement = this._$titleArea.get(0),
2942
+ iTitleHeight = oTitleElement.getBoundingClientRect().height,
2943
+ iTitleWidth = oTitleElement.getBoundingClientRect().width;
2944
+
2945
+ // the top area of the scroll container is reserved for showing the title element,
2946
+ // (where the title element is positioned absolutely on top of the scroll container),
2947
+ // therefore
2948
+
2949
+ // (1) add top padding for the area underneath the title element
2950
+ // so that the title does not overlap the content of the scroll container
2951
+ oWrapperElement.style.paddingTop = iTitleHeight + "px";
2952
+
2953
+ // (2) also make the area underneath the title invisible (using clip-path)
2954
+ // to allow usage of *transparent background* of the title element
2955
+ // (otherwise content from the scroll *overflow* will show underneath the transparent title element)
2956
+ oWrapperElement.style.clipPath = 'polygon(0px ' + iTitleHeight + 'px, '
2957
+ + Math.floor(iTitleWidth) + 'px ' + iTitleHeight + 'px, '
2958
+ + Math.floor(iTitleWidth) + 'px 0, 100% 0, 100% 100%, 0 100%)';
2959
+
2960
+ this.getHeaderTitle() && this._shiftHeaderTitle();
2961
+ };
2962
+
3007
2963
  /**
3008
2964
  * called when the screen is resize by users. Updates the screen height
3009
2965
  * @param oEvent
@@ -3146,7 +3102,7 @@ sap.ui.define([
3146
3102
  var iReachableScrollTop;
3147
3103
  iExtraSpaceLength = iExtraSpaceLength || 0;
3148
3104
 
3149
- iReachableScrollTop = this._oScrollContainerLastState.iScrollableContentLength + iExtraSpaceLength - this._oScrollContainerLastState.iScrollableViewportHeight;
3105
+ iReachableScrollTop = this._oScrollContainerLastState.iScrollableContentLength + iExtraSpaceLength + this._$contentContainer.get(0).offsetTop - this._oScrollContainerLastState.iScrollableViewportHeight;
3150
3106
  return iReachableScrollTop >= oRequiredScrollTop;
3151
3107
  };
3152
3108
 
@@ -3172,6 +3128,17 @@ sap.ui.define([
3172
3128
  }
3173
3129
  };
3174
3130
 
3131
+ /**
3132
+ * removes listener for title-area resize
3133
+ * @private
3134
+ */
3135
+ ObjectPageLayout.prototype._deregisterTitleSizeListener = function () {
3136
+ if (this._iTitleResizeId) {
3137
+ ResizeHandler.deregister(this._iTitleResizeId);
3138
+ this._iTitleResizeId = null;
3139
+ }
3140
+ };
3141
+
3175
3142
  /**
3176
3143
  * called when the user scrolls on the page
3177
3144
  * @param oEvent
@@ -3785,6 +3752,7 @@ sap.ui.define([
3785
3752
  }
3786
3753
 
3787
3754
  this._adjustHeaderBackgroundSize();
3755
+ this._adjustTitlePositioning();
3788
3756
 
3789
3757
  Log.info("ObjectPageLayout :: adjustHeaderHeight", "headerTitleHeight: " + this.iHeaderTitleHeight + " - headerTitleStickiedHeight: " + this.iHeaderTitleHeightStickied + " - headerContentHeight: " + this.iHeaderContentHeight);
3790
3758
  } else {
@@ -3892,6 +3860,7 @@ sap.ui.define([
3892
3860
  * Retrieve the current header design that was defined in the headerTitle if available
3893
3861
  *
3894
3862
  * @private
3863
+ * @returns {sap.uxap.ObjectPageHeaderDesign}
3895
3864
  */
3896
3865
  ObjectPageLayout.prototype._getHeaderDesign = function () {
3897
3866
  var oHeader = this.getHeaderTitle(),
@@ -3907,6 +3876,7 @@ sap.ui.define([
3907
3876
  * Gets only the visible sections
3908
3877
  *
3909
3878
  * @private
3879
+ * @returns {sap.uxap.ObjectPageSection[]}
3910
3880
  */
3911
3881
 
3912
3882
  ObjectPageLayout.prototype._getVisibleSections = function () {
@@ -4066,6 +4036,7 @@ sap.ui.define([
4066
4036
  * Lazy loading of the _headerContent aggregation
4067
4037
  *
4068
4038
  * @private
4039
+ * @returns {sap.uxap.IHeaderContent}
4069
4040
  */
4070
4041
  ObjectPageLayout.prototype._getHeaderContent = function () {
4071
4042
  return this.getAggregation("_headerContent");
@@ -4116,7 +4087,8 @@ sap.ui.define([
4116
4087
  };
4117
4088
 
4118
4089
  ObjectPageLayout.prototype._hasVerticalScrollBar = function () {
4119
- return (this._getCustomScrollBar().getVisible() === true);
4090
+ var oWrapperElement = this._$opWrapper.length && this._$opWrapper.get(0);
4091
+ return oWrapperElement && (oWrapperElement.scrollHeight > oWrapperElement.offsetHeight);
4120
4092
  };
4121
4093
 
4122
4094
  ObjectPageLayout.prototype._shiftHeaderTitle = function () {
@@ -4124,7 +4096,7 @@ sap.ui.define([
4124
4096
  var oShiftOffsetParams = this._calculateShiftOffset(),
4125
4097
  sDirection = oShiftOffsetParams.sStyleAttribute,
4126
4098
  sPixels = oShiftOffsetParams.iMarginalsOffset;
4127
- this.$().find(".sapUxAPObjectPageHeaderTitle").css("padding-" + sDirection, sPixels + "px");
4099
+ this.$().find(".sapUxAPObjectPageHeaderTitle").css(sDirection, sPixels + "px");
4128
4100
  };
4129
4101
 
4130
4102
  /**
@@ -73,11 +73,6 @@ sap.ui.define(["sap/ui/Device"],
73
73
  oRm.accessibilityState(oControl, oControl._formatLandmarkInfo(oLandmarkInfo, "Root"));
74
74
  oRm.openEnd();
75
75
 
76
- // custom scrollbar
77
- if (Device.system.desktop) {
78
- oRm.renderControl(oControl._getCustomScrollBar());
79
- }
80
-
81
76
  // Header
82
77
  oRm.openStart(sHeaderTag, oControl.getId() + "-headerTitle");
83
78
  if (!bHeaderRoleSet) {
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @extends sap.ui.core.Element
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.102.1
40
+ * @version 1.103.1
41
41
  *
42
42
  * @constructor
43
43
  * @public
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @constructor
26
26
  * @alias sap.uxap.changeHandler.AddIFrameObjectPageLayout
27
27
  * @author SAP SE
28
- * @version 1.102.1
28
+ * @version 1.103.1
29
29
  * @since 1.75
30
30
  * @experimental Since 1.75
31
31
  */
@@ -13,7 +13,7 @@ sap.ui.define(["sap/ui/fl/changeHandler/MoveControls", "sap/ui/core/Core", "sap/
13
13
  * @constructor
14
14
  * @alias sap.uxap.changeHandler.MoveObjectPageSection
15
15
  * @author SAP SE
16
- * @version 1.102.1
16
+ * @version 1.103.1
17
17
  * @experimental Since 1.54
18
18
  */
19
19
 
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @constructor
22
22
  * @alias sap.uxap.changeHandler.RenameObjectPageSection
23
23
  * @author SAP SE
24
- * @version 1.102.1
24
+ * @version 1.103.1
25
25
  * @experimental Since 1.50
26
26
  */
27
27
 
@@ -195,10 +195,6 @@ function(
195
195
  return ["sections", "_anchorBar", "headerContent"];
196
196
  }
197
197
  }
198
- }, {
199
- domRef : function(oElement) {
200
- return oElement.$("vertSB-sb").get(0);
201
- }
202
198
  }],
203
199
  templates: {
204
200
  create: "sap/uxap/designtime/ObjectPageLayout.create.fragment.xml"
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @namespace
26
26
  * @alias sap.uxap
27
27
  * @author SAP SE
28
- * @version 1.102.1
28
+ * @version 1.103.1
29
29
  * @since 1.36
30
30
  * @public
31
31
  */
@@ -68,7 +68,7 @@ sap.ui.define([
68
68
  "sap.uxap.ObjectPageHeaderLayoutData",
69
69
  "sap.uxap.ObjectPageLazyLoader"
70
70
  ],
71
- version: "1.102.1",
71
+ version: "1.103.1",
72
72
  extensions: {
73
73
  flChangeHandlers: {
74
74
  "sap.uxap.ObjectPageHeader": "sap/uxap/flexibility/ObjectPageHeader",
@@ -233,6 +233,15 @@ html[data-sap-ui-browser^=ie] .sapUxAPObjectPageHeaderObjectImageContainerSub >
233
233
  padding-bottom: 0;
234
234
  }
235
235
 
236
+ .sapUxAPObjectPageHeaderTitle {
237
+ position: absolute;
238
+ padding-right: 0px;
239
+ top: 0;
240
+ right: 0;
241
+ left: 0;
242
+ z-index: 2;
243
+ }
244
+
236
245
  .sapUxAPObjectPageHeaderTitleArrow {
237
246
  vertical-align: top;
238
247
  white-space: nowrap;