@openui5/sap.f 1.133.0 → 1.134.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 (150) hide show
  1. package/.reuse/dep5 +0 -7
  2. package/THIRDPARTY.txt +1 -22
  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 +65 -25
  12. package/src/sap/f/CardRenderer.js +9 -6
  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 +1 -1
  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 +35 -20
  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 +0 -3
  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 +0 -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 +0 -2
  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 +0 -2
  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 +0 -2
  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/Card.less +77 -41
  144. package/src/sap/f/themes/base/CardHeaders.less +27 -37
  145. package/src/sap/f/themes/base/CardLoading.less +3 -3
  146. package/src/sap/f/themes/base/DynamicPage.less +5 -0
  147. package/src/sap/f/themes/base/GridContainer.less +10 -13
  148. package/src/sap/f/themes/sap_hcb/base_Card.less +3 -10
  149. package/src/sap/f/themes/sap_hcb/base_GridContainer.less +0 -13
  150. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +0 -5
@@ -15,7 +15,6 @@ sap.ui.define([
15
15
  "sap/base/strings/capitalize",
16
16
  "sap/ui/core/Lib",
17
17
  "sap/ui/core/RenderManager",
18
- 'sap/ui/core/delegate/ItemNavigation',
19
18
  "sap/ui/base/ManagedObjectObserver",
20
19
  "sap/ui/core/Control",
21
20
  "sap/ui/core/Element",
@@ -37,7 +36,6 @@ sap.ui.define([
37
36
  capitalize,
38
37
  Library,
39
38
  RenderManager,
40
- ItemNavigation,
41
39
  ManagedObjectObserver,
42
40
  Control,
43
41
  Element,
@@ -50,21 +48,6 @@ sap.ui.define([
50
48
  ) {
51
49
  "use strict";
52
50
 
53
- /**
54
- * For these controls check if the grid item visual focus can be displayed from the control inside.
55
- */
56
- var mOwnVisualFocusControls = {
57
- "sap.f.Card": function (oCard) {
58
- return oCard.getCardHeader() || oCard.getCardContent();
59
- },
60
- "sap.ui.integration.widgets.Card": function (oCard) {
61
- return oCard.getCardHeader() || oCard.getCardContent();
62
- },
63
- "sap.m.GenericTile": function () {
64
- return true;
65
- }
66
- };
67
-
68
51
  /**
69
52
  * Gets the column-span property from the item's layout data.
70
53
  * @private
@@ -116,6 +99,9 @@ sap.ui.define([
116
99
  *
117
100
  * All rows have the same height and all columns have the same width. Their sizes can be configured with the use of the <code>layout</code> aggregation and <code>{@link sap.f.GridContainerSettings}</code>.
118
101
  *
102
+ * **Note:** To ensure better keyboard and accessibility support,
103
+ * child items should implement <code>sap.f.IGridContainerItem</code> interface.
104
+ *
119
105
  * <h3>Usage</h3>
120
106
  *
121
107
  * <i>When to use</i>
@@ -177,7 +163,7 @@ sap.ui.define([
177
163
  * @see {@link sap.f.dnd.GridDropInfo}
178
164
  *
179
165
  * @author SAP SE
180
- * @version 1.133.0
166
+ * @version 1.134.0
181
167
  *
182
168
  * @extends sap.ui.core.Control
183
169
  *
@@ -398,6 +384,10 @@ sap.ui.define([
398
384
  }
399
385
 
400
386
  oContainer._reflectItemVisibilityToWrapper(this);
387
+
388
+ if (this.isA("sap.f.IGridContainerItem")) {
389
+ this.setGridItemRole("listitem");
390
+ }
401
391
  };
402
392
 
403
393
  /**
@@ -407,8 +397,6 @@ sap.ui.define([
407
397
  GridContainer.prototype._onAfterItemRendering = function () {
408
398
  var oContainer = this.getParent();
409
399
 
410
- oContainer._checkOwnVisualFocus(this);
411
-
412
400
  oContainer._resizeListeners[this.getId()] = ResizeHandler.register(this, oContainer._resizeItemHandler);
413
401
 
414
402
  oContainer._setItemNavigationItems();
@@ -416,28 +404,6 @@ sap.ui.define([
416
404
  oContainer._applyItemAutoRows(this);
417
405
  };
418
406
 
419
- GridContainer.prototype._onItemWrapperFocusIn = function (oEvent) {
420
- var oFocusedDomRef = this._oItemNavigation.getFocusedDomRef(),
421
- oControl,
422
- sAccText;
423
-
424
- if (!oFocusedDomRef || !oFocusedDomRef.firstChild) {
425
- return;
426
- }
427
-
428
- oControl = Element.closestTo(oFocusedDomRef.firstChild);
429
-
430
- if (!oControl || !oControl.getAriaRoleDescription) {
431
- return;
432
- }
433
-
434
- // announce the aria role description text, if any
435
- sAccText = oControl.getAriaRoleDescription();
436
- if (sAccText) {
437
- InvisibleMessage.getInstance().announce(sAccText);
438
- }
439
- };
440
-
441
407
  /**
442
408
  * Reflects "visible" behavior of the control to the wrapper element - sapFGridContainerItemWrapper.
443
409
  *
@@ -445,7 +411,6 @@ sap.ui.define([
445
411
  * @param {sap.ui.core.Control} oItem The control of which we will check "visible" property.
446
412
  */
447
413
  GridContainer.prototype._reflectItemVisibilityToWrapper = function (oItem) {
448
-
449
414
  var oItemWrapper = GridContainerUtils.getItemWrapper(oItem),
450
415
  $oItemWrapper;
451
416
 
@@ -504,32 +469,28 @@ sap.ui.define([
504
469
  if (!this._isRenderingFinished) {
505
470
  return;
506
471
  }
507
- var that = this,
508
- aWrapperItemsDomRef = [];
472
+ var aItemsDomRef = [];
509
473
 
510
474
  //Initialize the ItemNavigation
511
- if (!that._oItemNavigation) {
512
- that._oItemNavigation = new GridContainerItemNavigation()
475
+ if (!this._oItemNavigation) {
476
+ this._oItemNavigation = new GridContainerItemNavigation()
513
477
  .setCycling(false)
514
478
  .setDisabledModifiers({
515
479
  sapnext : ["alt", "meta", "ctrl"],
516
480
  sapprevious : ["alt", "meta", "ctrl"]
517
481
  })
518
482
  .setTableMode(true, true)
519
- .setFocusedIndex(0)
520
- .attachEvent(ItemNavigation.Events.AfterFocus, this._onItemWrapperFocusIn.bind(this));
483
+ .setFocusedIndex(0);
521
484
 
522
- that.addDelegate(this._oItemNavigation);
485
+ this.addDelegate(this._oItemNavigation);
523
486
  }
524
487
 
525
- that.$("listUl").children().map(function (iIndex, oWrapperItem) {
526
- if (oWrapperItem.getAttribute("class").indexOf("sapFGridContainerItemWrapper") > -1) {
527
- aWrapperItemsDomRef.push(oWrapperItem);
528
- }
488
+ this.getItems().map((oItem) => {
489
+ aItemsDomRef.push(GridContainerUtils.getItemFocusDomRef(oItem));
529
490
  });
530
491
 
531
- that._oItemNavigation.setRootDomRef(that.getDomRef());
532
- that._oItemNavigation.setItemDomRefs(aWrapperItemsDomRef);
492
+ this._oItemNavigation.setRootDomRef(this.getDomRef());
493
+ this._oItemNavigation.setItemDomRefs(aItemsDomRef);
533
494
  };
534
495
 
535
496
  /**
@@ -955,8 +916,15 @@ sap.ui.define([
955
916
  mStyles = mStylesInfo.styles,
956
917
  aClasses = mStylesInfo.classes,
957
918
  oWrapper = document.createElement("div");
958
- oWrapper.setAttribute("id", GridContainerRenderer.generateWrapperId(oItem, this));
919
+
920
+ oWrapper.setAttribute("id", GridContainerRenderer.generateWrapperId(oItem, this));
921
+
922
+ if (!oItem.isA("sap.f.IGridContainerItem")) {
959
923
  oWrapper.setAttribute("tabindex", "0");
924
+ oWrapper.classList.add("sapFGCFocusable");
925
+ } else {
926
+ oItem.setGridItemRole("listitem");
927
+ }
960
928
 
961
929
  mStyles.forEach(function (sValue, sKey) {
962
930
  oWrapper.style.setProperty(sKey, sValue);
@@ -979,53 +947,8 @@ sap.ui.define([
979
947
  this.fireEvent("borderReached", mParameters);
980
948
  };
981
949
 
982
- /**
983
- * Keyboard handling of [keydown], [keyup], [enter], [space] keys
984
- * Stops propagation to avoid triggering the listeners for the same keys of the parent control (the AnchorBar)
985
- */
986
- ["onkeypress", "onkeyup", "onkeydown", "onsapenter", "onsapselect", "onsapspace"].forEach(function (sName) {
987
- GridContainer.prototype[sName] = function (oEvent) {
988
- if (!this._isItemWrapper(oEvent.target)) {
989
- return;
990
- }
991
-
992
- if (sName === "onsapspace") {
993
- // prevent page scrolling
994
- oEvent.preventDefault();
995
- }
996
-
997
- var oItem = Element.closestTo(oEvent.target.firstChild);
998
-
999
- if (oItem) {
1000
- var oFocusDomRef = oItem.getFocusDomRef(),
1001
- oFocusControl = Element.closestTo(oFocusDomRef);
1002
-
1003
- if (oFocusControl && oFocusControl[sName]) {
1004
- oFocusControl[sName].call(oFocusControl, oEvent);
1005
- }
1006
- }
1007
- };
1008
- });
1009
-
1010
- /**
1011
- * Checks if the control will display the grid item visual focus.
1012
- * @param {sap.ui.core.Control} oControl The control
1013
- * @private
1014
- */
1015
- GridContainer.prototype._checkOwnVisualFocus = function (oControl) {
1016
- var sName = oControl.getMetadata().getName(),
1017
- oFocusDomRef;
1018
-
1019
- if (mOwnVisualFocusControls[sName] && mOwnVisualFocusControls[sName](oControl)) {
1020
- oFocusDomRef = oControl.getFocusDomRef();
1021
-
1022
- // remove the focus DOM ref from the tab chain
1023
- if (oFocusDomRef.getAttribute("tabindex") === "0") {
1024
- oFocusDomRef.setAttribute("tabindex", -1);
1025
- oFocusDomRef.tabIndex = -1;
1026
- }
1027
- GridContainerUtils.getItemWrapper(oControl).classList.add("sapFGridContainerItemWrapperNoVisualFocus");
1028
- }
950
+ GridContainer.prototype._isListItem = function (oControl) {
951
+ return oControl.isA("sap.f.IGridContainerItem");
1029
952
  };
1030
953
 
1031
954
  /**
@@ -1038,11 +961,14 @@ sap.ui.define([
1038
961
  return;
1039
962
  }
1040
963
 
1041
- if (!this._isItemWrapper(oEvent.target)) {
964
+ const oSource = oEvent.srcControl;
965
+ const bIsGridContainerItem = oSource?.isA("sap.f.IGridContainerItem");
966
+
967
+ if (!bIsGridContainerItem && !oEvent.target.classList.contains("sapFGridContainerItemWrapper")) {
1042
968
  return;
1043
969
  }
1044
970
 
1045
- var oItem = Element.closestTo(oEvent.target.firstElementChild),
971
+ var oItem = bIsGridContainerItem ? oSource : Element.closestTo(oEvent.target.firstElementChild),
1046
972
  iLength = this.getItems().length,
1047
973
  iItemIndex = this.indexOfItem(oItem),
1048
974
  iInsertAt = -1,
@@ -1169,14 +1095,38 @@ sap.ui.define([
1169
1095
  return GridNavigationMatrix.create(this.getDomRef("listUl"), aItemsDomRefs);
1170
1096
  };
1171
1097
 
1172
- GridContainer.prototype._isItemWrapper = function (oElement) {
1173
- return oElement.classList.contains("sapFGridContainerItemWrapper");
1174
- };
1175
-
1176
1098
  GridContainer.prototype._handleThemeApplied = function () {
1177
1099
  this._bThemeApplied = true;
1178
1100
  Theming.detachApplied(this._handleThemeAppliedBound);
1179
1101
  };
1180
1102
 
1103
+ /**
1104
+ * Keyboard handling of [keydown], [keyup], [enter], [space] keys
1105
+ * Stops propagation to avoid triggering the listeners for the same keys of the parent control (the AnchorBar)
1106
+ */
1107
+ ["onkeypress", "onkeyup", "onkeydown", "onsapenter", "onsapselect", "onsapspace"].forEach(function (sName) {
1108
+ GridContainer.prototype[sName] = function (oEvent) {
1109
+ if (!oEvent.target?.classList.contains("sapFGCFocusable")) {
1110
+ return;
1111
+ }
1112
+
1113
+ if (sName === "onsapspace") {
1114
+ // prevent page scrolling
1115
+ oEvent.preventDefault();
1116
+ }
1117
+
1118
+ var oItem = Element.closestTo(oEvent.target.firstChild);
1119
+
1120
+ if (oItem) {
1121
+ var oFocusDomRef = oItem.getFocusDomRef(),
1122
+ oFocusControl = Element.closestTo(oFocusDomRef);
1123
+
1124
+ if (oFocusControl && oFocusControl[sName]) {
1125
+ oFocusControl[sName].call(oFocusControl, oEvent);
1126
+ }
1127
+ }
1128
+ };
1129
+ });
1130
+
1181
1131
  return GridContainer;
1182
1132
  });
@@ -21,7 +21,7 @@ sap.ui.define(['sap/ui/core/LayoutData'],
21
21
  * @see {@link topic:32d4b9c2b981425dbc374d3e9d5d0c2e Grid Controls}
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.133.0
24
+ * @version 1.134.0
25
25
  *
26
26
  * @extends sap.ui.core.LayoutData
27
27
  *
@@ -100,6 +100,7 @@ sap.ui.define([], function () {
100
100
  var mStylesInfo = this.getStylesForItemWrapper(oItem, oControl),
101
101
  mStyles = mStylesInfo.styles,
102
102
  aClasses = mStylesInfo.classes,
103
+ bIsListItem = oControl._isListItem(oItem),
103
104
  mAccState = {
104
105
  role: "listitem"
105
106
  };
@@ -108,9 +109,13 @@ sap.ui.define([], function () {
108
109
  mAccState.roledescription = oItem.getAriaRoleDescription();
109
110
  }
110
111
 
111
- oRM.openStart("div", this.generateWrapperId(oItem, oControl))
112
- .attr("tabindex", "0")
113
- .accessibilityState(oControl, mAccState);
112
+ oRM.openStart("div", this.generateWrapperId(oItem, oControl));
113
+
114
+ if (!bIsListItem) {
115
+ oRM.attr("tabindex", "0")
116
+ .class("sapFGCFocusable")
117
+ .accessibilityState(oControl, mAccState);
118
+ }
114
119
 
115
120
  mStyles.forEach(function (sValue, sKey) {
116
121
  oRM.style(sKey, sValue);
@@ -58,14 +58,14 @@ sap.ui.define([
58
58
  * Can be used to define the sizes of columns and rows for different screen sizes, by using the <code>layout</code> aggregations of <code>sap.f.GridContainer</code>.
59
59
  *
60
60
  * @author SAP SE
61
- * @version 1.133.0
61
+ * @version 1.134.0
62
62
  *
63
63
  * @extends sap.ui.base.ManagedObject
64
64
  *
65
65
  * @see {@link topic:32d4b9c2b981425dbc374d3e9d5d0c2e Grid Controls}
66
66
  *
67
67
  * @author SAP SE
68
- * @version 1.133.0
68
+ * @version 1.134.0
69
69
  *
70
70
  * @since 1.65
71
71
  * @public
@@ -43,6 +43,14 @@ sap.ui.define([
43
43
  return null;
44
44
  },
45
45
 
46
+ getItemFocusDomRef: function (oItem) {
47
+ if (oItem.isA("sap.f.IGridContainerItem")) {
48
+ return oItem.getFocusDomRef();
49
+ }
50
+
51
+ return this.getItemWrapper(oItem);
52
+ },
53
+
46
54
  createConfig: function (oGrid, oItem) {
47
55
  return {
48
56
  grid: oGrid,
@@ -93,7 +93,7 @@ sap.ui.define([
93
93
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout MDN web docs: CSS Grid Layout}
94
94
  *
95
95
  * @author SAP SE
96
- * @version 1.133.0
96
+ * @version 1.134.0
97
97
  *
98
98
  * @extends sap.m.ListBase
99
99
  * @implements sap.ui.layout.cssgrid.IGridConfigurable
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.m.ListItemBase
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.133.0
27
+ * @version 1.134.0
28
28
  *
29
29
  * @since 1.70
30
30
  * @constructor
@@ -56,7 +56,7 @@ sap.ui.define([
56
56
  * @extends sap.m.IllustratedMessage
57
57
  *
58
58
  * @author SAP SE
59
- * @version 1.133.0
59
+ * @version 1.134.0
60
60
  *
61
61
  * @constructor
62
62
  * @public
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.m.Illustration
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.133.0
33
+ * @version 1.134.0
34
34
  *
35
35
  * @constructor
36
36
  * @public
@@ -22,7 +22,7 @@ sap.ui.define(['sap/m/PlanningCalendarLegend', "sap/ui/core/Lib", 'sap/ui/unifie
22
22
  * @extends sap.m.PlanningCalendarLegend
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.133.0
25
+ * @version 1.134.0
26
26
  *
27
27
  * @constructor
28
28
  * @private
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.core.Control
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.133.0
37
+ * @version 1.134.0
38
38
  *
39
39
  * @constructor
40
40
  * @public
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @extends sap.ui.core.Control
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.133.0
43
+ * @version 1.134.0
44
44
  *
45
45
  * @constructor
46
46
  * @public
@@ -23,7 +23,7 @@ sap.ui.define(['sap/ui/core/Element', 'sap/ui/base/ManagedObjectObserver', './sh
23
23
  * @extends sap.ui.core.Element
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.133.0
26
+ * @version 1.134.0
27
27
  *
28
28
  * @constructor
29
29
  * @public
@@ -58,7 +58,7 @@ function(
58
58
  * @implements sap.f.IShellBar, sap.m.IBar, sap.tnt.IToolHeader
59
59
  *
60
60
  * @author SAP SE
61
- * @version 1.133.0
61
+ * @version 1.134.0
62
62
  *
63
63
  * @constructor
64
64
  * @public
@@ -39,6 +39,7 @@ function() {
39
39
  .class("sapFShellBarTitleHidden")
40
40
  .attr("role", "heading")
41
41
  .attr("aria-level", "1")
42
+ .attr("aria-hidden", "true")
42
43
  .openEnd();
43
44
 
44
45
  oRm.text(sTitle).close("div");
@@ -151,7 +151,7 @@ sap.ui.define([
151
151
  * @extends sap.ui.core.Control
152
152
  *
153
153
  * @author SAP SE
154
- * @version 1.133.0
154
+ * @version 1.134.0
155
155
  *
156
156
  * @constructor
157
157
  * @public
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @extends sap.ui.core.Item
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.133.0
30
+ * @version 1.134.0
31
31
  *
32
32
  * @constructor
33
33
  * @public
@@ -53,7 +53,7 @@ sap.ui.define([
53
53
  * @abstract
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.133.0
56
+ * @version 1.134.0
57
57
  *
58
58
  * @constructor
59
59
  * @public
@@ -187,7 +187,8 @@ sap.ui.define([
187
187
 
188
188
  this._oToolbarDelegate = {
189
189
  onfocusin: this._onToolbarFocusin,
190
- onfocusout: this._onToolbarFocusout
190
+ onfocusout: this._onToolbarFocusout,
191
+ onAfterRendering: this._addMarginToHeaderText
191
192
  };
192
193
  };
193
194
 
@@ -227,6 +228,8 @@ sap.ui.define([
227
228
  oToolbar.addEventDelegate(this._oToolbarDelegate, this);
228
229
  }
229
230
 
231
+ this._addMarginToHeaderText();
232
+
230
233
  this.getBannerLines()?.forEach((oText) => {
231
234
  this._enhanceText(oText);
232
235
  });
@@ -283,7 +286,7 @@ sap.ui.define([
283
286
  };
284
287
 
285
288
  BaseHeader.prototype._handleTap = function (oEvent) {
286
- if (!this.isInteractive() || this._isInsideToolbar(oEvent.target)) {
289
+ if (!oEvent.target.closest(".sapFCardSectionClickable") || !this.isInteractive() || this._isInsideToolbar(oEvent.target)) {
287
290
  return;
288
291
  }
289
292
 
@@ -312,6 +315,23 @@ sap.ui.define([
312
315
  this.removeStyleClass("sapFCardHeaderToolbarFocused");
313
316
  };
314
317
 
318
+ /**
319
+ * Adds margin to the header text, which ensures the text will be visible under the toolbar.
320
+ * @private
321
+ */
322
+ BaseHeader.prototype._addMarginToHeaderText = function () {
323
+ const oToolbar = this.getToolbar();
324
+ const oHeaderText = this.getDomRef().getElementsByClassName("sapFCardHeaderText")[0];
325
+
326
+ if (oHeaderText && oToolbar) {
327
+ if (oToolbar.getVisible()) {
328
+ oHeaderText.style.marginInlineEnd = oToolbar.getDomRef().offsetWidth + "px";
329
+ } else {
330
+ oHeaderText.style.marginInlineEnd = 0;
331
+ }
332
+ }
333
+ };
334
+
315
335
  /*
316
336
  * @override
317
337
  */
@@ -480,27 +500,21 @@ sap.ui.define([
480
500
  }).join(" ");
481
501
  };
482
502
 
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
- }
503
+ BaseHeader.prototype.isInteractive = function() {
504
+ return this.hasListeners("press");
505
+ };
493
506
 
494
- oParent = oParent.getParent();
495
- if (!oParent) {
507
+ BaseHeader.prototype.isFocusable = function() {
508
+ if (!this.getProperty("focusable")) {
496
509
  return false;
497
510
  }
498
511
 
499
- return oParent.isA("sap.f.GridContainer");
500
- };
512
+ const oParent = this.getParent();
513
+ if (oParent && oParent.isA("sap.f.CardBase") && oParent.isRoleListItem()) {
514
+ return this.isInteractive();
515
+ }
501
516
 
502
- BaseHeader.prototype.isInteractive = function() {
503
- return this.hasListeners("press");
517
+ return true;
504
518
  };
505
519
 
506
520
  BaseHeader.prototype._isInsideToolbar = function(oElement) {
@@ -510,7 +524,8 @@ sap.ui.define([
510
524
  };
511
525
 
512
526
  /**
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.
527
+ * When the option <code>useTooltips</code> is set to <code>true</code>,
528
+ * a tooltip is added to the text in case it gets truncated.
514
529
  * @private
515
530
  * @param {sap.m.Text} oText The text control.
516
531
  */