@openui5/sap.uxap 1.133.1 → 1.135.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.
- package/.reuse/dep5 +0 -7
- package/THIRDPARTY.txt +2 -23
- package/package.json +5 -5
- package/src/sap/uxap/.library +1 -1
- package/src/sap/uxap/BlockBase.js +7 -28
- 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 +2 -9
- package/src/sap/uxap/ObjectPageLayout.js +15 -3
- package/src/sap/uxap/ObjectPageLayoutABHelper.js +21 -2
- package/src/sap/uxap/ObjectPageLazyLoader.js +1 -1
- package/src/sap/uxap/ObjectPageSection.js +11 -2
- package/src/sap/uxap/ObjectPageSectionBase.js +12 -4
- package/src/sap/uxap/ObjectPageSubSection.js +10 -8
- package/src/sap/uxap/ObjectPageSubSectionRenderer.js +6 -3
- 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/changeHandler/UnstashObjectPageSection.js +1 -1
- package/src/sap/uxap/library.js +2 -2
- package/src/sap/uxap/messagebundle_ko.properties +3 -3
- package/src/sap/uxap/messagebundle_sl.properties +1 -1
- package/src/sap/uxap/themes/base/ObjectPageSubSection.less +5 -5
- package/src/sap/uxap/themes/sap_hcb/ObjectPageSubSection.less +1 -1
- package/src/sap/uxap/themes/sap_hcb/base_ObjectPageSubSection.less +4 -4
- package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +0 -5
package/.reuse/dep5
CHANGED
|
@@ -364,13 +364,6 @@ Copyright:
|
|
|
364
364
|
License: Apache-2.0 and ISC
|
|
365
365
|
Comment: these files contain content from SAP and node-lru-cache: LRUPersistentCache.js is overall written by SAP, but portions ('Least Recently Used' logic) are taken from the node-lru-cache project (see https://github.com/isaacs/node-lru-cache/blob/v2.7.3/README.md) and modified.
|
|
366
366
|
|
|
367
|
-
Files: src/sap.ui.core/test/sap/ui/core/qunit/i18n/helper/_timezones.js
|
|
368
|
-
Copyright:
|
|
369
|
-
2009-2024 SAP SE or an SAP affiliate company and OpenUI5 contributors
|
|
370
|
-
Arthur David Olson, Paul Eggert and other contributors
|
|
371
|
-
License: Apache-2.0 and LicenseRef-tzdata-PublicDomain
|
|
372
|
-
Comment: these files contain content from SAP and Time Zone Database: _timezones.js is overall written by SAP, but the list of IANA timezone IDs is taken from the Timezone Database
|
|
373
|
-
|
|
374
367
|
|
|
375
368
|
# Library: sap.ui.documentation:
|
|
376
369
|
|
package/THIRDPARTY.txt
CHANGED
|
@@ -22,7 +22,7 @@ Contained in: src/sap.m/test/sap/m/qunit/_thirdparty/qunit-composite.css
|
|
|
22
22
|
|
|
23
23
|
Library: sap.ui.codeeditor:
|
|
24
24
|
|
|
25
|
-
Component: Ace (Ajax.org Cloud9 Editor), version: 1.
|
|
25
|
+
Component: Ace (Ajax.org Cloud9 Editor), version: 1.36.5
|
|
26
26
|
Copyright: 2010, Ajax.org B.V.
|
|
27
27
|
License: BSD-3-Clause
|
|
28
28
|
License Text: https://github.com/SAP/openui5/blob/master/LICENSES/BSD-3-Clause.txt
|
|
@@ -342,12 +342,6 @@ License: ISC
|
|
|
342
342
|
License Text: https://github.com/SAP/openui5/blob/master/LICENSES/ISC.txt
|
|
343
343
|
Contained in: src/sap.ui.core/src/sap/ui/core/cache/LRUPersistentCache.js
|
|
344
344
|
|
|
345
|
-
Component: Time Zone Database, version: 2024b
|
|
346
|
-
Copyright: Arthur David Olson, Paul Eggert and other contributors
|
|
347
|
-
License: LicenseRef-tzdata-PublicDomain
|
|
348
|
-
License Text: https://github.com/SAP/openui5/blob/master/LICENSES/LicenseRef-tzdata-PublicDomain.txt
|
|
349
|
-
Contained in: src/sap.ui.core/test/sap/ui/core/qunit/i18n/helper/_timezones.js
|
|
350
|
-
|
|
351
345
|
|
|
352
346
|
Library: sap.ui.documentation:
|
|
353
347
|
|
|
@@ -468,7 +462,7 @@ License: Apache-2.0
|
|
|
468
462
|
License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
|
|
469
463
|
Contained in: lib/jsdoc/ui5/plugin.js
|
|
470
464
|
|
|
471
|
-
Component: SAP Theming Base Content, version: 11.
|
|
465
|
+
Component: SAP Theming Base Content, version: 11.28.2
|
|
472
466
|
Copyright: SAP SE or an SAP affiliate company and Theming Base Content contributors
|
|
473
467
|
License: Apache-2.0
|
|
474
468
|
License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
|
|
@@ -1015,21 +1009,6 @@ END of license: LicenseRef-Unicode-3.0
|
|
|
1015
1009
|
=================================
|
|
1016
1010
|
|
|
1017
1011
|
|
|
1018
|
-
=================================
|
|
1019
|
-
BEGIN of license: LicenseRef-tzdata-PublicDomain
|
|
1020
|
-
=================================
|
|
1021
|
-
|
|
1022
|
-
Unless specified below, all files in the tz code and data (including
|
|
1023
|
-
this LICENSE file) are in the public domain.
|
|
1024
|
-
|
|
1025
|
-
If the files date.c, newstrftime.3, and strftime.c are present, they
|
|
1026
|
-
contain material derived from BSD and use the BSD 3-clause license.
|
|
1027
|
-
|
|
1028
|
-
=================================
|
|
1029
|
-
END of license: LicenseRef-tzdata-PublicDomain
|
|
1030
|
-
=================================
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
1012
|
=================================
|
|
1034
1013
|
BEGIN of license: MIT
|
|
1035
1014
|
=================================
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openui5/sap.uxap",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.135.0",
|
|
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.135.0",
|
|
18
|
+
"@openui5/sap.m": "1.135.0",
|
|
19
|
+
"@openui5/sap.ui.core": "1.135.0",
|
|
20
|
+
"@openui5/sap.ui.layout": "1.135.0"
|
|
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.135.0</version>
|
|
7
7
|
<copyright>OpenUI5
|
|
8
8
|
* (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
|
|
9
9
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
|
|
@@ -202,7 +202,6 @@ sap.ui.define([
|
|
|
202
202
|
this._oMappingApplied = {};
|
|
203
203
|
|
|
204
204
|
//lazy loading
|
|
205
|
-
this._bLazyLoading = false; //by default, no lazy loading so we can use it out of an objectPageLayout
|
|
206
205
|
this._bConnected = false; //indicates connectToModels function has been called
|
|
207
206
|
this._oUpdatedModels = {};
|
|
208
207
|
this._oParentObjectPageSubSection = null; // the parent ObjectPageSubSection
|
|
@@ -211,8 +210,6 @@ sap.ui.define([
|
|
|
211
210
|
};
|
|
212
211
|
|
|
213
212
|
BlockBase.prototype.onBeforeRendering = function () {
|
|
214
|
-
var oParentObjectPageLayout;
|
|
215
|
-
|
|
216
213
|
this._applyMapping();
|
|
217
214
|
|
|
218
215
|
if (!this.getMode() || this.getMode() === "") {
|
|
@@ -225,14 +222,10 @@ sap.ui.define([
|
|
|
225
222
|
}
|
|
226
223
|
|
|
227
224
|
this._applyFormAdjustment();
|
|
228
|
-
|
|
229
|
-
//TODO: for iconTabBar mode, specify lazyLoading for selectedTab only?
|
|
230
|
-
oParentObjectPageLayout = this._getObjectPageLayout();
|
|
231
|
-
this._bLazyLoading = oParentObjectPageLayout && (oParentObjectPageLayout.getEnableLazyLoading() || oParentObjectPageLayout.getUseIconTabBar());
|
|
232
225
|
};
|
|
233
226
|
|
|
234
227
|
BlockBase.prototype.onAfterRendering = function () {
|
|
235
|
-
var oParentObjectPageLayout = this._getObjectPageLayout();
|
|
228
|
+
var oParentObjectPageLayout = this._getObjectPageLayout(this._oParentObjectPageSubSection);
|
|
236
229
|
|
|
237
230
|
if (oParentObjectPageLayout) {
|
|
238
231
|
oParentObjectPageLayout._requestAdjustLayout();
|
|
@@ -250,7 +243,6 @@ sap.ui.define([
|
|
|
250
243
|
Control.prototype.setParent.call(this, oParent, sAggregationName, bSuppressInvalidate);
|
|
251
244
|
|
|
252
245
|
if (oParent?.isA("sap.uxap.ObjectPageSubSection")) {
|
|
253
|
-
this._bLazyLoading = true;
|
|
254
246
|
this._oParentObjectPageSubSection = oParent;
|
|
255
247
|
}
|
|
256
248
|
};
|
|
@@ -365,13 +357,6 @@ sap.ui.define([
|
|
|
365
357
|
if (this.getMode() !== sMode) {
|
|
366
358
|
this.setProperty("mode", sMode, false);
|
|
367
359
|
|
|
368
|
-
// Update the this._bLazyLoading here: setMode is called by ObjectPageSubSection in onBeforeRendering,
|
|
369
|
-
// as at this point enableLazyLoading property of OPL is already set.
|
|
370
|
-
// onBeforeRendering of BlockBase is still not called! That's why this._bLazyLoading may not be in a valid state
|
|
371
|
-
// (previously set as true in setParent function, as it is placed in ObjectPageSubSection).
|
|
372
|
-
// If this._bLazyLoading is not updated at this point and enableLazyLoading=false, view will never be selected, binding will never be updated.
|
|
373
|
-
this._updateLazyLoad();
|
|
374
|
-
|
|
375
360
|
//if Lazy loading is enabled, and if the block is not connected
|
|
376
361
|
//delay the view creation (will be done in connectToModels function)
|
|
377
362
|
if (!this._shouldLazyLoad()) {
|
|
@@ -747,7 +732,7 @@ sap.ui.define([
|
|
|
747
732
|
* Setter for the visibility of the block.
|
|
748
733
|
*/
|
|
749
734
|
BlockBase.prototype.setVisible = function (bValue, bSuppressInvalidate) {
|
|
750
|
-
var oParentObjectPageLayout = this._getObjectPageLayout();
|
|
735
|
+
var oParentObjectPageLayout = this._getObjectPageLayout(this._oParentObjectPageSubSection);
|
|
751
736
|
|
|
752
737
|
if (bValue === this.getVisible()) {
|
|
753
738
|
return this;
|
|
@@ -781,7 +766,7 @@ sap.ui.define([
|
|
|
781
766
|
if (!this._bConnected) {
|
|
782
767
|
Log.debug("BlockBase :: Connecting block to the UI5 model tree");
|
|
783
768
|
this._bConnected = true;
|
|
784
|
-
if (this.
|
|
769
|
+
if (this._getObjectPageLayout(this._oParentObjectPageSubSection)?._isLazyLoadingEffectivelyEnabled()) {
|
|
785
770
|
//if lazy loading is enabled, the view has not been created during the setMode
|
|
786
771
|
//so create it now
|
|
787
772
|
var sMode = this.getMode();
|
|
@@ -860,16 +845,10 @@ sap.ui.define([
|
|
|
860
845
|
* @private
|
|
861
846
|
*/
|
|
862
847
|
BlockBase.prototype._shouldLazyLoad = function () {
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
* Updates this._bLazyLoading property.
|
|
868
|
-
* @private
|
|
869
|
-
*/
|
|
870
|
-
BlockBase.prototype._updateLazyLoad = function () {
|
|
871
|
-
var oParentObjectPageLayout = this._getObjectPageLayout(this._oParentObjectPageSubSection);
|
|
872
|
-
this._bLazyLoading = oParentObjectPageLayout && (oParentObjectPageLayout.getEnableLazyLoading() || oParentObjectPageLayout.getUseIconTabBar());
|
|
848
|
+
var oParentObjectPageLayout = this._getObjectPageLayout(this._oParentObjectPageSubSection),
|
|
849
|
+
vLazyLoad = oParentObjectPageLayout?._isLazyLoadingEffectivelyEnabled(),
|
|
850
|
+
bDelayLoading = vLazyLoad === true || vLazyLoad === undefined; // delay loading until the value of the "enableLazyLoading" property of ObjectPage is known
|
|
851
|
+
return !!this._oParentObjectPageSubSection && bDelayLoading && !this._bConnected;
|
|
873
852
|
};
|
|
874
853
|
|
|
875
854
|
/**
|
|
@@ -42,7 +42,7 @@ sap.ui.define([
|
|
|
42
42
|
* @implements sap.uxap.IHeaderTitle
|
|
43
43
|
*
|
|
44
44
|
* @author SAP SE
|
|
45
|
-
* @version 1.
|
|
45
|
+
* @version 1.135.0
|
|
46
46
|
*
|
|
47
47
|
* @constructor
|
|
48
48
|
* @public
|
|
@@ -110,20 +110,13 @@ sap.ui.define([
|
|
|
110
110
|
return true;
|
|
111
111
|
};
|
|
112
112
|
|
|
113
|
-
ObjectPageDynamicHeaderTitle.KNOWN_HEADING_CONTROL_CLASS_NAMES = ["sap.m.Title", "sap.m.Text", "sap.m.FormattedText", "sap.m.Label"];
|
|
114
|
-
|
|
115
113
|
/**
|
|
116
114
|
* Returns the text that represents the title of the page.
|
|
117
115
|
* Since the structure is not guaranteed, this is not universal for this header, and only covers the most common usage.
|
|
118
116
|
* Required by the {@link sap.uxap.IHeaderTitle} interface.
|
|
119
117
|
*/
|
|
120
118
|
ObjectPageDynamicHeaderTitle.prototype.getTitleText = function () {
|
|
121
|
-
|
|
122
|
-
sClassName = oHeading && oHeading.getMetadata().getName();
|
|
123
|
-
|
|
124
|
-
if (ObjectPageDynamicHeaderTitle.KNOWN_HEADING_CONTROL_CLASS_NAMES.indexOf(sClassName) > -1) {
|
|
125
|
-
return oHeading.getText();
|
|
126
|
-
}
|
|
119
|
+
return this._getTitleText();
|
|
127
120
|
};
|
|
128
121
|
|
|
129
122
|
/**
|
|
@@ -712,6 +712,9 @@ sap.ui.define([
|
|
|
712
712
|
this._initRangeSet();
|
|
713
713
|
this._attachMediaContainerWidthChange(this._onMediaRangeChange,
|
|
714
714
|
this, ObjectPageLayout.MEDIA_RANGESET_NAME);
|
|
715
|
+
this._oHeaderContentDelegate = {
|
|
716
|
+
onBeforeRendering: this._setSectionInfoIsDirty.bind(this, true)
|
|
717
|
+
};
|
|
715
718
|
};
|
|
716
719
|
|
|
717
720
|
/**
|
|
@@ -1952,6 +1955,15 @@ sap.ui.define([
|
|
|
1952
1955
|
}
|
|
1953
1956
|
};
|
|
1954
1957
|
|
|
1958
|
+
/**
|
|
1959
|
+
* Checks if lazy loading is effectively enabled based on multiple conditions
|
|
1960
|
+
* @restricted
|
|
1961
|
+
* @returns {boolean}
|
|
1962
|
+
*/
|
|
1963
|
+
ObjectPageLayout.prototype._isLazyLoadingEffectivelyEnabled = function() {
|
|
1964
|
+
return this.getEnableLazyLoading() || this.getUseIconTabBar();
|
|
1965
|
+
};
|
|
1966
|
+
|
|
1955
1967
|
/* AnchorBar management */
|
|
1956
1968
|
|
|
1957
1969
|
ObjectPageLayout.prototype.setShowAnchorBarPopover = function (bValue, bSuppressInvalidate) {
|
|
@@ -2021,8 +2033,6 @@ sap.ui.define([
|
|
|
2021
2033
|
};
|
|
2022
2034
|
|
|
2023
2035
|
ObjectPageLayout.prototype._requestAdjustLayoutAndUxRules = function (bImmediate) {
|
|
2024
|
-
this._setSectionInfoIsDirty(true);
|
|
2025
|
-
|
|
2026
2036
|
if (!this._oUxRulesTask) {
|
|
2027
2037
|
this._oUxRulesTask = new ThrottledTask(
|
|
2028
2038
|
this._adjustLayoutAndUxRules, //function to execute
|
|
@@ -3767,7 +3777,7 @@ sap.ui.define([
|
|
|
3767
3777
|
ObjectPageLayout.prototype._moveAnchorBarToContentArea = function () {
|
|
3768
3778
|
if (!this._shouldPreserveHeaderInTitleArea()) {
|
|
3769
3779
|
var iScrollTopBeforeAppend = this._$opWrapper.scrollTop();
|
|
3770
|
-
this._$anchorBar.
|
|
3780
|
+
this._$anchorBar.append(this._$stickyAnchorBar.children());
|
|
3771
3781
|
// ensure that appending the anchorBar does not change the scrollTop, as it may happen in certain cases (if another part of content freshly rerendered (BCP: 1870365138)
|
|
3772
3782
|
this._$opWrapper.scrollTop(iScrollTopBeforeAppend);
|
|
3773
3783
|
|
|
@@ -3915,6 +3925,7 @@ sap.ui.define([
|
|
|
3915
3925
|
|
|
3916
3926
|
if (oOldHeaderContent) {
|
|
3917
3927
|
oOldHeaderContent.destroy();
|
|
3928
|
+
oOldHeaderContent.removeEventDelegate(this._oHeaderContentDelegate);
|
|
3918
3929
|
}
|
|
3919
3930
|
|
|
3920
3931
|
oNewHeaderContent = fnHeaderContentClass.createInstance(
|
|
@@ -3925,6 +3936,7 @@ sap.ui.define([
|
|
|
3925
3936
|
this.getId() + "-OPHeaderContent"
|
|
3926
3937
|
);
|
|
3927
3938
|
|
|
3939
|
+
oNewHeaderContent.addEventDelegate(this._oHeaderContentDelegate);
|
|
3928
3940
|
oNewHeaderContent.getContent().forEach(this._replaceHeaderContentParent, this);
|
|
3929
3941
|
|
|
3930
3942
|
this.setAggregation("_headerContent", oNewHeaderContent, true);
|
|
@@ -81,7 +81,10 @@ sap.ui.define([
|
|
|
81
81
|
}.bind(this));
|
|
82
82
|
|
|
83
83
|
oAnchorBar.addEventDelegate({
|
|
84
|
-
onAfterRendering:
|
|
84
|
+
onAfterRendering: function() {
|
|
85
|
+
oObjectPageLayout._adjustTitlePositioning();
|
|
86
|
+
this._clearAnchorBarFixedHeight(oAnchorBar);
|
|
87
|
+
}.bind(this)
|
|
85
88
|
});
|
|
86
89
|
|
|
87
90
|
if (bUpperCaseAnchors) {
|
|
@@ -94,6 +97,20 @@ sap.ui.define([
|
|
|
94
97
|
return oAnchorBar;
|
|
95
98
|
};
|
|
96
99
|
|
|
100
|
+
ABHelper.prototype._fixAnchorBarHeight = function (oAnchorBar) {
|
|
101
|
+
var oAnchorBarParentNode = oAnchorBar.getDomRef()?.parentNode;
|
|
102
|
+
if (oAnchorBarParentNode) {
|
|
103
|
+
oAnchorBarParentNode.style.height = oAnchorBarParentNode.clientHeight + "px";
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
ABHelper.prototype._clearAnchorBarFixedHeight = function (oAnchorBar) {
|
|
108
|
+
var oAnchorBarParentNode = oAnchorBar.getDomRef()?.parentNode;
|
|
109
|
+
if (oAnchorBarParentNode) {
|
|
110
|
+
oAnchorBarParentNode.style.height = "auto";
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
97
114
|
/**
|
|
98
115
|
* build the anchorBar and all the anchorBar buttons
|
|
99
116
|
* @private
|
|
@@ -171,7 +188,9 @@ sap.ui.define([
|
|
|
171
188
|
};
|
|
172
189
|
|
|
173
190
|
ABHelper.prototype.resetControl = function () {
|
|
174
|
-
this._getAnchorBar()
|
|
191
|
+
var oAnchorBar = this._getAnchorBar();
|
|
192
|
+
this._fixAnchorBarHeight(oAnchorBar);
|
|
193
|
+
oAnchorBar.destroyItems();
|
|
175
194
|
};
|
|
176
195
|
|
|
177
196
|
ABHelper.prototype.selectAnchorForSection = function (sId) {
|
|
@@ -96,6 +96,9 @@ sap.ui.define([
|
|
|
96
96
|
|
|
97
97
|
/**
|
|
98
98
|
* The list of Subsections.
|
|
99
|
+
*
|
|
100
|
+
* Note: If multiple subsections are used, it is highly recommended to set a title for the section
|
|
101
|
+
* for accessibility reasons.
|
|
99
102
|
*/
|
|
100
103
|
subSections: {type: "sap.uxap.ObjectPageSubSection", multiple: true, singularName: "subSection", forwarding: {getter: "_getGrid", aggregation: "content"}},
|
|
101
104
|
|
|
@@ -407,7 +410,7 @@ sap.ui.define([
|
|
|
407
410
|
}
|
|
408
411
|
|
|
409
412
|
aSubSections.forEach(function (oSubsection) {
|
|
410
|
-
if (sLastSelectedSubSectionId === oSubsection.getId()) {
|
|
413
|
+
if (sLastSelectedSubSectionId === oSubsection.getId() && oSubsection._shouldBeFocusable()) {
|
|
411
414
|
oSubsection._setToFocusable(true);
|
|
412
415
|
bPreselectedSection = true;
|
|
413
416
|
} else {
|
|
@@ -416,7 +419,13 @@ sap.ui.define([
|
|
|
416
419
|
});
|
|
417
420
|
|
|
418
421
|
if (!bPreselectedSection) {
|
|
419
|
-
aSubSections
|
|
422
|
+
var oFirstFocusableSubSection = aSubSections.find(function(oSubSection) {
|
|
423
|
+
return oSubSection._shouldBeFocusable();
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
if (oFirstFocusableSubSection) {
|
|
427
|
+
oFirstFocusableSubSection._setToFocusable(true);
|
|
428
|
+
}
|
|
420
429
|
}
|
|
421
430
|
|
|
422
431
|
return this;
|
|
@@ -156,6 +156,7 @@ sap.ui.define([
|
|
|
156
156
|
} else {
|
|
157
157
|
this.updateInvisibleTextLabelValue();
|
|
158
158
|
}
|
|
159
|
+
this._getObjectPageLayout()?._setSectionInfoIsDirty(true);
|
|
159
160
|
};
|
|
160
161
|
|
|
161
162
|
ObjectPageSectionBase.prototype.exit = function () {
|
|
@@ -173,6 +174,15 @@ sap.ui.define([
|
|
|
173
174
|
return this;
|
|
174
175
|
};
|
|
175
176
|
|
|
177
|
+
/**
|
|
178
|
+
* Returns the effectively applied title level. Could be different than "titleLevel" property, according to internal UX rules.
|
|
179
|
+
* @protected
|
|
180
|
+
* @returns {string} the effective title level
|
|
181
|
+
*/
|
|
182
|
+
ObjectPageSectionBase.prototype.getEffectiveTitleLevel = function () {
|
|
183
|
+
return this._getTitleLevel();
|
|
184
|
+
};
|
|
185
|
+
|
|
176
186
|
/**
|
|
177
187
|
* Sets title visibility
|
|
178
188
|
* @param {boolean} bVisible
|
|
@@ -437,10 +447,8 @@ sap.ui.define([
|
|
|
437
447
|
*/
|
|
438
448
|
ObjectPageSectionBase.prototype._getAriaLabelledByText = function () {
|
|
439
449
|
// Each section should be labelled as:
|
|
440
|
-
// 'titleName' - if the section has a title
|
|
441
|
-
|
|
442
|
-
var sTitle = this._getShouldLabelTitle() && this._getTitle();
|
|
443
|
-
return sTitle || this.getSectionText();
|
|
450
|
+
// 'titleName' - no matter if the section has a title or not
|
|
451
|
+
return this._getTitle();
|
|
444
452
|
};
|
|
445
453
|
|
|
446
454
|
ObjectPageSectionBase.prototype._getInvisibleText = function () {
|
|
@@ -720,6 +720,7 @@ sap.ui.define([
|
|
|
720
720
|
this.refreshSeeMoreVisibility();
|
|
721
721
|
|
|
722
722
|
this.toggleStyleClass("sapUxAPObjectPageSubSectionStashed", this._aStashedControls.length ? true : false);
|
|
723
|
+
this.toggleStyleClass("sapUxAPObjectPageSubSectionFocusable", this.getTitleVisible());
|
|
723
724
|
};
|
|
724
725
|
|
|
725
726
|
ObjectPageSubSection.prototype._adaptDomHeight = function() {
|
|
@@ -1284,19 +1285,20 @@ sap.ui.define([
|
|
|
1284
1285
|
};
|
|
1285
1286
|
|
|
1286
1287
|
ObjectPageSubSection.prototype._setToFocusable = function (bFocusable) {
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
sTabIndex = "tabindex";
|
|
1290
|
-
|
|
1291
|
-
if (bFocusable) {
|
|
1292
|
-
this.$().attr(sTabIndex, sFocusable);
|
|
1288
|
+
if (this._shouldBeFocusable()) {
|
|
1289
|
+
this.$().attr("tabindex", bFocusable ? "0" : "-1");
|
|
1293
1290
|
} else {
|
|
1294
|
-
this.$().
|
|
1291
|
+
this.$().removeAttr("tabindex");
|
|
1295
1292
|
}
|
|
1296
|
-
|
|
1297
1293
|
return this;
|
|
1298
1294
|
};
|
|
1299
1295
|
|
|
1296
|
+
|
|
1297
|
+
ObjectPageSubSection.prototype._shouldBeFocusable = function() {
|
|
1298
|
+
return this.getTitleVisible() && this.getTitle().trim() !== "";
|
|
1299
|
+
};
|
|
1300
|
+
|
|
1301
|
+
|
|
1300
1302
|
ObjectPageSubSection.prototype._getUseTitleOnTheLeft = function () {
|
|
1301
1303
|
var oObjectPageLayout = this._getObjectPageLayout();
|
|
1302
1304
|
|
|
@@ -31,8 +31,11 @@ sap.ui.define(["sap/ui/core/ControlBehavior"], function (ControlBehavior) {
|
|
|
31
31
|
bHasVisibleActions = oControl._hasVisibleActions();
|
|
32
32
|
|
|
33
33
|
oRm.openStart("div", oControl)
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
.style("height", oControl._getHeight());
|
|
35
|
+
|
|
36
|
+
if (bHasTitle) {
|
|
37
|
+
oRm.attr("role", "region");
|
|
38
|
+
}
|
|
36
39
|
|
|
37
40
|
if (oControl._bBlockHasMore) {
|
|
38
41
|
oRm.class("sapUxAPObjectPageSubSectionWithSeeMore");
|
|
@@ -46,7 +49,7 @@ sap.ui.define(["sap/ui/core/ControlBehavior"], function (ControlBehavior) {
|
|
|
46
49
|
.class("ui-helper-clearfix");
|
|
47
50
|
|
|
48
51
|
|
|
49
|
-
if (bAccessibilityOn && oLabelledBy) {
|
|
52
|
+
if (bAccessibilityOn && oLabelledBy && bHasTitle) {
|
|
50
53
|
oRm.attr("aria-labelledby", oLabelledBy.getId());
|
|
51
54
|
}
|
|
52
55
|
|
package/src/sap/uxap/library.js
CHANGED
|
@@ -30,7 +30,7 @@ sap.ui.define([
|
|
|
30
30
|
* @namespace
|
|
31
31
|
* @alias sap.uxap
|
|
32
32
|
* @author SAP SE
|
|
33
|
-
* @version 1.
|
|
33
|
+
* @version 1.135.0
|
|
34
34
|
* @since 1.36
|
|
35
35
|
* @public
|
|
36
36
|
*/
|
|
@@ -74,7 +74,7 @@ sap.ui.define([
|
|
|
74
74
|
"sap.uxap.ObjectPageHeaderLayoutData",
|
|
75
75
|
"sap.uxap.ObjectPageLazyLoader"
|
|
76
76
|
],
|
|
77
|
-
version: "1.
|
|
77
|
+
version: "1.135.0",
|
|
78
78
|
extensions: {
|
|
79
79
|
flChangeHandlers: {
|
|
80
80
|
"sap.uxap.ObjectPageHeader": "sap/uxap/flexibility/ObjectPageHeader",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
|
-
SHOW_MORE=\uC790\uC138\uD788 \
|
|
2
|
+
SHOW_MORE=\uC790\uC138\uD788 \uBCF4\uAE30
|
|
3
3
|
|
|
4
|
-
SHOW_LESS=\uAC04\uB2E8\uD788 \
|
|
4
|
+
SHOW_LESS=\uAC04\uB2E8\uD788 \uBCF4\uAE30
|
|
5
5
|
|
|
6
6
|
ANCHOR_BAR_ARIA_LABEL=\uC575\uCEE4
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@ BREADCRUMB_TRAIL_LABEL=\uD0D0\uC0C9 \uACBD\uB85C \uCD94\uC801
|
|
|
13
13
|
|
|
14
14
|
SHOW_ALL=\uBAA8\uB450 \uD45C\uC2DC
|
|
15
15
|
|
|
16
|
-
HIDE_ALL=\uAC04\uB2E8\uD788 \
|
|
16
|
+
HIDE_ALL=\uAC04\uB2E8\uD788 \uBCF4\uAE30
|
|
17
17
|
|
|
18
18
|
SHOW=\uD3BC\uCE58\uAE30
|
|
19
19
|
|
|
@@ -73,7 +73,7 @@ ROOT_ROLE_DESCRIPTION=Stran objekta
|
|
|
73
73
|
|
|
74
74
|
HEADER_ROLE_DESCRIPTION=Glava strani objekta
|
|
75
75
|
|
|
76
|
-
NAVIGATION_ROLE_DESCRIPTION=Vrstica za
|
|
76
|
+
NAVIGATION_ROLE_DESCRIPTION=Vrstica za pomik po segmentih
|
|
77
77
|
|
|
78
78
|
FOOTER_ROLE_DESCRIPTION=Splo\u0161ne akcije za stran objekta
|
|
79
79
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
.sapUxAPObjectPageSubSectionHeader {
|
|
22
22
|
height: auto;
|
|
23
23
|
word-wrap: break-word;
|
|
24
|
-
padding: 0
|
|
24
|
+
padding: 0 3rem 0 3rem;
|
|
25
25
|
display: flex;
|
|
26
26
|
justify-content: space-between;
|
|
27
27
|
}
|
|
@@ -74,7 +74,7 @@ html .sapUiContainer-Narrow .sapUxAPObjectPageSubSectionHeaderTitle {
|
|
|
74
74
|
|
|
75
75
|
.sapUxAPObjectPageLayout-Std-Tablet .sapUxAPObjectPageSubSectionHeader,
|
|
76
76
|
html .sapUiContainer-Medium .sapUxAPObjectPageSubSectionHeader {
|
|
77
|
-
padding: 0
|
|
77
|
+
padding: 0 2rem 0 2rem;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
/* Those styles apply Desktop and Desktop-XL.
|
|
@@ -211,18 +211,18 @@ Doing so will result in less generated CSS, as well as less future maintanance i
|
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
html[data-sap-ui-browser^="ed"].sap-desktop .
|
|
214
|
+
html[data-sap-ui-browser^="ed"].sap-desktop .sapUxAPObjectPageSubSectionFocusable:focus {
|
|
215
215
|
outline-style: dashed;
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
/* IE ignores outline-offset. Use an overlay: */
|
|
219
219
|
/* TODO remove after the end of support for Internet Explorer */
|
|
220
220
|
html[data-sap-ui-browser^="ie"].sap-desktop {
|
|
221
|
-
.
|
|
221
|
+
.sapUxAPObjectPageSubSectionFocusable:focus {
|
|
222
222
|
outline: none;
|
|
223
223
|
position: relative;
|
|
224
224
|
}
|
|
225
|
-
.
|
|
225
|
+
.sapUxAPObjectPageSubSectionFocusable:focus:before {
|
|
226
226
|
content: " ";
|
|
227
227
|
box-sizing: border-box;
|
|
228
228
|
width: 100%;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* High Contrast Black theme */
|
|
4
4
|
/* ============================================== */
|
|
5
5
|
|
|
6
|
-
.
|
|
6
|
+
.sapUxAPObjectPageSubSectionFocusable:focus,
|
|
7
7
|
.sapUxAPObjectPageSubSectionHeaderTitle:focus {
|
|
8
8
|
outline: 0.125rem dotted @sapUiContentFocusColor;
|
|
9
9
|
outline-offset: -0.125rem;
|
|
@@ -74,7 +74,7 @@ html .sapUiContainer-Narrow .sapUxAPObjectPageSubSectionHeaderTitle {
|
|
|
74
74
|
|
|
75
75
|
.sapUxAPObjectPageLayout-Std-Tablet .sapUxAPObjectPageSubSectionHeader,
|
|
76
76
|
html .sapUiContainer-Medium .sapUxAPObjectPageSubSectionHeader {
|
|
77
|
-
padding: 0
|
|
77
|
+
padding: 0 2rem 0 2rem;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
/* Those styles apply Desktop and Desktop-XL.
|
|
@@ -211,18 +211,18 @@ Doing so will result in less generated CSS, as well as less future maintanance i
|
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
html[data-sap-ui-browser^="ed"].sap-desktop .
|
|
214
|
+
html[data-sap-ui-browser^="ed"].sap-desktop .sapUxAPObjectPageSubSectionFocusable:focus {
|
|
215
215
|
outline-style: dashed;
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
/* IE ignores outline-offset. Use an overlay: */
|
|
219
219
|
/* TODO remove after the end of support for Internet Explorer */
|
|
220
220
|
html[data-sap-ui-browser^="ie"].sap-desktop {
|
|
221
|
-
.
|
|
221
|
+
.sapUxAPObjectPageSubSectionFocusable:focus {
|
|
222
222
|
outline: none;
|
|
223
223
|
position: relative;
|
|
224
224
|
}
|
|
225
|
-
.
|
|
225
|
+
.sapUxAPObjectPageSubSectionFocusable:focus:before {
|
|
226
226
|
content: " ";
|
|
227
227
|
box-sizing: border-box;
|
|
228
228
|
width: 100%;
|