@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 +5 -5
- package/src/sap/uxap/.library +1 -1
- package/src/sap/uxap/AnchorBar.js +2 -4
- package/src/sap/uxap/AnchorBarRenderer.js +1 -6
- package/src/sap/uxap/BlockBaseMetadata.js +1 -1
- package/src/sap/uxap/ObjectPageAccessibleLandmarkInfo.js +1 -1
- package/src/sap/uxap/ObjectPageDynamicHeaderContent.js +1 -1
- package/src/sap/uxap/ObjectPageDynamicHeaderTitle.js +1 -1
- package/src/sap/uxap/ObjectPageLayout.js +84 -112
- package/src/sap/uxap/ObjectPageLayoutRenderer.js +0 -5
- package/src/sap/uxap/ObjectPageLazyLoader.js +1 -1
- package/src/sap/uxap/changeHandler/AddIFrameObjectPageLayout.js +1 -1
- package/src/sap/uxap/changeHandler/MoveObjectPageSection.js +1 -1
- package/src/sap/uxap/changeHandler/RenameObjectPageSection.js +1 -1
- package/src/sap/uxap/designtime/ObjectPageLayout.designtime.js +0 -4
- package/src/sap/uxap/library.js +2 -2
- package/src/sap/uxap/themes/base/ObjectPageHeader.less +9 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openui5/sap.uxap",
|
|
3
|
-
"version": "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.
|
|
18
|
-
"@openui5/sap.m": "1.
|
|
19
|
-
"@openui5/sap.ui.core": "1.
|
|
20
|
-
"@openui5/sap.ui.layout": "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
|
}
|
package/src/sap/uxap/.library
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
<name>sap.uxap</name>
|
|
5
5
|
<vendor>SAP SE</vendor>
|
|
6
|
-
<version>1.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
44
|
-
AnchorBarRenderer.renderBarItems(rm, oToolbar);
|
|
45
|
-
}
|
|
40
|
+
AnchorBarRenderer.renderBarItems(rm, oToolbar);
|
|
46
41
|
|
|
47
42
|
rm.close("div");
|
|
48
43
|
|
|
@@ -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
|
-
*
|
|
1424
|
-
* of
|
|
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
|
-
*
|
|
1427
|
-
*
|
|
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
|
-
//
|
|
1454
|
-
//
|
|
1455
|
-
|
|
1456
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2320
|
-
|
|
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.
|
|
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
|
-
|
|
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(
|
|
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) {
|
|
@@ -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"
|
package/src/sap/uxap/library.js
CHANGED
|
@@ -25,7 +25,7 @@ sap.ui.define([
|
|
|
25
25
|
* @namespace
|
|
26
26
|
* @alias sap.uxap
|
|
27
27
|
* @author SAP SE
|
|
28
|
-
* @version 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.
|
|
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;
|