@openui5/sap.f 1.126.1 → 1.128.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 (144) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +4 -4
  3. package/src/sap/f/.library +1 -1
  4. package/src/sap/f/Avatar.js +1 -1
  5. package/src/sap/f/AvatarGroup.js +1 -1
  6. package/src/sap/f/AvatarGroupItem.js +1 -2
  7. package/src/sap/f/CalendarAppointmentInCard.js +1 -1
  8. package/src/sap/f/CalendarInCard.js +1 -1
  9. package/src/sap/f/Card.js +1 -1
  10. package/src/sap/f/CardBase.js +21 -51
  11. package/src/sap/f/CardRenderer.js +30 -3
  12. package/src/sap/f/DynamicPage.js +23 -6
  13. package/src/sap/f/DynamicPageAccessibleLandmarkInfo.js +11 -2
  14. package/src/sap/f/DynamicPageHeader.js +20 -6
  15. package/src/sap/f/DynamicPageTitle.js +1 -1
  16. package/src/sap/f/FlexibleColumnLayout.js +157 -29
  17. package/src/sap/f/FlexibleColumnLayoutAccessibleLandmarkInfo.js +1 -1
  18. package/src/sap/f/FlexibleColumnLayoutData.js +52 -0
  19. package/src/sap/f/FlexibleColumnLayoutDataForDesktop.js +72 -0
  20. package/src/sap/f/FlexibleColumnLayoutDataForTablet.js +71 -0
  21. package/src/sap/f/FlexibleColumnLayoutSemanticHelper.js +1 -1
  22. package/src/sap/f/GridContainer.js +1 -1
  23. package/src/sap/f/GridContainerItemLayoutData.js +1 -1
  24. package/src/sap/f/GridContainerSettings.js +2 -2
  25. package/src/sap/f/GridList.js +1 -1
  26. package/src/sap/f/GridListItem.js +1 -1
  27. package/src/sap/f/IllustratedMessage.js +1 -1
  28. package/src/sap/f/Illustration.js +1 -1
  29. package/src/sap/f/PlanningCalendarInCardLegend.js +1 -1
  30. package/src/sap/f/ProductSwitch.js +1 -2
  31. package/src/sap/f/ProductSwitchItem.js +1 -2
  32. package/src/sap/f/SearchManager.js +1 -1
  33. package/src/sap/f/ShellBar.js +1 -1
  34. package/src/sap/f/SidePanel.js +8 -3
  35. package/src/sap/f/SidePanelItem.js +1 -1
  36. package/src/sap/f/cards/BaseHeader.js +1 -1
  37. package/src/sap/f/cards/CardBadgeCustomData.js +123 -0
  38. package/src/sap/f/cards/Header.js +1 -1
  39. package/src/sap/f/cards/NumericHeader.js +1 -1
  40. package/src/sap/f/cards/NumericIndicators.js +1 -1
  41. package/src/sap/f/cards/NumericSideIndicator.js +1 -1
  42. package/src/sap/f/cards/loading/AnalyticalPlaceholder.js +1 -1
  43. package/src/sap/f/cards/loading/CalendarPlaceholder.js +1 -1
  44. package/src/sap/f/cards/loading/GenericPlaceholder.js +1 -1
  45. package/src/sap/f/cards/loading/ListPlaceholder.js +1 -1
  46. package/src/sap/f/cards/loading/ObjectPlaceholder.js +1 -1
  47. package/src/sap/f/cards/loading/PlaceholderBase.js +1 -1
  48. package/src/sap/f/cards/loading/TablePlaceholder.js +1 -1
  49. package/src/sap/f/cards/loading/TimelinePlaceholder.js +1 -1
  50. package/src/sap/f/cards/util/CardBadgeEnabler.js +196 -0
  51. package/src/sap/f/changeHandler/MoveDynamicPageTitleActions.js +1 -1
  52. package/src/sap/f/delegate/GridContainerItemNavigation.js +1 -1
  53. package/src/sap/f/delegate/GridItemNavigation.js +1 -1
  54. package/src/sap/f/designtime/messagebundle_en_US_sappsd.properties +8 -4
  55. package/src/sap/f/designtime/messagebundle_en_US_saptrc.properties +8 -4
  56. package/src/sap/f/dnd/GridDragOver.js +1 -1
  57. package/src/sap/f/dnd/GridDropInfo.js +1 -1
  58. package/src/sap/f/library.js +30 -2
  59. package/src/sap/f/messagebundle.properties +3 -0
  60. package/src/sap/f/messagebundle_ar.properties +2 -0
  61. package/src/sap/f/messagebundle_bg.properties +2 -0
  62. package/src/sap/f/messagebundle_ca.properties +2 -0
  63. package/src/sap/f/messagebundle_cnr.properties +2 -0
  64. package/src/sap/f/messagebundle_cs.properties +2 -0
  65. package/src/sap/f/messagebundle_cy.properties +2 -0
  66. package/src/sap/f/messagebundle_da.properties +2 -0
  67. package/src/sap/f/messagebundle_de.properties +2 -0
  68. package/src/sap/f/messagebundle_el.properties +2 -0
  69. package/src/sap/f/messagebundle_en.properties +2 -0
  70. package/src/sap/f/messagebundle_en_GB.properties +2 -0
  71. package/src/sap/f/messagebundle_en_US_sappsd.properties +8 -12
  72. package/src/sap/f/messagebundle_en_US_saprigi.properties +3 -1
  73. package/src/sap/f/messagebundle_en_US_saptrc.properties +81 -85
  74. package/src/sap/f/messagebundle_es.properties +2 -0
  75. package/src/sap/f/messagebundle_es_MX.properties +2 -0
  76. package/src/sap/f/messagebundle_et.properties +2 -0
  77. package/src/sap/f/messagebundle_fi.properties +2 -0
  78. package/src/sap/f/messagebundle_fr.properties +2 -0
  79. package/src/sap/f/messagebundle_fr_CA.properties +2 -0
  80. package/src/sap/f/messagebundle_hi.properties +2 -0
  81. package/src/sap/f/messagebundle_hr.properties +2 -0
  82. package/src/sap/f/messagebundle_hu.properties +2 -0
  83. package/src/sap/f/messagebundle_id.properties +2 -0
  84. package/src/sap/f/messagebundle_it.properties +2 -0
  85. package/src/sap/f/messagebundle_iw.properties +2 -0
  86. package/src/sap/f/messagebundle_ja.properties +2 -0
  87. package/src/sap/f/messagebundle_kk.properties +2 -0
  88. package/src/sap/f/messagebundle_ko.properties +2 -0
  89. package/src/sap/f/messagebundle_lt.properties +2 -0
  90. package/src/sap/f/messagebundle_lv.properties +2 -0
  91. package/src/sap/f/messagebundle_mk.properties +2 -0
  92. package/src/sap/f/messagebundle_ms.properties +2 -0
  93. package/src/sap/f/messagebundle_nl.properties +2 -0
  94. package/src/sap/f/messagebundle_no.properties +2 -0
  95. package/src/sap/f/messagebundle_pl.properties +2 -0
  96. package/src/sap/f/messagebundle_pt.properties +2 -0
  97. package/src/sap/f/messagebundle_pt_PT.properties +2 -0
  98. package/src/sap/f/messagebundle_ro.properties +2 -0
  99. package/src/sap/f/messagebundle_ru.properties +2 -0
  100. package/src/sap/f/messagebundle_sh.properties +2 -0
  101. package/src/sap/f/messagebundle_sk.properties +2 -0
  102. package/src/sap/f/messagebundle_sl.properties +2 -0
  103. package/src/sap/f/messagebundle_sr.properties +2 -0
  104. package/src/sap/f/messagebundle_sv.properties +2 -0
  105. package/src/sap/f/messagebundle_th.properties +2 -0
  106. package/src/sap/f/messagebundle_tr.properties +2 -0
  107. package/src/sap/f/messagebundle_uk.properties +2 -0
  108. package/src/sap/f/messagebundle_vi.properties +2 -0
  109. package/src/sap/f/messagebundle_zh_CN.properties +2 -0
  110. package/src/sap/f/messagebundle_zh_TW.properties +2 -0
  111. package/src/sap/f/semantic/AddAction.js +1 -1
  112. package/src/sap/f/semantic/CloseAction.js +1 -1
  113. package/src/sap/f/semantic/CopyAction.js +1 -1
  114. package/src/sap/f/semantic/DeleteAction.js +1 -1
  115. package/src/sap/f/semantic/DiscussInJamAction.js +1 -1
  116. package/src/sap/f/semantic/EditAction.js +1 -1
  117. package/src/sap/f/semantic/ExitFullScreenAction.js +1 -1
  118. package/src/sap/f/semantic/FavoriteAction.js +1 -1
  119. package/src/sap/f/semantic/FlagAction.js +1 -1
  120. package/src/sap/f/semantic/FooterMainAction.js +1 -1
  121. package/src/sap/f/semantic/FullScreenAction.js +1 -1
  122. package/src/sap/f/semantic/MainAction.js +1 -1
  123. package/src/sap/f/semantic/MessagesIndicator.js +1 -1
  124. package/src/sap/f/semantic/NegativeAction.js +1 -1
  125. package/src/sap/f/semantic/PositiveAction.js +1 -1
  126. package/src/sap/f/semantic/PrintAction.js +1 -1
  127. package/src/sap/f/semantic/SemanticButton.js +1 -1
  128. package/src/sap/f/semantic/SemanticConfiguration.js +1 -1
  129. package/src/sap/f/semantic/SemanticControl.js +1 -1
  130. package/src/sap/f/semantic/SemanticPage.js +1 -1
  131. package/src/sap/f/semantic/SemanticToggleButton.js +1 -1
  132. package/src/sap/f/semantic/SendEmailAction.js +1 -1
  133. package/src/sap/f/semantic/SendMessageAction.js +1 -1
  134. package/src/sap/f/semantic/ShareInJamAction.js +1 -1
  135. package/src/sap/f/semantic/TitleMainAction.js +1 -1
  136. package/src/sap/f/shellBar/AdditionalContentSupport.js +1 -1
  137. package/src/sap/f/shellBar/CoPilot.js +1 -1
  138. package/src/sap/f/shellBar/ControlSpacer.js +1 -1
  139. package/src/sap/f/shellBar/Search.js +1 -1
  140. package/src/sap/f/themes/base/Card.less +0 -20
  141. package/src/sap/f/themes/base/CardBadge.less +63 -0
  142. package/src/sap/f/themes/base/FlexibleColumnLayout.less +9 -0
  143. package/src/sap/f/themes/base/library.source.less +1 -0
  144. package/src/sap/f/themes/sap_hcb/base_Card.less +0 -20
package/THIRDPARTY.txt CHANGED
@@ -468,7 +468,7 @@ License: Apache-2.0
468
468
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
469
469
  Contained in: lib/jsdoc/ui5/plugin.js
470
470
 
471
- Component: SAP Theming Base Content, version: 11.12.0
471
+ Component: SAP Theming Base Content, version: 11.16.1
472
472
  Copyright: SAP SE or an SAP affiliate company and Theming Base Content contributors
473
473
  License: Apache-2.0
474
474
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.f",
3
- "version": "1.126.1",
3
+ "version": "1.128.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.126.1",
18
- "@openui5/sap.ui.core": "1.126.1",
19
- "@openui5/sap.ui.layout": "1.126.1"
17
+ "@openui5/sap.m": "1.128.0",
18
+ "@openui5/sap.ui.core": "1.128.0",
19
+ "@openui5/sap.ui.layout": "1.128.0"
20
20
  }
21
21
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.126.1</version>
9
+ <version>1.128.0</version>
10
10
 
11
11
  <documentation>SAPUI5 library with Fiori controls.</documentation>
12
12
 
@@ -41,7 +41,7 @@ sap.ui.define([
41
41
  * @extends sap.m.Avatar
42
42
  *
43
43
  * @author SAP SE
44
- * @version 1.126.1
44
+ * @version 1.128.0
45
45
  *
46
46
  * @constructor
47
47
  * @public
@@ -100,7 +100,7 @@ sap.ui.define([
100
100
  * @extends sap.ui.core.Control
101
101
  *
102
102
  * @author SAP SE
103
- * @version 1.126.1
103
+ * @version 1.128.0
104
104
  *
105
105
  * @constructor
106
106
  * @public
@@ -32,11 +32,10 @@ sap.ui.define([
32
32
  * @extends sap.ui.core.Control
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.126.1
35
+ * @version 1.128.0
36
36
  *
37
37
  * @constructor
38
38
  * @public
39
- * @experimental Since 1.73. This class is experimental and provides only limited functionality. Also the API might be changed in future.
40
39
  * @since 1.73
41
40
  * @alias sap.f.AvatarGroupItem
42
41
  */
@@ -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.126.1
24
+ * @version 1.128.0
25
25
  *
26
26
  * @constructor
27
27
  * @private
@@ -45,7 +45,7 @@ sap.ui.define([
45
45
  * <code>sap.m.Toolbar</code> with <code>sap.m.Buttons</code>.
46
46
  *
47
47
  * @extends sap.ui.unified.Calendar
48
- * @version 1.126.1
48
+ * @version 1.128.0
49
49
  *
50
50
  * @constructor
51
51
  * @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.126.1
74
+ * @version 1.128.0
75
75
  *
76
76
  * @constructor
77
77
  * @public
@@ -5,24 +5,19 @@
5
5
  */
6
6
  sap.ui.define([
7
7
  "sap/ui/core/Control",
8
- "sap/f/library",
9
- "sap/m/library",
10
8
  "sap/ui/core/InvisibleText",
11
- "sap/m/BadgeEnabler",
12
9
  "sap/f/CardRenderer",
13
- "sap/ui/core/Lib"
10
+ "sap/ui/core/Lib",
11
+ "sap/f/cards/util/CardBadgeEnabler"
14
12
  ], function (
15
13
  Control,
16
- library,
17
- mLibrary,
18
14
  InvisibleText,
19
- BadgeEnabler,
20
15
  CardRenderer,
21
- Library
16
+ Library,
17
+ CardBadgeEnabler
22
18
  ) {
23
19
  "use strict";
24
20
 
25
- var BadgeState = mLibrary.BadgeState;
26
21
  var BADGE_AUTOHIDE_TIME = 3000;
27
22
 
28
23
  /**
@@ -37,7 +32,7 @@ sap.ui.define([
37
32
  * @extends sap.ui.core.Control
38
33
  *
39
34
  * @author SAP SE
40
- * @version 1.126.1
35
+ * @version 1.128.0
41
36
  *
42
37
  * @constructor
43
38
  * @public
@@ -62,12 +57,22 @@ sap.ui.define([
62
57
  */
63
58
  height: {type: "sap.ui.core.CSSSize", group: "Appearance", defaultValue: "auto"}
64
59
  },
65
- aggregations: {}
60
+ aggregations: {
61
+
62
+ /**
63
+ * Defines the internally used <code>sap.m.ObjectStatus</code>.
64
+ */
65
+ _cardBadges: {
66
+ type: "sap.m.ObjectStatus",
67
+ multiple: true,
68
+ visibility: "hidden"
69
+ }
70
+ }
66
71
  },
67
72
  renderer: CardRenderer
68
73
  });
69
74
 
70
- BadgeEnabler.call(CardBase.prototype);
75
+ CardBadgeEnabler.call(CardBase.prototype);
71
76
 
72
77
  /**
73
78
  * Initialization hook.
@@ -83,8 +88,7 @@ sap.ui.define([
83
88
 
84
89
  this._ariaText = new InvisibleText({id: this.getId() + "-ariaText"});
85
90
  this._ariaText.setText(this._oRb.getText("ARIA_ROLEDESCRIPTION_CARD"));
86
-
87
- this.initBadgeEnablement();
91
+ this.initCardBadgeEnablement();
88
92
  };
89
93
 
90
94
  CardBase.prototype.exit = function () {
@@ -193,49 +197,15 @@ sap.ui.define([
193
197
  };
194
198
 
195
199
  CardBase.prototype._hideBadge = function () {
200
+ const oCardBadgeCustomData = this._getCardBadgeCustomData();
196
201
 
197
- var oBadgeCustomData = this.getBadgeCustomData();
198
- if (oBadgeCustomData) {
199
- oBadgeCustomData.setVisible(false);
202
+ if (oCardBadgeCustomData?.length > 0) {
203
+ this._hideBadges();
200
204
  }
201
205
 
202
206
  this._iHideBadgeTimeout = null;
203
207
  };
204
208
 
205
- CardBase.prototype.onBadgeUpdate = function (sValue, sState, sBadgeId) {
206
-
207
- var oHeader = this.getCardHeader(),
208
- oDomRef,
209
- sAriaLabelledBy;
210
-
211
- if (oHeader) {
212
- oDomRef = oHeader.getFocusDomRef();
213
- } else {
214
- oDomRef = this.getDomRef("contentSection");
215
- }
216
-
217
- if (!oDomRef) {
218
- return;
219
- }
220
-
221
- sAriaLabelledBy = oDomRef.getAttribute("aria-labelledby") || "";
222
-
223
- switch (sState) {
224
- case BadgeState.Appear:
225
- sAriaLabelledBy = sBadgeId + " " + sAriaLabelledBy;
226
- oDomRef.setAttribute("aria-labelledby", sAriaLabelledBy);
227
- break;
228
- case BadgeState.Disappear:
229
- sAriaLabelledBy = sAriaLabelledBy.replace(sBadgeId, "").trim();
230
- oDomRef.setAttribute("aria-labelledby", sAriaLabelledBy);
231
- break;
232
- }
233
- };
234
-
235
- CardBase.prototype.getAriaLabelBadgeText = function () {
236
- return this.getBadgeCustomData().getValue();
237
- };
238
-
239
209
  /**
240
210
  * Gets the ids of the elements labelling the Card container.
241
211
  *
@@ -32,12 +32,17 @@ sap.ui.define([
32
32
  */
33
33
  CardRenderer.render = function (oRm, oCard) {
34
34
  var oHeader = oCard.getCardHeader(),
35
- bHeaderTop = oHeader && oCard.getCardHeaderPosition() === HeaderPosition.Top;
35
+ bHeaderTop = oHeader && oCard.getCardHeaderPosition() === HeaderPosition.Top,
36
+ bHasCardBadgeCustomData = oCard._getCardBadgeCustomData().length > 0;
36
37
 
37
38
  oRm.openStart("div", oCard);
38
39
  this.renderContainerAttributes(oRm, oCard);
39
40
  oRm.openEnd();
40
41
 
42
+ if (bHasCardBadgeCustomData) {
43
+ this.renderCardBadge(oRm, oCard);
44
+ }
45
+
41
46
  // header at the top
42
47
  if (bHeaderTop) {
43
48
  oRm.renderControl(oHeader);
@@ -56,6 +61,9 @@ sap.ui.define([
56
61
 
57
62
  oRm.renderControl(oCard._ariaText);
58
63
  oRm.renderControl(oCard._ariaContentText);
64
+ if (bHasCardBadgeCustomData) {
65
+ oRm.renderControl(oCard._getInvisibleCardBadgeText());
66
+ }
59
67
 
60
68
  oRm.close("div");
61
69
  };
@@ -72,7 +80,8 @@ sap.ui.define([
72
80
  bHasHeader = !!(oHeader && oHeader.getVisible()),
73
81
  bHasContent = !!oContent,
74
82
  bCardHeaderBottom = bHasHeader && oCard.getCardHeaderPosition() === HeaderPosition.Bottom,
75
- sTooltip = oCard.getTooltip_AsString();
83
+ sTooltip = oCard.getTooltip_AsString(),
84
+ bHasCardBadgeCustomData = oCard._getCardBadgeCustomData().length > 0;
76
85
 
77
86
  oRm.class("sapFCard")
78
87
  .style("width", oCard.getWidth());
@@ -105,7 +114,8 @@ sap.ui.define([
105
114
  //Accessibility state
106
115
  oRm.accessibilityState(oCard, {
107
116
  role: "region",
108
- labelledby: { value: oCard._getAriaLabelledIds(), append: true }
117
+ labelledby: { value: oCard._getAriaLabelledIds(), append: true },
118
+ describedby: {value: bHasCardBadgeCustomData ? oCard._getInvisibleCardBadgeText().getId() : undefined}
109
119
  });
110
120
  };
111
121
 
@@ -147,5 +157,22 @@ sap.ui.define([
147
157
 
148
158
  };
149
159
 
160
+ /**
161
+ * Render card badge section.
162
+ *
163
+ * @protected
164
+ * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer.
165
+ * @param {sap.f.Card} oCard An object representation of the control that should be rendered.
166
+ */
167
+ CardRenderer.renderCardBadge = function (oRm, oCard) {
168
+ oRm.openStart("div", oCard.getId() + "-cardBadgeSection")
169
+ .class("sapFCardBadgePlaceholder")
170
+ .openEnd();
171
+ oCard._getCardBadges()?.forEach((oCardBadge) => {
172
+ oRm.renderControl(oCardBadge);
173
+ });
174
+ oRm.close("div");
175
+ };
176
+
150
177
  return CardRenderer;
151
178
  });
@@ -118,7 +118,7 @@ sap.ui.define([
118
118
  * @extends sap.ui.core.Control
119
119
  *
120
120
  * @author SAP SE
121
- * @version 1.126.1
121
+ * @version 1.128.0
122
122
  *
123
123
  * @constructor
124
124
  * @public
@@ -454,7 +454,8 @@ sap.ui.define([
454
454
  DynamicPage.prototype.onAfterRendering = function () {
455
455
 
456
456
  var bShouldSnapWithScroll,
457
- iCurrentScrollPosition;
457
+ iCurrentScrollPosition,
458
+ oHeader = this.getHeader();
458
459
 
459
460
  if (this.getPreserveHeaderStateOnScroll()) {
460
461
  // Ensure that in this tick DP and it's aggregations are rendered
@@ -486,6 +487,10 @@ sap.ui.define([
486
487
 
487
488
  this._updateToggleHeaderVisualIndicators();
488
489
  this._updateTitleVisualState();
490
+
491
+ if (exists(oHeader) && oHeader._setLandmarkInfo) {
492
+ oHeader._setLandmarkInfo(this.getLandmarkInfo());
493
+ }
489
494
  };
490
495
 
491
496
  DynamicPage.prototype.exit = function () {
@@ -632,7 +637,7 @@ sap.ui.define([
632
637
  var vResult = this.setProperty("fitContent", bFitContent, true);
633
638
 
634
639
  if (exists(this.$())) {
635
- this._updateFitContainer();
640
+ this._toggleScrollingStyles();
636
641
  }
637
642
 
638
643
  return vResult;
@@ -999,6 +1004,7 @@ sap.ui.define([
999
1004
 
1000
1005
  if (!this._bHeaderInTitleArea) {
1001
1006
  this._moveHeaderToTitleArea(true);
1007
+ this._adjustStickyContent();
1002
1008
  this._updateTitlePositioning();
1003
1009
  }
1004
1010
 
@@ -1381,12 +1387,17 @@ sap.ui.define([
1381
1387
 
1382
1388
  this.toggleStyleClass("sapFDynamicPageWithScroll", bScrollBarNeeded);
1383
1389
 
1384
- setTimeout(this._updateFitContainer.bind(this), 0);
1390
+ // update styles for scrolling after a timeout of 0, in order to obtain the final state
1391
+ // e.g. after the ResizeHandler looped though *all* resized controls (to notify them) =>
1392
+ // so all of them completed their adjustments for the new size (notably any nested table adjusted its
1393
+ // visible rows count upon being notified by ResizeHandler for change of height of its container)
1394
+ setTimeout(this._toggleScrollingStyles.bind(this), 0);
1385
1395
  };
1386
1396
 
1387
- DynamicPage.prototype._updateFitContainer = function (bNeedsVerticalScrollBar) {
1397
+ DynamicPage.prototype._toggleScrollingStyles = function (bNeedsVerticalScrollBar) {
1388
1398
  var bNoScrollBar = typeof bNeedsVerticalScrollBar !== 'undefined' ? !bNeedsVerticalScrollBar : !this._needsVerticalScrollBar();
1389
1399
 
1400
+ this.toggleStyleClass("sapFDynamicPageWithScroll", !bNoScrollBar);
1390
1401
  this.$contentFitContainer.toggleClass("sapFDynamicPageContentFitContainer", bNoScrollBar);
1391
1402
  };
1392
1403
 
@@ -1874,7 +1885,7 @@ sap.ui.define([
1874
1885
 
1875
1886
  // FitContainer needs to be updated, when height is changed and scroll bar appear, to enable calc of original height
1876
1887
  if (bNeedsVerticalScrollBar) {
1877
- this._updateFitContainer(bNeedsVerticalScrollBar);
1888
+ this._toggleScrollingStyles(bNeedsVerticalScrollBar);
1878
1889
  }
1879
1890
 
1880
1891
  this._adjustSnap();
@@ -2015,6 +2026,12 @@ sap.ui.define([
2015
2026
  */
2016
2027
  DynamicPage.prototype._onTitlePress = function () {
2017
2028
  if (this.getToggleHeaderOnTitleClick() && this._hasVisibleTitleAndHeader()) {
2029
+ if (!this.getHeaderExpanded() && this._headerBiggerThanAllowedToBeExpandedInTitleArea() && !this._preserveHeaderStateOnScroll()) {
2030
+ // if the header will expanded and it is bigger than the allowed height to be shown in the title area
2031
+ // we explicitly move it to the content area unless the preserveHeaderStateOnScroll is set
2032
+ // the header is then always displayed in the title are by definition as is always sticky
2033
+ this._moveHeaderToContentArea(true);
2034
+ }
2018
2035
  this._titleExpandCollapseWhenAllowed(true /* user interaction */);
2019
2036
  this.getTitle()._focus();
2020
2037
  }
@@ -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.126.1
26
+ * @version 1.128.0
27
27
  *
28
28
  * @constructor
29
29
  * @public
@@ -88,7 +88,16 @@ sap.ui.define(['sap/ui/core/Element', './library'],
88
88
  *
89
89
  * If not set (and a landmark different than <code>sap.ui.core.AccessibleLandmarkRole.None</code> is defined), no label is set.
90
90
  */
91
- footerLabel : {type : "string", defaultValue : null}
91
+ footerLabel : {type : "string", defaultValue : null},
92
+
93
+ /**
94
+ * Texts which describe the landmark of the section inside the header container of the corresponding <code>sap.f.DynamicPage</code> control.
95
+ *
96
+ * If not set, default "Expanded header" aria-label is set.
97
+ * @public
98
+ * @since 1.127.0
99
+ */
100
+ headerContentLabel: {type : "string", defaultValue : null}
92
101
  }
93
102
  }});
94
103
 
@@ -64,7 +64,7 @@ sap.ui.define([
64
64
  * @extends sap.ui.core.Control
65
65
  *
66
66
  * @author SAP SE
67
- * @version 1.126.1
67
+ * @version 1.128.0
68
68
  *
69
69
  * @constructor
70
70
  * @public
@@ -141,10 +141,10 @@ sap.ui.define([
141
141
  DynamicPageHeader.prototype.init = function() {
142
142
  this._bShowCollapseButton = true;
143
143
  this._oInvisibleMessage = null;
144
+ this._oLandmarkInfo = null;
144
145
  };
145
146
 
146
147
  DynamicPageHeader.prototype.onAfterRendering = function () {
147
- this._initARIAState();
148
148
  this._initPinButtonARIAState();
149
149
 
150
150
  if (!this._oInvisibleMessage) {
@@ -155,6 +155,8 @@ sap.ui.define([
155
155
  if (this.getPinnable()) {
156
156
  this._setPressedStatePinIcon();
157
157
  }
158
+
159
+ this._applyAriaAttributes();
158
160
  };
159
161
 
160
162
  /*************************************** Private members ******************************************/
@@ -212,13 +214,25 @@ sap.ui.define([
212
214
  };
213
215
 
214
216
  /**
215
- * Initializes the <code>DynamicPageHeader</code> ARIA State.
217
+ * Applies the <code>DynamicPageHeader</code> ARIA attributes.
216
218
  * @private
217
219
  */
218
- DynamicPageHeader.prototype._initARIAState = function () {
219
- var $header = this.$();
220
+ DynamicPageHeader.prototype._applyAriaAttributes = function () {
221
+ var $header = this.$(),
222
+ bHasHeaderContentLabel = this._oLandmarkInfo && this._oLandmarkInfo.getHeaderContentLabel();
223
+
224
+ if (bHasHeaderContentLabel) {
225
+ var sHeaderContentLabel = this._oLandmarkInfo.getHeaderContentLabel();
226
+ $header.attr(DynamicPageHeader.ARIA.ARIA_LABEL, sHeaderContentLabel);
227
+ } else {
228
+ $header.attr(DynamicPageHeader.ARIA.ARIA_LABEL, DynamicPageHeader.ARIA.LABEL_EXPANDED);
229
+ }
230
+ };
231
+
232
+ DynamicPageHeader.prototype._setLandmarkInfo = function (oLandmarkInfo) {
233
+ this._oLandmarkInfo = oLandmarkInfo;
220
234
 
221
- $header.attr(DynamicPageHeader.ARIA.ARIA_LABEL, DynamicPageHeader.ARIA.LABEL_EXPANDED);
235
+ this._applyAriaAttributes();
222
236
  };
223
237
 
224
238
  /**
@@ -95,7 +95,7 @@ sap.ui.define([
95
95
  * @extends sap.ui.core.Control
96
96
  *
97
97
  * @author SAP SE
98
- * @version 1.126.1
98
+ * @version 1.128.0
99
99
  *
100
100
  * @constructor
101
101
  * @public