@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
@@ -108,7 +108,7 @@ sap.ui.define([
108
108
  *
109
109
  * @extends sap.ui.core.Control
110
110
  * @author SAP SE
111
- * @version 1.126.1
111
+ * @version 1.128.0
112
112
  *
113
113
  * @constructor
114
114
  * @public
@@ -650,6 +650,27 @@ sap.ui.define([
650
650
  */
651
651
  endColumn : {type : "boolean"}
652
652
  }
653
+ },
654
+
655
+ /**
656
+ * Fired when user resize columns.
657
+ * @since 1.128
658
+ */
659
+ columnsDistributionChange : {
660
+ parameters : {
661
+ /**
662
+ * The current <code>media</code> - dekstop or tablet.
663
+ */
664
+ media: { type: "string" },
665
+ /**
666
+ * The value of the <code>layout</code> property.
667
+ */
668
+ layout: { type: "string" },
669
+ /**
670
+ * Sizes of all columns in percentages, separated by '/'.
671
+ */
672
+ columnsSizes : {type : "string"}
673
+ }
653
674
  }
654
675
  }
655
676
  },
@@ -713,20 +734,11 @@ sap.ui.define([
713
734
  this._boundColumnSeparatorMoveEnd = this._onColumnSeparatorMoveEnd.bind(this);
714
735
  this._oLocalStorage = {};
715
736
  this._bNeverRendered = true;
716
- };
717
737
 
718
- FlexibleColumnLayout.prototype._getLocalStorage = function (iMaxColumnsCount) {
719
- if (!iMaxColumnsCount) {
720
- iMaxColumnsCount = this.getMaxColumnsCount();
721
- }
722
- var sKey = (iMaxColumnsCount === 3) ? "desktop" : "tablet";
723
- if (!this._oLocalStorage[sKey]) {
724
- var sPrefix = sKey === 'desktop' ?
725
- FlexibleColumnLayout.STORAGE_PREFIX_DESKTOP :
726
- FlexibleColumnLayout.STORAGE_PREFIX_TABLET;
727
- this._oLocalStorage[sKey] = new Storage(Storage.Type.local, sPrefix);
728
- }
729
- return this._oLocalStorage[sKey];
738
+ this._oBeginColumnWidth = {
739
+ tablet: 0,
740
+ desktop: 0
741
+ };
730
742
  };
731
743
 
732
744
  FlexibleColumnLayout.prototype._announceMessage = function (sResourceBundleKey) {
@@ -765,6 +777,7 @@ sap.ui.define([
765
777
 
766
778
  if (this._hasAnyColumnPagesRendered() !== bHadAnyColumnPagesRendered) {
767
779
  this._hideShowColumnSeparators();
780
+ this._updateSeparatorsAriaPositionInfo();
768
781
  }
769
782
  };
770
783
 
@@ -1091,6 +1104,7 @@ sap.ui.define([
1091
1104
  this._oLocalStorage = null;
1092
1105
  this._deregisterResizeHandler();
1093
1106
  this._handleEvent(jQuery.Event("Destroy"));
1107
+ this._detachMoveListeners();
1094
1108
  };
1095
1109
 
1096
1110
  FlexibleColumnLayout.prototype._removeNavContainersFocusOutDelegate = function () {
@@ -1322,6 +1336,12 @@ sap.ui.define([
1322
1336
  if (oOptions.updateDetailedActiveClasses) {
1323
1337
  this._addDetailedActiveClasses(sLayout);
1324
1338
  }
1339
+
1340
+ if (bHasAnimations) {
1341
+ this._attachAfterAllColumnsResizedOnce(this._updateSeparatorsAriaPositionInfo.bind(this));
1342
+ } else {
1343
+ this._updateSeparatorsAriaPositionInfo();
1344
+ }
1325
1345
  };
1326
1346
 
1327
1347
  /**
@@ -1664,10 +1684,24 @@ sap.ui.define([
1664
1684
  FlexibleColumnLayout.prototype._enterInteractiveResizeMode = function (bTouch) {
1665
1685
  var oSeparatorPosition = this._oMoveInfo.separatorPosition;
1666
1686
 
1667
- this._$overlay.css("display", "block");
1687
+ this.toggleStyleClass("sapFFLActiveResize", true);
1668
1688
  this._$overlaySeparator.css(oSeparatorPosition.direction, oSeparatorPosition.x);
1669
1689
  this._oMoveInfo.separator.style.visibility = "hidden";
1690
+ this._attachMoveListeners(bTouch);
1691
+ };
1670
1692
 
1693
+ FlexibleColumnLayout.prototype._exitInteractiveResizeMode = function () {
1694
+ this.toggleStyleClass("sapFFLActiveResize", false);
1695
+ this._oMoveInfo.separator.style.visibility = "";
1696
+ this._oMoveInfo.separator.focus();
1697
+ this._updateAriaPositionInfo(this._oMoveInfo.separator);
1698
+ this._ignoreMouse = false;
1699
+ this._ignoreTouch = false;
1700
+ this._oMoveInfo = null;
1701
+ this._detachMoveListeners();
1702
+ };
1703
+
1704
+ FlexibleColumnLayout.prototype._attachMoveListeners = function (bTouch) {
1671
1705
  if (bTouch) {
1672
1706
  document.addEventListener("touchend", this._boundColumnSeparatorMoveEnd);
1673
1707
  document.addEventListener("touchmove", this._boundColumnSeparatorMove);
@@ -1677,13 +1711,7 @@ sap.ui.define([
1677
1711
  }
1678
1712
  };
1679
1713
 
1680
- FlexibleColumnLayout.prototype._exitInteractiveResizeMode = function () {
1681
- this._$overlay.css("display", "");
1682
- this._oMoveInfo.separator.style.visibility = "";
1683
- this._oMoveInfo.separator.focus();
1684
- this._ignoreMouse = false;
1685
- this._ignoreTouch = false;
1686
- this._oMoveInfo = null;
1714
+ FlexibleColumnLayout.prototype._detachMoveListeners = function () {
1687
1715
  document.removeEventListener("mouseup", this._boundColumnSeparatorMoveEnd);
1688
1716
  document.removeEventListener("mousemove", this._boundColumnSeparatorMove);
1689
1717
  document.removeEventListener("touchend", this._boundColumnSeparatorMoveEnd);
@@ -1712,6 +1740,7 @@ sap.ui.define([
1712
1740
  sSeparator = getSeparatorName(this._oMoveInfo.separator),
1713
1741
  bForwardResizeDirection = this._oMoveInfo.offsetFromStartPosition > 0,
1714
1742
  sColumnEnlargedByDragging = aResizedColumns[bForwardResizeDirection ? 0 : 1],
1743
+ sInitiallyHiddenColumn = aResizedColumns.find((sColumn) => this._oMoveInfo.columnWidths[sColumn] === 0),
1715
1744
  iSeparatorsCount = this._getVisibleColumnSeparatorsCount(),
1716
1745
  iSeparatorsCountDiff = 0,
1717
1746
  iOffsetOnSeparatorsCountChange = 0,
@@ -1722,6 +1751,10 @@ sap.ui.define([
1722
1751
  oNewColumnWidths,
1723
1752
  bResizeWithPinning;
1724
1753
 
1754
+ if (sInitiallyHiddenColumn && sInitiallyHiddenColumn !== sColumnEnlargedByDragging) {
1755
+ return; // atempt to resize in direction that is not allowed
1756
+ }
1757
+
1725
1758
  this._oMoveInfo.columnWidths[aResizedColumns[0]] += this._oMoveInfo.offsetFromPreviousPosition;
1726
1759
  this._oMoveInfo.columnWidths[aResizedColumns[1]] -= this._oMoveInfo.offsetFromPreviousPosition;
1727
1760
  this._oMoveInfo.columnEnlargedByDragging = sColumnEnlargedByDragging;
@@ -2011,12 +2044,30 @@ sap.ui.define([
2011
2044
  FlexibleColumnLayout.prototype._saveResizedColumWidths = function() {
2012
2045
  var sNewLayout = this._oMoveInfo.layout,
2013
2046
  oColumnPercentWidths = this._convertColumnPxWidthToPercent(this._oMoveInfo.columnWidths, sNewLayout),
2014
- sNewWidthsDistribution = Object.values(oColumnPercentWidths).join("/");
2047
+ sNewWidthsDistribution = Object.values(oColumnPercentWidths).join("/"),
2048
+ sMediaKey;
2015
2049
 
2016
2050
  if (this._isValidWidthDistributionForLayout(sNewWidthsDistribution, sNewLayout)) {
2017
- this._getLocalStorage().put(sNewLayout, sNewWidthsDistribution);
2018
- this._getLocalStorage().put("begin", oColumnPercentWidths.begin);
2051
+ sMediaKey = this._getMediaKey();
2052
+ this.fireColumnsDistributionChange({
2053
+ media: sMediaKey,
2054
+ layout: sNewLayout,
2055
+ columnsSizes: sNewWidthsDistribution
2056
+ });
2057
+
2058
+ this._oBeginColumnWidth[sMediaKey] = oColumnPercentWidths.begin;
2059
+ }
2060
+ };
2061
+
2062
+ FlexibleColumnLayout.prototype._getMediaKey = function (iMaxColumnsCount) {
2063
+ var sKey;
2064
+
2065
+ if (!iMaxColumnsCount) {
2066
+ iMaxColumnsCount = this.getMaxColumnsCount();
2019
2067
  }
2068
+ sKey = (iMaxColumnsCount === 3) ? "desktop" : "tablet";
2069
+
2070
+ return sKey;
2020
2071
  };
2021
2072
 
2022
2073
  FlexibleColumnLayout.prototype._getNextLayoutOnResizeByDrag = function (oColumnWidths,
@@ -2155,6 +2206,78 @@ sap.ui.define([
2155
2206
  return oLayoutMatchers[sLayout]();
2156
2207
  };
2157
2208
 
2209
+ /**
2210
+ * Obtains the range of the possible possitions along the X-axis of this separator (allowed by the current layout)
2211
+ * where the start of the axis is the edge of the FlexibleColumnLayout closest to the begin column.
2212
+ * @param {object} oSeparator the separator HTML element
2213
+ * @returns {object} the start and end positions
2214
+ */
2215
+ FlexibleColumnLayout.prototype._getSeparatorMovementRange = function (oSeparator) {
2216
+ var sSeparator = getSeparatorName(oSeparator),
2217
+ sLayout = this.getLayout(),
2218
+ iMaxColumnsForWidth = this.getMaxColumnsCount(),
2219
+ iMaxColumnsForLayoutType = this._getMaxColumnsCountForLayout(sLayout, FlexibleColumnLayout.DESKTOP_BREAKPOINT),
2220
+ bDesktop = iMaxColumnsForWidth === 3,
2221
+ bTablet = iMaxColumnsForWidth === 2,
2222
+ bIsThreeColumnLayout = iMaxColumnsForLayoutType === 3,
2223
+ iTotalSpace = this._iWidth,
2224
+ iSpaceBeforeRange = FlexibleColumnLayout.COLUMN_MIN_WIDTH, // space for the preceding column
2225
+ iSpaceAfterRange = FlexibleColumnLayout.COLUMN_MIN_WIDTH, // space for the suceeding column
2226
+ iRangeLength;
2227
+
2228
+ if (bDesktop && sSeparator === "end") {
2229
+ // (the width of the 'begin' column is fixed, as the user cannot resize it by moving the 'end' separator)
2230
+ iSpaceBeforeRange = this._$columns["begin"].get(0).offsetWidth + FlexibleColumnLayout.COLUMN_MIN_WIDTH; // space for the preceding columns
2231
+ if (sLayout === LT.ThreeColumnsMidExpandedEndHidden) {
2232
+ iSpaceAfterRange = 0; // the 'end' separator is adjacent to the FCL edge, nothing follows it
2233
+ }
2234
+ }
2235
+
2236
+ if (bTablet) {
2237
+ if (sSeparator === "begin" & bIsThreeColumnLayout) {
2238
+ iSpaceBeforeRange = 0; // the 'begin' separator is adjacent to the FCL edge, nothing precedes it
2239
+ }
2240
+ if (sSeparator === "end" && sLayout === LT.ThreeColumnsMidExpandedEndHidden) {
2241
+ iSpaceAfterRange = 0; // the 'end' separator is adjacent to the FCL edge, nothing follows it
2242
+ }
2243
+ }
2244
+
2245
+ // provision space to render the separator itself
2246
+ iSpaceAfterRange += FlexibleColumnLayout.COLUMN_SEPARATOR_WIDTH;
2247
+
2248
+ iRangeLength = iTotalSpace - iSpaceBeforeRange - iSpaceAfterRange;
2249
+
2250
+ return {
2251
+ from: iSpaceBeforeRange,
2252
+ to: iSpaceBeforeRange + iRangeLength
2253
+ };
2254
+ };
2255
+
2256
+ FlexibleColumnLayout.prototype._updateAriaPositionInfo = function (oSeparator) {
2257
+ // obtain the range [fromX ... toX] of the possible positions along the X-axis
2258
+ // of this separator (as allowed by the current layout)
2259
+ var oRange = this._getSeparatorMovementRange(oSeparator),
2260
+ iRangeLength = oRange.to - oRange.from,
2261
+ iSeparatorEarliestPossibleX = oRange.from,
2262
+ iSeparatorCurrentX = oSeparator.offsetLeft,
2263
+ iSeparatorAdvanceInsideRange = iSeparatorCurrentX - iSeparatorEarliestPossibleX,
2264
+ // convert to value inside [0, ..., 100] interval
2265
+ iSeparatorRelativePositionInsideRange = iSeparatorAdvanceInsideRange / iRangeLength * 100,
2266
+ sSeparatorRelativePositionInsideRange = iSeparatorRelativePositionInsideRange.toFixed(2);
2267
+ oSeparator.setAttribute("aria-valuenow", sSeparatorRelativePositionInsideRange);
2268
+ };
2269
+
2270
+ FlexibleColumnLayout.prototype._updateSeparatorsAriaPositionInfo = function () {
2271
+ if (!this._oColumnSeparators) {
2272
+ return;
2273
+ }
2274
+ Object.values(this._oColumnSeparators).forEach(function($separator) {
2275
+ if ($separator.get(0).style.display !== "none") {
2276
+ this._updateAriaPositionInfo($separator.get(0));
2277
+ }
2278
+ }, this);
2279
+ };
2280
+
2158
2281
  /**
2159
2282
  * Obtains the current width of a column
2160
2283
  *
@@ -2993,8 +3116,14 @@ sap.ui.define([
2993
3116
  * @ui5-restricted sap.f.FlexibleColumnLayoutSemanticHelper
2994
3117
  */
2995
3118
  FlexibleColumnLayout.prototype._getColumnWidthDistributionForLayout = function (sLayout, bAsIntArray, iMaxColumnsCount) {
2996
- var sColumnWidthDistribution = this._getLocalStorage(iMaxColumnsCount).get(sLayout),
2997
- iBeginWidth = this._getLocalStorage(iMaxColumnsCount).get("begin"),
3119
+ var oLayoutData = this.getLayoutData(),
3120
+ sMediaKey = this._getMediaKey(iMaxColumnsCount),
3121
+ oLayoutDataPerMedia = oLayoutData?.isA("sap.f.FlexibleColumnLayoutData")
3122
+ && (sMediaKey === "desktop" ? oLayoutData.getDesktopLayoutData() : oLayoutData.getTabletLayoutData()),
3123
+ sGetterNameLayout = "get" + sLayout,
3124
+ sColumnWidthDistribution = oLayoutDataPerMedia?.[sGetterNameLayout]?.(),
3125
+ bIsValidDistribution = sColumnWidthDistribution && this._isValidWidthDistributionForLayout(sColumnWidthDistribution, sLayout),
3126
+ iBeginWidth = this._oBeginColumnWidth[sMediaKey],
2998
3127
  vResult,
2999
3128
  vResultAsArray;
3000
3129
 
@@ -3004,8 +3133,7 @@ sap.ui.define([
3004
3133
 
3005
3134
  vResult = "0/0/0";
3006
3135
 
3007
- } else if (iMaxColumnsCount > 1
3008
- && sColumnWidthDistribution) {
3136
+ } else if (iMaxColumnsCount > 1 && sColumnWidthDistribution && bIsValidDistribution) {
3009
3137
  vResult = sColumnWidthDistribution;
3010
3138
  } else {
3011
3139
  vResult = this._getDefaultColumnWidthDistributionForLayout(sLayout, iMaxColumnsCount);
@@ -22,7 +22,7 @@ sap.ui.define(['sap/ui/core/Element', './library'],
22
22
  * @extends sap.ui.core.Element
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.126.1
25
+ * @version 1.128.0
26
26
  * @since 1.95
27
27
  *
28
28
  * @constructor
@@ -0,0 +1,52 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // Provides element sap.f.FlexibleColumnLayoutData
8
+ sap.ui.define(['sap/ui/core/LayoutData'],
9
+ function(LayoutData) {
10
+ "use strict";
11
+
12
+ /**
13
+ * Constructor for a new <code>sap.f.FlexibleColumnLayoutData</code>.
14
+ *
15
+ * @param {string} [sId] ID for the new element, generated automatically if no ID is given
16
+ * @param {object} [mSettings] Initial settings for the new element.
17
+ *
18
+ * @class
19
+ * Holds layout data for <code>sap.f.FlexibleColumnLayout</code>.
20
+ * Allows LayoutData of type <code>sap.f.FlexibleColumnLayoutDataForDesktop</code> or <code>sap.f.FlexibleColumnLayoutFlexibleColumnLayoutDataForTablet</code>
21
+ *
22
+ *
23
+ * @author SAP SE
24
+ * @version 1.128.0
25
+ *
26
+ * @extends sap.ui.core.LayoutData
27
+ *
28
+ * @since 1.128
29
+ * @public
30
+ * @constructor
31
+ * @alias sap.f.FlexibleColumnLayoutData
32
+ */
33
+ var FlexibleColumnLayoutData = LayoutData.extend("sap.f.FlexibleColumnLayoutData", /** @lends sap.f.FlexibleColumnLayoutData.prototype */ {
34
+ metadata: {
35
+
36
+ library: "sap.f",
37
+ aggregations: {
38
+
39
+ /**
40
+ * Allows LayoutData of type <code>sap.f.FlexibleColumnLayoutDataForDesktop</code>
41
+ */
42
+ desktopLayoutData: {type: "sap.f.FlexibleColumnLayoutDataForDesktop", multiple: false, singularName: "desktopLayoutData"},
43
+ /**
44
+ * Allows LayoutData of type <code>sap.f.FlexibleColumnLayoutDataForTablet</code>
45
+ */
46
+ tabletLayoutData: {type: "sap.f.FlexibleColumnLayoutDataForTablet", multiple: false, singularName: "tabletLayoutData"}
47
+ }
48
+ }
49
+ });
50
+
51
+ return FlexibleColumnLayoutData;
52
+ });
@@ -0,0 +1,72 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // Provides element sap.f.FlexibleColumnLayoutDataForDesktop
8
+ sap.ui.define(['sap/ui/core/LayoutData'],
9
+ function(LayoutData) {
10
+ "use strict";
11
+
12
+ /**
13
+ * Constructor for a new <code>sap.f.FlexibleColumnLayoutDataForDesktop</code>.
14
+ *
15
+ * @param {string} [sId] ID for the new element, generated automatically if no ID is given
16
+ * @param {object} [mSettings] Initial settings for the new element.
17
+ *
18
+ * @class
19
+ * Holds layout data for columns of <code>sap.f.FlexibleColumnLayout</code> on desktop.
20
+ *
21
+ *
22
+ * @author SAP SE
23
+ * @version 1.128.0
24
+ *
25
+ * @extends sap.ui.core.LayoutData
26
+ *
27
+ * @since 1.128
28
+ * @public
29
+ * @constructor
30
+ * @alias sap.f.FlexibleColumnLayoutDataForDesktop
31
+ */
32
+ var FlexibleColumnLayoutDataForDesktop = LayoutData.extend("sap.f.FlexibleColumnLayoutDataForDesktop", /** @lends sap.f.FlexibleColumnLayoutDataForDesktop.prototype */ {
33
+ metadata: {
34
+
35
+ library: "sap.f",
36
+ properties: {
37
+
38
+ /**
39
+ * Columns distribution of TwoColumnsBeginExpanded layout in the format "begin/mid/end", where values are set in percentages.
40
+ */
41
+ twoColumnsBeginExpanded: {type: "string", group: "Appearance", defaultValue: "67/33/0"},
42
+
43
+ /**
44
+ * Columns distribution of TwoColumnsMidExpanded layout in the format "begin/mid/end", where values are set in percentages.
45
+ */
46
+ twoColumnsMidExpanded: {type: "string", group: "Appearance", defaultValue: "33/67/0"},
47
+
48
+ /**
49
+ * Columns distribution of ThreeColumnsBeginExpandedEndHidden layout in the format "begin/mid/end", where values are set in percentages.
50
+ */
51
+ threeColumnsBeginExpandedEndHidden: {type: "string", group: "Appearance", defaultValue: "67/33/0"},
52
+
53
+ /**
54
+ * Columns distribution of ThreeColumnsEndExpanded layout in the format "begin/mid/end", where values are set in percentages.
55
+ */
56
+ threeColumnsEndExpanded: {type: "string", group: "Appearance", defaultValue: "25/25/50"},
57
+
58
+ /**
59
+ * Columns distribution of ThreeColumnsMidExpanded layout in the format "begin/mid/end", where values are set in percentages.
60
+ */
61
+ threeColumnsMidExpanded: {type: "string", group: "Appearance", defaultValue: "25/50/25"},
62
+
63
+ /**
64
+ * Columns distribution of ThreeColumnsMidExpandedEndHidden layout in the format "begin/mid/end", where values are set in percentages.
65
+ */
66
+ threeColumnsMidExpandedEndHidden: {type: "string", group: "Appearance", defaultValue: "33/67/0"}
67
+ }
68
+ }
69
+ });
70
+
71
+ return FlexibleColumnLayoutDataForDesktop;
72
+ });
@@ -0,0 +1,71 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // Provides element sap.f.FlexibleColumnLayoutDataForTablet
8
+ sap.ui.define(['sap/ui/core/LayoutData'],
9
+ function(LayoutData) {
10
+ "use strict";
11
+
12
+ /**
13
+ * Constructor for a new <code>sap.f.FlexibleColumnLayoutDataForTablet</code>.
14
+ *
15
+ * @param {string} [sId] ID for the new element, generated automatically if no ID is given
16
+ * @param {object} [mSettings] Initial settings for the new element.
17
+ *
18
+ * @class
19
+ * Holds layout data for columns of <code>sap.f.FlexibleColumnLayout</code> on tablet.
20
+ *
21
+ *
22
+ * @author SAP SE
23
+ * @version 1.128.0
24
+ *
25
+ * @extends sap.ui.core.LayoutData
26
+ *
27
+ * @since 1.128
28
+ * @public
29
+ * @constructor
30
+ * @alias sap.f.FlexibleColumnLayoutDataForTablet
31
+ */
32
+ var FlexibleColumnLayoutDataForTablet = LayoutData.extend("sap.f.FlexibleColumnLayoutDataForTablet", /** @lends sap.f.FlexibleColumnLayoutDataForTablet.prototype */ {
33
+ metadata: {
34
+
35
+ library: "sap.f",
36
+ properties: {
37
+ /**
38
+ * Columns distribution of TwoColumnsBeginExpanded layout in the format "begin/mid/end", where values are set in percentages.
39
+ */
40
+ twoColumnsBeginExpanded: {type: "string", group: "Appearance", defaultValue: "67/33/0"},
41
+
42
+ /**
43
+ * Columns distribution of TwoColumnsMidExpanded layout in the format "begin/mid/end", where values are set in percentages.
44
+ */
45
+ twoColumnsMidExpanded: {type: "string", group: "Appearance", defaultValue: "33/67/0"},
46
+
47
+ /**
48
+ * Columns distribution of ThreeColumnsBeginExpandedEndHidden layout in the format "begin/mid/end", where values are set in percentages.
49
+ */
50
+ threeColumnsBeginExpandedEndHidden: {type: "string", group: "Appearance", defaultValue: "67/33/0"},
51
+
52
+ /**
53
+ * Columns distribution of ThreeColumnsEndExpanded layout in the format "begin/mid/end", where values are set in percentages.
54
+ */
55
+ threeColumnsEndExpanded: {type: "string", group: "Appearance", defaultValue: "0/33/67"},
56
+
57
+ /**
58
+ * Columns distribution of ThreeColumnsMidExpanded layout in the format "begin/mid/end", where values are set in percentages.
59
+ */
60
+ threeColumnsMidExpanded: {type: "string", group: "Appearance", defaultValue: "0/67/33"},
61
+
62
+ /**
63
+ * Columns distribution of ThreeColumnsMidExpandedEndHidden layout in the format "begin/mid/end", where values are set in percentages.
64
+ */
65
+ threeColumnsMidExpandedEndHidden: {type: "string", group: "Appearance", defaultValue: "33/67/0"}
66
+ }
67
+ }
68
+ });
69
+
70
+ return FlexibleColumnLayoutDataForTablet;
71
+ });
@@ -49,7 +49,7 @@ sap.ui.define([
49
49
  *
50
50
  * For more information, see {@link sap.f.FlexibleColumnLayoutSemanticHelper#getCurrentUIState} and {@link sap.f.FlexibleColumnLayoutSemanticHelper#getNextUIState}
51
51
  *
52
- * @version 1.126.1
52
+ * @version 1.128.0
53
53
  * @param {sap.f.FlexibleColumnLayout} oFlexibleColumnLayout
54
54
  * The <code>sap.f.FlexibleColumnLayout</code> object whose state will be manipulated.
55
55
  *
@@ -177,7 +177,7 @@ sap.ui.define([
177
177
  * @see {@link sap.f.dnd.GridDropInfo}
178
178
  *
179
179
  * @author SAP SE
180
- * @version 1.126.1
180
+ * @version 1.128.0
181
181
  *
182
182
  * @extends sap.ui.core.Control
183
183
  *
@@ -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.126.1
24
+ * @version 1.128.0
25
25
  *
26
26
  * @extends sap.ui.core.LayoutData
27
27
  *
@@ -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.126.1
61
+ * @version 1.128.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.126.1
68
+ * @version 1.128.0
69
69
  *
70
70
  * @since 1.65
71
71
  * @public
@@ -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.126.1
96
+ * @version 1.128.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.126.1
27
+ * @version 1.128.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.126.1
59
+ * @version 1.128.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.126.1
33
+ * @version 1.128.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.126.1
25
+ * @version 1.128.0
26
26
  *
27
27
  * @constructor
28
28
  * @private
@@ -34,11 +34,10 @@ sap.ui.define([
34
34
  * @extends sap.ui.core.Control
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.126.1
37
+ * @version 1.128.0
38
38
  *
39
39
  * @constructor
40
40
  * @public
41
- * @experimental Since 1.72. This class is experimental and provides only limited functionality. Also the API might be changed in future.
42
41
  * @alias sap.f.ProductSwitch
43
42
  * @since 1.72
44
43
  */
@@ -40,11 +40,10 @@ sap.ui.define([
40
40
  * @extends sap.ui.core.Control
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.126.1
43
+ * @version 1.128.0
44
44
  *
45
45
  * @constructor
46
46
  * @public
47
- * @experimental Since 1.72. This class is experimental and provides only limited functionality. Also the API might be changed in future.
48
47
  * @alias sap.f.ProductSwitchItem
49
48
  * @since 1.72
50
49
  */
@@ -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.126.1
26
+ * @version 1.128.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.126.1
61
+ * @version 1.128.0
62
62
  *
63
63
  * @constructor
64
64
  * @public
@@ -151,7 +151,7 @@ sap.ui.define([
151
151
  * @extends sap.ui.core.Control
152
152
  *
153
153
  * @author SAP SE
154
- * @version 1.126.1
154
+ * @version 1.128.0
155
155
  *
156
156
  * @constructor
157
157
  * @public
@@ -1082,13 +1082,18 @@ sap.ui.define([
1082
1082
  };
1083
1083
 
1084
1084
  SidePanel.prototype._getSideContentHeaderIcon = function() {
1085
- var oSelectedItem = this._getSelectedItem();
1085
+ var oSelectedItem = this._getSelectedItem(),
1086
+ sSrc = oSelectedItem && oSelectedItem.getIcon();
1087
+
1088
+ if (!sSrc) {
1089
+ return null;
1090
+ }
1086
1091
 
1087
1092
  if (!this._contentHeaderIcon) {
1088
1093
  this._contentHeaderIcon = new Icon();
1089
1094
  }
1090
1095
 
1091
- oSelectedItem && this._contentHeaderIcon.setSrc(oSelectedItem.getIcon());
1096
+ oSelectedItem && this._contentHeaderIcon.setSrc(sSrc);
1092
1097
 
1093
1098
  return this._contentHeaderIcon;
1094
1099
  };