@openui5/sap.f 1.133.2 → 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.
Files changed (153) hide show
  1. package/.reuse/dep5 +0 -7
  2. package/THIRDPARTY.txt +2 -23
  3. package/package.json +4 -4
  4. package/src/sap/f/.library +1 -1
  5. package/src/sap/f/Avatar.js +1 -1
  6. package/src/sap/f/AvatarGroup.js +1 -1
  7. package/src/sap/f/AvatarGroupItem.js +1 -1
  8. package/src/sap/f/CalendarAppointmentInCard.js +1 -1
  9. package/src/sap/f/CalendarInCard.js +1 -1
  10. package/src/sap/f/Card.js +1 -1
  11. package/src/sap/f/CardBase.js +170 -36
  12. package/src/sap/f/CardRenderer.js +16 -8
  13. package/src/sap/f/DynamicPage.js +12 -1
  14. package/src/sap/f/DynamicPageAccessibleLandmarkInfo.js +1 -1
  15. package/src/sap/f/DynamicPageHeader.js +1 -1
  16. package/src/sap/f/DynamicPageRenderer.js +1 -1
  17. package/src/sap/f/DynamicPageTitle.js +34 -1
  18. package/src/sap/f/FlexibleColumnLayout.js +1 -1
  19. package/src/sap/f/FlexibleColumnLayoutAccessibleLandmarkInfo.js +1 -1
  20. package/src/sap/f/FlexibleColumnLayoutData.js +1 -1
  21. package/src/sap/f/FlexibleColumnLayoutDataForDesktop.js +1 -1
  22. package/src/sap/f/FlexibleColumnLayoutDataForTablet.js +1 -1
  23. package/src/sap/f/FlexibleColumnLayoutSemanticHelper.js +1 -1
  24. package/src/sap/f/GridContainer.js +60 -110
  25. package/src/sap/f/GridContainerItemLayoutData.js +1 -1
  26. package/src/sap/f/GridContainerRenderer.js +8 -3
  27. package/src/sap/f/GridContainerSettings.js +2 -2
  28. package/src/sap/f/GridContainerUtils.js +8 -0
  29. package/src/sap/f/GridList.js +1 -1
  30. package/src/sap/f/GridListItem.js +1 -1
  31. package/src/sap/f/IllustratedMessage.js +1 -1
  32. package/src/sap/f/Illustration.js +1 -1
  33. package/src/sap/f/PlanningCalendarInCardLegend.js +1 -1
  34. package/src/sap/f/ProductSwitch.js +1 -1
  35. package/src/sap/f/ProductSwitchItem.js +1 -1
  36. package/src/sap/f/SearchManager.js +1 -1
  37. package/src/sap/f/ShellBar.js +3 -4
  38. package/src/sap/f/ShellBarRenderer.js +1 -0
  39. package/src/sap/f/SidePanel.js +1 -1
  40. package/src/sap/f/SidePanelItem.js +1 -1
  41. package/src/sap/f/cards/BaseHeader.js +61 -32
  42. package/src/sap/f/cards/BaseHeaderRenderer.js +212 -3
  43. package/src/sap/f/cards/Header.js +2 -8
  44. package/src/sap/f/cards/HeaderRenderer.js +0 -161
  45. package/src/sap/f/cards/NumericHeader.js +3 -9
  46. package/src/sap/f/cards/NumericHeaderRenderer.js +54 -126
  47. package/src/sap/f/cards/NumericIndicators.js +1 -1
  48. package/src/sap/f/cards/NumericSideIndicator.js +1 -1
  49. package/src/sap/f/cards/loading/AnalyticalPlaceholder.js +1 -1
  50. package/src/sap/f/cards/loading/CalendarPlaceholder.js +1 -1
  51. package/src/sap/f/cards/loading/GenericPlaceholder.js +1 -1
  52. package/src/sap/f/cards/loading/ListPlaceholder.js +1 -1
  53. package/src/sap/f/cards/loading/ObjectPlaceholder.js +1 -1
  54. package/src/sap/f/cards/loading/PlaceholderBase.js +1 -1
  55. package/src/sap/f/cards/loading/TablePlaceholder.js +1 -1
  56. package/src/sap/f/cards/loading/TimelinePlaceholder.js +1 -1
  57. package/src/sap/f/changeHandler/MoveDynamicPageTitleActions.js +1 -1
  58. package/src/sap/f/delegate/GridContainerItemNavigation.js +24 -202
  59. package/src/sap/f/delegate/GridItemNavigation.js +23 -10
  60. package/src/sap/f/dnd/GridDragOver.js +1 -1
  61. package/src/sap/f/dnd/GridDropInfo.js +1 -1
  62. package/src/sap/f/library.js +36 -2
  63. package/src/sap/f/messagebundle.properties +4 -4
  64. package/src/sap/f/messagebundle_ar.properties +0 -2
  65. package/src/sap/f/messagebundle_bg.properties +0 -2
  66. package/src/sap/f/messagebundle_ca.properties +0 -2
  67. package/src/sap/f/messagebundle_cnr.properties +0 -2
  68. package/src/sap/f/messagebundle_cs.properties +0 -2
  69. package/src/sap/f/messagebundle_cy.properties +0 -2
  70. package/src/sap/f/messagebundle_da.properties +0 -2
  71. package/src/sap/f/messagebundle_de.properties +0 -2
  72. package/src/sap/f/messagebundle_el.properties +0 -2
  73. package/src/sap/f/messagebundle_en.properties +0 -2
  74. package/src/sap/f/messagebundle_en_GB.properties +0 -2
  75. package/src/sap/f/messagebundle_en_US_saprigi.properties +2 -2
  76. package/src/sap/f/messagebundle_es.properties +0 -2
  77. package/src/sap/f/messagebundle_es_MX.properties +0 -2
  78. package/src/sap/f/messagebundle_et.properties +0 -2
  79. package/src/sap/f/messagebundle_fi.properties +0 -2
  80. package/src/sap/f/messagebundle_fr.properties +1 -3
  81. package/src/sap/f/messagebundle_fr_CA.properties +0 -2
  82. package/src/sap/f/messagebundle_hi.properties +0 -2
  83. package/src/sap/f/messagebundle_hr.properties +0 -2
  84. package/src/sap/f/messagebundle_hu.properties +0 -2
  85. package/src/sap/f/messagebundle_id.properties +0 -2
  86. package/src/sap/f/messagebundle_it.properties +0 -2
  87. package/src/sap/f/messagebundle_iw.properties +0 -2
  88. package/src/sap/f/messagebundle_ja.properties +0 -2
  89. package/src/sap/f/messagebundle_kk.properties +0 -2
  90. package/src/sap/f/messagebundle_ko.properties +0 -2
  91. package/src/sap/f/messagebundle_lt.properties +0 -2
  92. package/src/sap/f/messagebundle_lv.properties +0 -2
  93. package/src/sap/f/messagebundle_mk.properties +0 -2
  94. package/src/sap/f/messagebundle_ms.properties +0 -2
  95. package/src/sap/f/messagebundle_nl.properties +0 -2
  96. package/src/sap/f/messagebundle_no.properties +0 -2
  97. package/src/sap/f/messagebundle_pl.properties +0 -2
  98. package/src/sap/f/messagebundle_pt.properties +0 -2
  99. package/src/sap/f/messagebundle_pt_PT.properties +0 -2
  100. package/src/sap/f/messagebundle_ro.properties +1 -3
  101. package/src/sap/f/messagebundle_ru.properties +0 -2
  102. package/src/sap/f/messagebundle_sh.properties +0 -2
  103. package/src/sap/f/messagebundle_sk.properties +0 -2
  104. package/src/sap/f/messagebundle_sl.properties +0 -2
  105. package/src/sap/f/messagebundle_sr.properties +0 -2
  106. package/src/sap/f/messagebundle_sv.properties +0 -2
  107. package/src/sap/f/messagebundle_th.properties +0 -2
  108. package/src/sap/f/messagebundle_tr.properties +0 -2
  109. package/src/sap/f/messagebundle_uk.properties +2 -4
  110. package/src/sap/f/messagebundle_vi.properties +0 -2
  111. package/src/sap/f/messagebundle_zh_CN.properties +0 -2
  112. package/src/sap/f/messagebundle_zh_TW.properties +0 -2
  113. package/src/sap/f/semantic/AddAction.js +1 -1
  114. package/src/sap/f/semantic/CloseAction.js +1 -1
  115. package/src/sap/f/semantic/CopyAction.js +1 -1
  116. package/src/sap/f/semantic/DeleteAction.js +1 -1
  117. package/src/sap/f/semantic/DiscussInJamAction.js +1 -1
  118. package/src/sap/f/semantic/EditAction.js +1 -1
  119. package/src/sap/f/semantic/ExitFullScreenAction.js +1 -1
  120. package/src/sap/f/semantic/FavoriteAction.js +1 -1
  121. package/src/sap/f/semantic/FlagAction.js +1 -1
  122. package/src/sap/f/semantic/FooterMainAction.js +1 -1
  123. package/src/sap/f/semantic/FullScreenAction.js +1 -1
  124. package/src/sap/f/semantic/MainAction.js +1 -1
  125. package/src/sap/f/semantic/MessagesIndicator.js +1 -1
  126. package/src/sap/f/semantic/NegativeAction.js +1 -1
  127. package/src/sap/f/semantic/PositiveAction.js +1 -1
  128. package/src/sap/f/semantic/PrintAction.js +1 -1
  129. package/src/sap/f/semantic/SemanticButton.js +1 -1
  130. package/src/sap/f/semantic/SemanticConfiguration.js +1 -1
  131. package/src/sap/f/semantic/SemanticControl.js +1 -1
  132. package/src/sap/f/semantic/SemanticPage.js +1 -1
  133. package/src/sap/f/semantic/SemanticToggleButton.js +1 -1
  134. package/src/sap/f/semantic/SendEmailAction.js +1 -1
  135. package/src/sap/f/semantic/SendMessageAction.js +1 -1
  136. package/src/sap/f/semantic/ShareInJamAction.js +1 -1
  137. package/src/sap/f/semantic/TitleMainAction.js +1 -1
  138. package/src/sap/f/shellBar/AdditionalContentSupport.js +1 -1
  139. package/src/sap/f/shellBar/CoPilot.js +1 -1
  140. package/src/sap/f/shellBar/ControlSpacer.js +1 -1
  141. package/src/sap/f/shellBar/Factory.js +7 -1
  142. package/src/sap/f/shellBar/Search.js +1 -1
  143. package/src/sap/f/themes/base/CalendarPlaceholder.less +16 -4
  144. package/src/sap/f/themes/base/Card.less +93 -41
  145. package/src/sap/f/themes/base/CardBadge.less +10 -5
  146. package/src/sap/f/themes/base/CardHeaders.less +26 -37
  147. package/src/sap/f/themes/base/CardLoading.less +34 -23
  148. package/src/sap/f/themes/base/DynamicPage.less +5 -0
  149. package/src/sap/f/themes/base/GridContainer.less +16 -18
  150. package/src/sap/f/themes/base/GridListItem.less +14 -13
  151. package/src/sap/f/themes/sap_hcb/base_Card.less +3 -10
  152. package/src/sap/f/themes/sap_hcb/base_GridContainer.less +0 -13
  153. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +0 -5
@@ -13,7 +13,8 @@ sap.ui.define([
13
13
  "sap/ui/events/KeyCodes",
14
14
  "sap/m/library",
15
15
  "sap/m/Text",
16
- "sap/f/cards/util/addTooltipIfTruncated"
16
+ "sap/f/cards/util/addTooltipIfTruncated",
17
+ "sap/base/Log"
17
18
  ], function (
18
19
  Control,
19
20
  IntervalTrigger,
@@ -24,7 +25,8 @@ sap.ui.define([
24
25
  KeyCodes,
25
26
  mLibrary,
26
27
  Text,
27
- addTooltipIfTruncated
28
+ addTooltipIfTruncated,
29
+ Log
28
30
  ) {
29
31
  "use strict";
30
32
 
@@ -53,7 +55,7 @@ sap.ui.define([
53
55
  * @abstract
54
56
  *
55
57
  * @author SAP SE
56
- * @version 1.133.2
58
+ * @version 1.135.0
57
59
  *
58
60
  * @constructor
59
61
  * @public
@@ -187,7 +189,8 @@ sap.ui.define([
187
189
 
188
190
  this._oToolbarDelegate = {
189
191
  onfocusin: this._onToolbarFocusin,
190
- onfocusout: this._onToolbarFocusout
192
+ onfocusout: this._onToolbarFocusout,
193
+ onAfterRendering: this._addMarginToHeaderText
191
194
  };
192
195
  };
193
196
 
@@ -227,6 +230,8 @@ sap.ui.define([
227
230
  oToolbar.addEventDelegate(this._oToolbarDelegate, this);
228
231
  }
229
232
 
233
+ this._addMarginToHeaderText();
234
+
230
235
  this.getBannerLines()?.forEach((oText) => {
231
236
  this._enhanceText(oText);
232
237
  });
@@ -254,22 +259,34 @@ sap.ui.define([
254
259
  };
255
260
 
256
261
  BaseHeader.prototype.onkeydown = function (oEvent) {
257
- if (oEvent.key !== "Enter" && oEvent.keyCode !== KeyCodes.ENTER) {
258
- return;
259
- }
260
262
 
261
- if (!this._hasModifierKeys(oEvent)) {
262
- this._handleTap(oEvent);
263
+ if ((oEvent.which === KeyCodes.SPACE || oEvent.which === KeyCodes.ENTER || oEvent.which === KeyCodes.ESCAPE || oEvent.which === KeyCodes.SHIFT)
264
+ && !oEvent.ctrlKey && !oEvent.metaKey) {
265
+
266
+ if (oEvent.which === KeyCodes.SPACE) {
267
+ // To prevent the browser scrolling.
268
+ oEvent.preventDefault();
269
+ }
270
+ if (oEvent.which === KeyCodes.ENTER) {
271
+ this._handleTap(oEvent);
272
+ }
273
+
274
+ if (oEvent.which === KeyCodes.SHIFT || oEvent.which === KeyCodes.ESCAPE) {
275
+ this._bPressedEscapeOrShift = true;
276
+ }
263
277
  }
278
+
264
279
  };
265
280
 
266
281
  BaseHeader.prototype.onkeyup = function (oEvent) {
267
- if (oEvent.key !== " " && oEvent.keyCode !== KeyCodes.SPACE) {
268
- return;
282
+ if (oEvent.which === KeyCodes.SPACE) {
283
+ if (!this._bPressedEscapeOrShift && !this._hasModifierKeys(oEvent)) {
284
+ this._handleTap(oEvent);
285
+ }
269
286
  }
270
287
 
271
- if (!this._hasModifierKeys(oEvent)) {
272
- this._handleTap(oEvent);
288
+ if (oEvent.which === KeyCodes.SHIFT || oEvent.which === KeyCodes.ESCAPE) {
289
+ this._bPressedEscapeOrShift = false;
273
290
  }
274
291
  };
275
292
 
@@ -283,7 +300,7 @@ sap.ui.define([
283
300
  };
284
301
 
285
302
  BaseHeader.prototype._handleTap = function (oEvent) {
286
- if (!this.isInteractive() || this._isInsideToolbar(oEvent.target)) {
303
+ if (!oEvent.target.closest(".sapFCardSectionClickable") || !this.isInteractive() || this._isInsideToolbar(oEvent.target)) {
287
304
  return;
288
305
  }
289
306
 
@@ -312,6 +329,23 @@ sap.ui.define([
312
329
  this.removeStyleClass("sapFCardHeaderToolbarFocused");
313
330
  };
314
331
 
332
+ /**
333
+ * Adds margin to the header text, which ensures the text will be visible under the toolbar.
334
+ * @private
335
+ */
336
+ BaseHeader.prototype._addMarginToHeaderText = function () {
337
+ const oToolbar = this.getToolbar();
338
+ const oHeaderText = this.getDomRef().getElementsByClassName("sapFCardHeaderText")[0];
339
+
340
+ if (oHeaderText && oToolbar) {
341
+ if (oToolbar.getVisible()) {
342
+ oHeaderText.style.marginInlineEnd = oToolbar.getDomRef().offsetWidth + "px";
343
+ } else {
344
+ oHeaderText.style.marginInlineEnd = 0;
345
+ }
346
+ }
347
+ };
348
+
315
349
  /*
316
350
  * @override
317
351
  */
@@ -480,27 +514,21 @@ sap.ui.define([
480
514
  }).join(" ");
481
515
  };
482
516
 
483
- /**
484
- * Returns if the control is inside a sap.f.GridContainer
485
- *
486
- * @private
487
- */
488
- BaseHeader.prototype._isInsideGridContainer = function() {
489
- var oParent = this.getParent();
490
- if (!oParent) {
491
- return false;
492
- }
517
+ BaseHeader.prototype.isInteractive = function() {
518
+ return this.hasListeners("press");
519
+ };
493
520
 
494
- oParent = oParent.getParent();
495
- if (!oParent) {
521
+ BaseHeader.prototype.isFocusable = function() {
522
+ if (!this.getProperty("focusable")) {
496
523
  return false;
497
524
  }
498
525
 
499
- return oParent.isA("sap.f.GridContainer");
500
- };
526
+ const oParent = this.getParent();
527
+ if (oParent && oParent.isA("sap.f.CardBase") && oParent.isRoleListItem()) {
528
+ return this.isInteractive();
529
+ }
501
530
 
502
- BaseHeader.prototype.isInteractive = function() {
503
- return this.hasListeners("press");
531
+ return true;
504
532
  };
505
533
 
506
534
  BaseHeader.prototype._isInsideToolbar = function(oElement) {
@@ -510,7 +538,8 @@ sap.ui.define([
510
538
  };
511
539
 
512
540
  /**
513
- * When the option <code>useTooltips</code> is set to <code>true</code> - enhances the given text with a tooltip if the text is truncated.
541
+ * When the option <code>useTooltips</code> is set to <code>true</code>,
542
+ * a tooltip is added to the text in case it gets truncated.
514
543
  * @private
515
544
  * @param {sap.m.Text} oText The text control.
516
545
  */
@@ -521,7 +550,7 @@ sap.ui.define([
521
550
  };
522
551
 
523
552
  BaseHeader.prototype._hasModifierKeys = function (oEvent) {
524
- return oEvent.shiftKey || oEvent.altKey || oEvent.ctrlKey || oEvent.metaKey;
553
+ return oEvent.altKey || oEvent.ctrlKey || oEvent.metaKey;
525
554
  };
526
555
 
527
556
  return BaseHeader;
@@ -8,10 +8,209 @@
8
8
  sap.ui.define([], function () {
9
9
  "use strict";
10
10
 
11
- var BaseHeaderRenderer = {
11
+ const BaseHeaderRenderer = {
12
12
  apiVersion: 2
13
13
  };
14
14
 
15
+ BaseHeaderRenderer.render = function (oRm, oHeader) {
16
+ const oToolbar = oHeader.getToolbar();
17
+ const oError = oHeader.getAggregation("_error");
18
+ const bHasNumericPart = this.hasNumericPart(oHeader);
19
+
20
+ oRm.openStart("div", oHeader)
21
+ .class("sapFCardHeader");
22
+
23
+ this.renderHeaderAttributes(oRm, oHeader);
24
+
25
+ if (oHeader.isLoading()) {
26
+ oRm.class("sapFCardHeaderLoading");
27
+ }
28
+
29
+ if (oHeader.getIconSrc() && oHeader.getIconVisible()) {
30
+ oRm.class("sapFCardHeaderHasIcon");
31
+ }
32
+
33
+ if (oToolbar?.getVisible()) {
34
+ oRm.class("sapFCardHeaderHasToolbar");
35
+ }
36
+
37
+ if (!bHasNumericPart) {
38
+ oRm.class("sapFCardHeaderMainPartOnly");
39
+ }
40
+
41
+ oRm.openEnd();
42
+
43
+ this.renderMainPart(oRm, oHeader);
44
+
45
+ if (bHasNumericPart && !oError) {
46
+ this.renderNumericPart(oRm, oHeader);
47
+ }
48
+
49
+ if (oToolbar && !oError) {
50
+ this._renderToolbar(oRm, oToolbar);
51
+ }
52
+
53
+ oRm.close("div");
54
+ };
55
+
56
+ BaseHeaderRenderer.renderHeaderAttributes = function (oRm, oHeader) { };
57
+
58
+ BaseHeaderRenderer.renderMainPart = function (oRm, oHeader) {
59
+ const bUseTileLayout = oHeader.getProperty("useTileLayout");
60
+ const bRenderAsLink = oHeader.isLink();
61
+ const oError = oHeader.getAggregation("_error");
62
+
63
+ if (bRenderAsLink) {
64
+ oRm.openStart("a", oHeader.getId() + "-focusable");
65
+ this._renderLinkAttributes(oRm, oHeader);
66
+ } else {
67
+ oRm.openStart("div", oHeader.getId() + "-focusable");
68
+ }
69
+
70
+ oRm.class("sapFCardHeaderMainPart")
71
+ .class("sapFCardHeaderFocusable");
72
+
73
+ if (oHeader.isFocusable()) {
74
+ oRm.attr("tabindex", "0");
75
+ } else if (bRenderAsLink) {
76
+ oRm.attr("tabindex", "-1");
77
+ }
78
+
79
+ if (oHeader.isInteractive()) {
80
+ oRm.class("sapFCardSectionClickable");
81
+ }
82
+
83
+ if (!this.hasNumericPart(oHeader)) {
84
+ oRm.class("sapFCardHeaderLastPart");
85
+ }
86
+
87
+ oRm.accessibilityState({
88
+ labelledby: { value: oHeader._getAriaLabelledBy(), append: true },
89
+ role: oHeader.getFocusableElementAriaRole(),
90
+ roledescription: oHeader.getAriaRoleDescription()
91
+ });
92
+
93
+ oRm.openEnd();
94
+
95
+ if (oError) {
96
+ oRm.renderControl(oError);
97
+ } else {
98
+ if (bUseTileLayout) {
99
+ this.renderMainContentInTileLayout(oRm, oHeader);
100
+ } else {
101
+ this.renderMainContent(oRm, oHeader);
102
+ }
103
+
104
+ this._renderBanner(oRm, oHeader);
105
+ }
106
+
107
+ if (bRenderAsLink) {
108
+ oRm.close("a");
109
+ } else {
110
+ oRm.close("div");
111
+ }
112
+ };
113
+
114
+ BaseHeaderRenderer.hasNumericPart = function (oHeader) {
115
+ return false;
116
+ };
117
+
118
+ BaseHeaderRenderer.renderNumericPart = function (oRm, oHeader) { };
119
+
120
+ BaseHeaderRenderer.renderMainContent = function (oRm, oHeader) {
121
+ this.renderAvatar(oRm, oHeader);
122
+
123
+ oRm.openStart("div")
124
+ .class("sapFCardHeaderText")
125
+ .openEnd();
126
+
127
+ this.renderMainPartFirstLine(oRm, oHeader);
128
+ this.renderMainPartSecondLine(oRm, oHeader);
129
+
130
+ oRm.close("div");
131
+ };
132
+
133
+ BaseHeaderRenderer.renderMainContentInTileLayout = function (oRm, oHeader) {
134
+ oRm.openStart("div")
135
+ .class("sapFCardHeaderText")
136
+ .openEnd();
137
+
138
+ this.renderMainPartFirstLine(oRm, oHeader);
139
+ this.renderMainPartSecondLine(oRm, oHeader);
140
+
141
+ oRm.close("div");
142
+
143
+ this.renderAvatar(oRm, oHeader);
144
+ };
145
+
146
+ BaseHeaderRenderer.renderMainPartFirstLine = function (oRm, oHeader) {
147
+ const oTitle = oHeader.getAggregation("_title");
148
+ const oBindingInfos = oHeader.mBindingInfos;
149
+ const sStatus = oHeader.getStatusText();
150
+ const sId = oHeader.getId();
151
+
152
+ if (oTitle || oBindingInfos.title) {
153
+ oRm.openStart("div")
154
+ .class("sapFCardHeaderTextFirstLine")
155
+ .openEnd();
156
+
157
+ if (oBindingInfos.title) {
158
+ oTitle.addStyleClass("sapFCardHeaderItemBinded");
159
+ }
160
+
161
+ oRm.renderControl(oTitle);
162
+
163
+ if (sStatus && oHeader.getStatusVisible()) {
164
+ oRm.openStart("span", sId + "-status")
165
+ .class("sapFCardStatus");
166
+
167
+ if (oBindingInfos.statusText) {
168
+ oRm.class("sapFCardHeaderItemBinded");
169
+ }
170
+
171
+ oRm.openEnd()
172
+ .text(sStatus)
173
+ .close("span");
174
+ }
175
+
176
+ oRm.close("div"); // sapFCardHeaderTextFirstLine
177
+ }
178
+ };
179
+
180
+ BaseHeaderRenderer.renderMainPartSecondLine = function (oRm, oHeader) {
181
+ const oBindingInfos = oHeader.mBindingInfos;
182
+ const bHasSubtitle = oHeader.getSubtitle() || oBindingInfos.subtitle;
183
+ const oDataTimestamp = oHeader.getAggregation("_dataTimestamp");
184
+ const bHasDataTimestamp = oHeader.getDataTimestamp() || oBindingInfos.dataTimestamp;
185
+ const oSubtitle = oHeader.getAggregation("_subtitle");
186
+
187
+ if (bHasSubtitle || bHasDataTimestamp) {
188
+ oRm.openStart("div")
189
+ .class("sapFCardHeaderTextSecondLine");
190
+
191
+ if (bHasDataTimestamp) {
192
+ oRm.class("sapFCardHeaderLineIncludesDataTimestamp");
193
+ }
194
+
195
+ oRm.openEnd();
196
+
197
+ if (bHasSubtitle) {
198
+
199
+ if (oBindingInfos.subtitle) {
200
+ oSubtitle.addStyleClass("sapFCardHeaderItemBinded");
201
+ }
202
+
203
+ oRm.renderControl(oSubtitle);
204
+ }
205
+
206
+ if (bHasDataTimestamp) {
207
+ oRm.renderControl(oDataTimestamp);
208
+ }
209
+
210
+ oRm.close("div"); //closes sapFCardHeaderTextSecondLine
211
+ }
212
+ };
213
+
15
214
  BaseHeaderRenderer.renderAvatar = function (oRm, oHeader) {
16
215
  var oAvatar = oHeader.getAggregation("_avatar"),
17
216
  oBindingInfos = oHeader.mBindingInfos,
@@ -31,7 +230,7 @@ sap.ui.define([], function () {
31
230
  }
32
231
  };
33
232
 
34
- BaseHeaderRenderer.renderBanner = function(oRm, oHeader) {
233
+ BaseHeaderRenderer._renderBanner = function(oRm, oHeader) {
35
234
  const aBannerLines = oHeader.getBannerLines() || [];
36
235
  const aVisibleLines = aBannerLines.filter((oText) => {
37
236
  return oText.getVisible();
@@ -69,7 +268,7 @@ sap.ui.define([], function () {
69
268
  * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer
70
269
  * @param {sap.f.cards.Header} oHeader An object representation of the control that should be rendered
71
270
  */
72
- BaseHeaderRenderer.linkAttributes = function(oRm, oHeader) {
271
+ BaseHeaderRenderer._renderLinkAttributes = function(oRm, oHeader) {
73
272
  oRm.attr("href", oHeader.getHref())
74
273
  .attr("rel", "noopener noreferrer");
75
274
 
@@ -82,5 +281,15 @@ sap.ui.define([], function () {
82
281
  oRm.attr("draggable", "false");
83
282
  };
84
283
 
284
+ BaseHeaderRenderer._renderToolbar = function (oRm, oToolbar) {
285
+ oRm.openStart("div")
286
+ .class("sapFCardHeaderToolbarCont")
287
+ .openEnd();
288
+
289
+ oRm.renderControl(oToolbar);
290
+
291
+ oRm.close("div");
292
+ };
293
+
85
294
  return BaseHeaderRenderer;
86
295
  }, /* bExport= */ true);
@@ -48,7 +48,7 @@ sap.ui.define([
48
48
  * @implements sap.f.cards.IHeader
49
49
  *
50
50
  * @author SAP SE
51
- * @version 1.133.2
51
+ * @version 1.135.0
52
52
  *
53
53
  * @constructor
54
54
  * @public
@@ -167,16 +167,10 @@ sap.ui.define([
167
167
  BaseHeader.prototype.init.apply(this, arguments);
168
168
 
169
169
  this.data("sap-ui-fastnavgroup", "true", true); // Define group for F6 handling
170
-
171
- this._oAriaAvatarText = new InvisibleText({id: this.getId() + "-ariaAvatarText"});
172
- this._oAriaAvatarText.setText(this._oRb.getText("ARIA_HEADER_AVATAR_TEXT"));
173
170
  };
174
171
 
175
172
  Header.prototype.exit = function () {
176
173
  BaseHeader.prototype.exit.apply(this, arguments);
177
-
178
- this._oAriaAvatarText.destroy();
179
- this._oAriaAvatarText = null;
180
174
  };
181
175
 
182
176
  /**
@@ -307,7 +301,7 @@ sap.ui.define([
307
301
  }
308
302
 
309
303
  if (this.getIconSrc() || this.getIconInitials()) {
310
- aIds.push(this.getId() + "-ariaAvatarText");
304
+ aIds.push(this._getAvatar().getId());
311
305
  }
312
306
 
313
307
  aIds.push(this._getBannerLinesIds());
@@ -13,166 +13,5 @@ sap.ui.define([
13
13
  var HeaderRenderer = Renderer.extend(BaseHeaderRenderer);
14
14
  HeaderRenderer.apiVersion = 2;
15
15
 
16
- /**
17
- * Render a header.
18
- *
19
- * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer
20
- * @param {sap.f.cards.Header} oHeader An object representation of the control that should be rendered
21
- */
22
- HeaderRenderer.render = function (oRm, oHeader) {
23
- var sId = oHeader.getId(),
24
- oBindingInfos = oHeader.mBindingInfos,
25
- sStatus = oHeader.getStatusText(),
26
- oTitle = oHeader.getAggregation("_title"),
27
- oSubtitle = oHeader.getAggregation("_subtitle"),
28
- bHasSubtitle = oHeader.getSubtitle() || oBindingInfos.subtitle,
29
- oDataTimestamp = oHeader.getAggregation("_dataTimestamp"),
30
- bHasDataTimestamp = oHeader.getDataTimestamp() || oBindingInfos.dataTimestamp,
31
- bLoading = oHeader.isLoading(),
32
- oError = oHeader.getAggregation("_error"),
33
- oToolbar = oHeader.getToolbar(),
34
- bUseTileLayout = oHeader.getProperty("useTileLayout"),
35
- bRenderAsLink = oHeader.isLink();
36
-
37
- oRm.openStart("div", oHeader)
38
- .class("sapFCardHeader");
39
-
40
- if (bLoading) {
41
- oRm.class("sapFCardHeaderLoading");
42
- }
43
-
44
- if (oHeader.isInteractive()) {
45
- oRm.class("sapFCardSectionClickable");
46
- }
47
-
48
- if (oHeader.getIconSrc() && oHeader.getIconVisible()) {
49
- oRm.class("sapFCardHeaderHasIcon");
50
- }
51
-
52
- if (oToolbar?.getVisible()) {
53
- oRm.class("sapFCardHeaderHasToolbar");
54
- }
55
-
56
- oRm.openEnd();
57
-
58
- if (bRenderAsLink) {
59
- oRm.openStart("a");
60
- BaseHeaderRenderer.linkAttributes(oRm, oHeader);
61
- } else {
62
- oRm.openStart("div");
63
- }
64
-
65
- oRm.attr("id", sId + "-focusable")
66
- .class("sapFCardHeaderWrapper");
67
-
68
- if (oHeader.getProperty("focusable") && !oHeader._isInsideGridContainer()) {
69
- oRm.attr("tabindex", "0");
70
- }
71
-
72
- if (!oHeader._isInsideGridContainer()) {
73
- oRm.accessibilityState({
74
- labelledby: {value: oHeader._getAriaLabelledBy(), append: true},
75
- role: oHeader.getFocusableElementAriaRole(),
76
- roledescription: oHeader.getAriaRoleDescription()
77
- });
78
- }
79
-
80
- oRm.openEnd();
81
-
82
- if (oError) {
83
- oRm.renderControl(oError);
84
-
85
- oRm.close("div");
86
- oRm.close("div");
87
- return;
88
- }
89
-
90
- if (!bUseTileLayout) {
91
- BaseHeaderRenderer.renderAvatar(oRm, oHeader);
92
- }
93
-
94
- oRm.openStart("div")
95
- .class("sapFCardHeaderText")
96
- .openEnd();
97
-
98
- if (oHeader.getTitle() || oBindingInfos.title) {
99
- oRm.openStart("div")
100
- .class("sapFCardHeaderTextFirstLine")
101
- .openEnd();
102
-
103
- if (oBindingInfos.title) {
104
- oTitle.addStyleClass("sapFCardHeaderItemBinded");
105
- }
106
-
107
- oRm.renderControl(oTitle);
108
-
109
- if (sStatus && oHeader.getStatusVisible()) {
110
- oRm.openStart("span", sId + "-status")
111
- .class("sapFCardStatus");
112
-
113
- if (oBindingInfos.statusText) {
114
- oRm.class("sapFCardHeaderItemBinded");
115
- }
116
-
117
- oRm.openEnd()
118
- .text(sStatus)
119
- .close("span");
120
- }
121
-
122
- oRm.close("div");
123
-
124
- if (bHasSubtitle || bHasDataTimestamp) {
125
- oRm.openStart("div")
126
- .class("sapFCardHeaderTextSecondLine");
127
-
128
- if (bHasDataTimestamp) {
129
- oRm.class("sapFCardHeaderLineIncludesDataTimestamp");
130
- }
131
-
132
- oRm.openEnd();
133
-
134
- if (bHasSubtitle) {
135
-
136
- if (oBindingInfos.subtitle) {
137
- oSubtitle.addStyleClass("sapFCardHeaderItemBinded");
138
- }
139
-
140
- oRm.renderControl(oSubtitle);
141
- }
142
-
143
- if (bHasDataTimestamp) {
144
- oRm.renderControl(oDataTimestamp);
145
- }
146
-
147
- oRm.close("div"); //closes sapFCardHeaderTextSecondLine
148
- }
149
- }
150
-
151
- oRm.close("div");
152
-
153
- if (bUseTileLayout) {
154
- BaseHeaderRenderer.renderAvatar(oRm, oHeader);
155
- }
156
-
157
- BaseHeaderRenderer.renderBanner(oRm, oHeader);
158
-
159
- if (bRenderAsLink) {
160
- oRm.close("a");
161
- } else {
162
- oRm.close("div");
163
- }
164
-
165
- if (oToolbar) {
166
- oRm.openStart("div")
167
- .class("sapFCardHeaderToolbarCont")
168
- .openEnd();
169
- oRm.renderControl(oToolbar);
170
-
171
- oRm.close("div");
172
- }
173
-
174
- oRm.close("div");
175
- };
176
-
177
16
  return HeaderRenderer;
178
17
  }, /* bExport= */ true);
@@ -58,7 +58,7 @@ sap.ui.define([
58
58
  * @implements sap.f.cards.IHeader
59
59
  *
60
60
  * @author SAP SE
61
- * @version 1.133.2
61
+ * @version 1.135.0
62
62
  *
63
63
  * @constructor
64
64
  * @public
@@ -286,16 +286,10 @@ sap.ui.define([
286
286
  BaseHeader.prototype.init.apply(this, arguments);
287
287
 
288
288
  this.data("sap-ui-fastnavgroup", "true", true); // Define group for F6 handling
289
-
290
- this._oAriaAvatarText = new InvisibleText({id: this.getId() + "-ariaAvatarText"});
291
- this._oAriaAvatarText.setText(this._oRb.getText("ARIA_HEADER_AVATAR_TEXT"));
292
289
  };
293
290
 
294
291
  NumericHeader.prototype.exit = function () {
295
292
  BaseHeader.prototype.exit.apply(this, arguments);
296
-
297
- this._oAriaAvatarText.destroy();
298
- this._oAriaAvatarText = null;
299
293
  };
300
294
 
301
295
  /**
@@ -401,7 +395,7 @@ sap.ui.define([
401
395
  id: this.getId() + "-title",
402
396
  wrapping: true,
403
397
  maxLines: this.getTitleMaxLines()
404
- });
398
+ }).addStyleClass("sapFCardTitle");
405
399
 
406
400
  this.setAggregation("_title", oControl);
407
401
  }
@@ -540,7 +534,7 @@ sap.ui.define([
540
534
  aIds.push(this._getUnitOfMeasurement().getId());
541
535
 
542
536
  if (this.getIconSrc() || this.getIconInitials()) {
543
- aIds.push(this.getId() + "-ariaAvatarText");
537
+ aIds.push(this._getAvatar().getId());
544
538
  }
545
539
 
546
540
  if (this.getNumber() || this.getScale()) {