@openui5/sap.f 1.128.0 → 1.130.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 (90) hide show
  1. package/THIRDPARTY.txt +2 -2
  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 +2 -2
  6. package/src/sap/f/AvatarGroupItem.js +1 -1
  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 +13 -1
  11. package/src/sap/f/DynamicPage.js +27 -7
  12. package/src/sap/f/DynamicPageAccessibleLandmarkInfo.js +1 -1
  13. package/src/sap/f/DynamicPageHeader.js +2 -2
  14. package/src/sap/f/DynamicPageTitle.js +11 -1
  15. package/src/sap/f/FlexibleColumnLayout.js +59 -1
  16. package/src/sap/f/FlexibleColumnLayoutAccessibleLandmarkInfo.js +1 -1
  17. package/src/sap/f/FlexibleColumnLayoutData.js +56 -3
  18. package/src/sap/f/FlexibleColumnLayoutDataForDesktop.js +5 -1
  19. package/src/sap/f/FlexibleColumnLayoutDataForTablet.js +5 -1
  20. package/src/sap/f/FlexibleColumnLayoutSemanticHelper.js +1 -1
  21. package/src/sap/f/GridContainer.js +1 -1
  22. package/src/sap/f/GridContainerItemLayoutData.js +1 -1
  23. package/src/sap/f/GridContainerSettings.js +2 -2
  24. package/src/sap/f/GridList.js +1 -1
  25. package/src/sap/f/GridListItem.js +1 -1
  26. package/src/sap/f/IllustratedMessage.js +1 -1
  27. package/src/sap/f/Illustration.js +1 -1
  28. package/src/sap/f/PlanningCalendarInCardLegend.js +1 -1
  29. package/src/sap/f/ProductSwitch.js +1 -1
  30. package/src/sap/f/ProductSwitchItem.js +1 -1
  31. package/src/sap/f/SearchManager.js +1 -1
  32. package/src/sap/f/ShellBar.js +1 -1
  33. package/src/sap/f/SidePanel.js +13 -4
  34. package/src/sap/f/SidePanelItem.js +1 -1
  35. package/src/sap/f/cards/BaseHeader.js +1 -1
  36. package/src/sap/f/cards/CardBadgeCustomData.js +2 -0
  37. package/src/sap/f/cards/Header.js +12 -6
  38. package/src/sap/f/cards/NumericHeader.js +11 -5
  39. package/src/sap/f/cards/NumericIndicators.js +1 -1
  40. package/src/sap/f/cards/NumericSideIndicator.js +1 -1
  41. package/src/sap/f/cards/loading/AnalyticalPlaceholder.js +1 -1
  42. package/src/sap/f/cards/loading/CalendarPlaceholder.js +1 -1
  43. package/src/sap/f/cards/loading/GenericPlaceholder.js +1 -1
  44. package/src/sap/f/cards/loading/ListPlaceholder.js +1 -1
  45. package/src/sap/f/cards/loading/ObjectPlaceholder.js +1 -1
  46. package/src/sap/f/cards/loading/PlaceholderBase.js +1 -1
  47. package/src/sap/f/cards/loading/TablePlaceholder.js +1 -1
  48. package/src/sap/f/cards/loading/TimelinePlaceholder.js +1 -1
  49. package/src/sap/f/cards/util/CardBadgeEnabler.js +95 -55
  50. package/src/sap/f/changeHandler/MoveDynamicPageTitleActions.js +1 -1
  51. package/src/sap/f/delegate/GridContainerItemNavigation.js +1 -1
  52. package/src/sap/f/delegate/GridItemNavigation.js +1 -1
  53. package/src/sap/f/dnd/GridDragOver.js +1 -1
  54. package/src/sap/f/dnd/GridDropInfo.js +1 -1
  55. package/src/sap/f/library.js +3 -2
  56. package/src/sap/f/messagebundle_da.properties +1 -1
  57. package/src/sap/f/messagebundle_zh_CN.properties +1 -1
  58. package/src/sap/f/semantic/AddAction.js +1 -1
  59. package/src/sap/f/semantic/CloseAction.js +1 -1
  60. package/src/sap/f/semantic/CopyAction.js +1 -1
  61. package/src/sap/f/semantic/DeleteAction.js +1 -1
  62. package/src/sap/f/semantic/DiscussInJamAction.js +1 -1
  63. package/src/sap/f/semantic/EditAction.js +1 -1
  64. package/src/sap/f/semantic/ExitFullScreenAction.js +1 -1
  65. package/src/sap/f/semantic/FavoriteAction.js +1 -1
  66. package/src/sap/f/semantic/FlagAction.js +1 -1
  67. package/src/sap/f/semantic/FooterMainAction.js +1 -1
  68. package/src/sap/f/semantic/FullScreenAction.js +1 -1
  69. package/src/sap/f/semantic/MainAction.js +1 -1
  70. package/src/sap/f/semantic/MessagesIndicator.js +1 -1
  71. package/src/sap/f/semantic/NegativeAction.js +1 -1
  72. package/src/sap/f/semantic/PositiveAction.js +1 -1
  73. package/src/sap/f/semantic/PrintAction.js +1 -1
  74. package/src/sap/f/semantic/SemanticButton.js +1 -1
  75. package/src/sap/f/semantic/SemanticConfiguration.js +1 -1
  76. package/src/sap/f/semantic/SemanticControl.js +1 -1
  77. package/src/sap/f/semantic/SemanticPage.js +1 -1
  78. package/src/sap/f/semantic/SemanticToggleButton.js +1 -1
  79. package/src/sap/f/semantic/SendEmailAction.js +1 -1
  80. package/src/sap/f/semantic/SendMessageAction.js +1 -1
  81. package/src/sap/f/semantic/ShareInJamAction.js +1 -1
  82. package/src/sap/f/semantic/TitleMainAction.js +1 -1
  83. package/src/sap/f/shellBar/AdditionalContentSupport.js +1 -1
  84. package/src/sap/f/shellBar/CoPilot.js +1 -1
  85. package/src/sap/f/shellBar/ControlSpacer.js +1 -1
  86. package/src/sap/f/shellBar/Search.js +1 -1
  87. package/src/sap/f/themes/base/AvatarGroup.less +1 -1
  88. package/src/sap/f/themes/base/Card.less +10 -1
  89. package/src/sap/f/themes/base/FlexibleColumnLayout.less +1 -1
  90. package/src/sap/f/themes/base/SidePanel.less +4 -0
package/THIRDPARTY.txt CHANGED
@@ -6,7 +6,7 @@ The full text of all referenced licenses is appended at the end of this file.
6
6
 
7
7
  Library: sap.m:
8
8
 
9
- Component: purify.js, version: 2.3.8
9
+ Component: purify.js, version: 3.1.7
10
10
  Copyright: Mario Heiderich
11
11
  License: Apache-2.0
12
12
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
@@ -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.16.1
471
+ Component: SAP Theming Base Content, version: 11.18.0
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.128.0",
3
+ "version": "1.130.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.128.0",
18
- "@openui5/sap.ui.core": "1.128.0",
19
- "@openui5/sap.ui.layout": "1.128.0"
17
+ "@openui5/sap.m": "1.130.0",
18
+ "@openui5/sap.ui.core": "1.130.0",
19
+ "@openui5/sap.ui.layout": "1.130.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.128.0</version>
9
+ <version>1.130.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.128.0
44
+ * @version 1.130.0
45
45
  *
46
46
  * @constructor
47
47
  * @public
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  };
37
37
 
38
38
  var AVATAR_MARGIN_GROUP = {
39
- XS: 0.75,
39
+ XS: 0.5,
40
40
  S: 1.25,
41
41
  M: 1.625,
42
42
  L: 2,
@@ -100,7 +100,7 @@ sap.ui.define([
100
100
  * @extends sap.ui.core.Control
101
101
  *
102
102
  * @author SAP SE
103
- * @version 1.128.0
103
+ * @version 1.130.0
104
104
  *
105
105
  * @constructor
106
106
  * @public
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @extends sap.ui.core.Control
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.128.0
35
+ * @version 1.130.0
36
36
  *
37
37
  * @constructor
38
38
  * @public
@@ -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.128.0
24
+ * @version 1.130.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.128.0
48
+ * @version 1.130.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.128.0
74
+ * @version 1.130.0
75
75
  *
76
76
  * @constructor
77
77
  * @public
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @extends sap.ui.core.Control
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.128.0
35
+ * @version 1.130.0
36
36
  *
37
37
  * @constructor
38
38
  * @public
@@ -66,6 +66,15 @@ sap.ui.define([
66
66
  type: "sap.m.ObjectStatus",
67
67
  multiple: true,
68
68
  visibility: "hidden"
69
+ },
70
+
71
+ /**
72
+ * Holds the text used for announcing the card badges to the screen reader.
73
+ */
74
+ _oInvisibleCardBadgeText: {
75
+ type: "sap.ui.core.InvisibleText",
76
+ multiple: false,
77
+ visibility: "hidden"
69
78
  }
70
79
  }
71
80
  },
@@ -88,6 +97,7 @@ sap.ui.define([
88
97
 
89
98
  this._ariaText = new InvisibleText({id: this.getId() + "-ariaText"});
90
99
  this._ariaText.setText(this._oRb.getText("ARIA_ROLEDESCRIPTION_CARD"));
100
+
91
101
  this.initCardBadgeEnablement();
92
102
  };
93
103
 
@@ -104,6 +114,8 @@ sap.ui.define([
104
114
  this._ariaText.destroy();
105
115
  this._ariaText = null;
106
116
  }
117
+
118
+ this.destroyCardBadgeEnablement();
107
119
  };
108
120
 
109
121
  CardBase.prototype.setAggregation = function (sAggregationName, oObject) {
@@ -118,7 +118,7 @@ sap.ui.define([
118
118
  * @extends sap.ui.core.Control
119
119
  *
120
120
  * @author SAP SE
121
- * @version 1.128.0
121
+ * @version 1.130.0
122
122
  *
123
123
  * @constructor
124
124
  * @public
@@ -412,6 +412,7 @@ sap.ui.define([
412
412
  this._headerBiggerThanAllowedHeight = false;
413
413
  this._oStickySubheader = null;
414
414
  this._bStickySubheaderInTitleArea = false;
415
+ this._bIsLastToggleUserInitiated = false;
415
416
  this._oScrollHelper = new ScrollEnablement(this, this.getId() + "-content", {
416
417
  horizontal: false,
417
418
  vertical: true
@@ -469,7 +470,7 @@ sap.ui.define([
469
470
  this._updateTitlePositioning();
470
471
  this._attachPageChildrenAfterRenderingDelegates();
471
472
  this._updatePinButtonState();
472
- this._hidePinButtonIfNotApplicable();
473
+ this._showHidePinButton();
473
474
 
474
475
  if (!this.getHeaderExpanded()) {
475
476
  this._snapHeader(false);
@@ -812,6 +813,7 @@ sap.ui.define([
812
813
  }
813
814
 
814
815
  this.setProperty("headerExpanded", false, true);
816
+ this._bIsLastToggleUserInitiated = !!bUserInteraction;
815
817
  this._adjustStickyContent();
816
818
  if (this._hasVisibleTitleAndHeader()) {
817
819
  this.$titleArea.addClass(Device.system.phone && oDynamicPageTitle.getSnappedTitleOnMobile() ?
@@ -852,6 +854,7 @@ sap.ui.define([
852
854
  }
853
855
 
854
856
  this.setProperty("headerExpanded", true, true);
857
+ this._bIsLastToggleUserInitiated = !!bUserInteraction;
855
858
  this._adjustStickyContent();
856
859
  if (this._hasVisibleTitleAndHeader()) {
857
860
  this.$titleArea.removeClass(Device.system.phone && oDynamicPageTitle.getSnappedTitleOnMobile() ?
@@ -1061,13 +1064,11 @@ sap.ui.define([
1061
1064
 
1062
1065
 
1063
1066
  /**
1064
- * Hides the pin button if no pin scenario is possible
1067
+ * Shows/hides the pin button if pin scenario is possible/not possible
1065
1068
  * @private
1066
1069
  */
1067
- DynamicPage.prototype._hidePinButtonIfNotApplicable = function () {
1068
- if (this._preserveHeaderStateOnScroll()) {
1069
- this._togglePinButtonVisibility(false);
1070
- }
1070
+ DynamicPage.prototype._showHidePinButton = function () {
1071
+ this._togglePinButtonVisibility(!this._preserveHeaderStateOnScroll());
1071
1072
  };
1072
1073
 
1073
1074
  /**
@@ -1924,11 +1925,30 @@ sap.ui.define([
1924
1925
  oDynamicPageTitle._onResize(iCurrentWidth);
1925
1926
  }
1926
1927
 
1928
+ if (this._shouldAutoExpandHeaderOnResize(oEvent)) {
1929
+ this._expandHeader(true, false /* bUserInteraction */);
1930
+ }
1931
+
1927
1932
  this._adjustSnap();
1928
1933
  this._updateTitlePositioning();
1929
1934
  this._updateMedia(iCurrentWidth);
1930
1935
  };
1931
1936
 
1937
+ DynamicPage.prototype._shouldAutoExpandHeaderOnResize = function (oResizeEvent) {
1938
+ var oDynamicPageHeader = this.getHeader(),
1939
+ bHeaderSnappedByUser = exists(oDynamicPageHeader) && !this.getHeaderExpanded() && this._bIsLastToggleUserInitiated,
1940
+ bPageResized = oResizeEvent.target === this.getDomRef(),
1941
+ canToggleHeaderOnScroll = this._canSnapHeaderOnScroll.bind(this);
1942
+
1943
+ // auto-expand the header if the user had snapped it but
1944
+ // can no longer expand it neither by scrolling nor by title-click
1945
+ return !this._preserveHeaderStateOnScroll() // header state is not locked
1946
+ && bHeaderSnappedByUser
1947
+ && bPageResized
1948
+ && !this.getToggleHeaderOnTitleClick() // user cannot expand the header by title-click
1949
+ && !canToggleHeaderOnScroll(); // user cannot expand the header by scrolling
1950
+ };
1951
+
1932
1952
  /**
1933
1953
  * Switches between expanded/collapsed (snapped) modes.
1934
1954
  * @private
@@ -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.128.0
26
+ * @version 1.130.0
27
27
  *
28
28
  * @constructor
29
29
  * @public
@@ -64,7 +64,7 @@ sap.ui.define([
64
64
  * @extends sap.ui.core.Control
65
65
  *
66
66
  * @author SAP SE
67
- * @version 1.128.0
67
+ * @version 1.130.0
68
68
  *
69
69
  * @constructor
70
70
  * @public
@@ -177,7 +177,7 @@ sap.ui.define([
177
177
  * @private
178
178
  */
179
179
  DynamicPageHeader.prototype._setShowPinBtn = function (bValue) {
180
- this._getPinButton().$().toggleClass("sapUiHidden", !bValue);
180
+ this._getPinButton().toggleStyleClass("sapUiHidden", !bValue);
181
181
  };
182
182
 
183
183
  /**
@@ -95,7 +95,7 @@ sap.ui.define([
95
95
  * @extends sap.ui.core.Control
96
96
  *
97
97
  * @author SAP SE
98
- * @version 1.128.0
98
+ * @version 1.130.0
99
99
  *
100
100
  * @constructor
101
101
  * @public
@@ -880,6 +880,16 @@ sap.ui.define([
880
880
  oAction._sOriginalParentAggregationName = null;
881
881
  };
882
882
 
883
+ DynamicPageTitle.prototype.onfocusfail = function (oEvent) {
884
+ var oSourceControl = oEvent.srcControl;
885
+
886
+ if (oSourceControl.sParentAggregationName === "actions") {
887
+ this.getAggregation("_actionsToolbar")?.onfocusfail(oEvent);
888
+ } else {
889
+ Control.prototype.onfocusfail.apply(this, arguments);
890
+ }
891
+ };
892
+
883
893
  /**
884
894
  * Called when LayoutData of actions/content buttons is changed
885
895
  */
@@ -108,7 +108,7 @@ sap.ui.define([
108
108
  *
109
109
  * @extends sap.ui.core.Control
110
110
  * @author SAP SE
111
- * @version 1.128.0
111
+ * @version 1.130.0
112
112
  *
113
113
  * @constructor
114
114
  * @public
@@ -978,6 +978,64 @@ sap.ui.define([
978
978
  this._bNeverRendered = false;
979
979
  };
980
980
 
981
+ FlexibleColumnLayout.prototype.setLayoutData = function (oLayoutData) {
982
+ if (oLayoutData.isA("sap.f.FlexibleColumnLayoutData")) {
983
+ oLayoutData.attachEvent("_layoutDataPropertyChanged", this._layoutDataPropertyChanged, this);
984
+ }
985
+
986
+ return this.setAggregation("layoutData", oLayoutData);
987
+ };
988
+
989
+ FlexibleColumnLayout.prototype.destroyLayoutData = function (oLayoutData) {
990
+ if (oLayoutData.isA("sap.f.FlexibleColumnLayoutData")) {
991
+ oLayoutData.dettachEvent("_layoutDataPropertyChanged", this._layoutDataPropertyChanged, this);
992
+ }
993
+
994
+ return this.destroyAggregation("layoutData", oLayoutData);
995
+ };
996
+
997
+ /**
998
+ * Handles the case, when initial values of layoutData were not set before FCL is rendered for the first time
999
+ * @private
1000
+ */
1001
+ FlexibleColumnLayout.prototype._layoutDataPropertyChanged = function (oEvent) {
1002
+ var oSource = oEvent.getParameter("srcControl"),
1003
+ oLayoutData = this.getLayoutData(),
1004
+ sMediaKey = this._getMediaKey(),
1005
+ sNewColumnsDistribution = oEvent.getParameter("newValue"),
1006
+ oCurrentColumnsWidth,
1007
+ sCurrentColumnsWidth;
1008
+
1009
+ if (oEvent.getParameter("layout") === this.getLayout() &&
1010
+ ((oSource === oLayoutData?.getDesktopLayoutData() && sMediaKey === "desktop") || (oSource === oLayoutData?.getTabletLayoutData() && sMediaKey === "tablet"))) {
1011
+
1012
+ // As some of the columns may not be fully resized at this point, we use the oMoveInfo, if available (during interactive resize), to check the current columns' widths
1013
+ if (this._oMoveInfo) {
1014
+ oCurrentColumnsWidth = this._convertColumnPxWidthToPercent(this._oMoveInfo.columnWidths, this.getLayout());
1015
+ sCurrentColumnsWidth = Object.values(oCurrentColumnsWidth).join("/");
1016
+ }
1017
+
1018
+ if (!sNewColumnsDistribution || sCurrentColumnsWidth === oEvent.getParameter("newValue")) {
1019
+ // Prevent second resize when applications update the layout data properties after columnsDistributionChange event is fired
1020
+ return;
1021
+ }
1022
+
1023
+ // No animations for performance optimization in case properties are set after the initial rendering
1024
+ this._resizeColumns({ hasAnimations: false });
1025
+ }
1026
+ };
1027
+
1028
+ /**
1029
+ * Handles the case, when new desktopLayoutData/tabletLayoutData aggregations of FlexibleColumnLayoutData are set
1030
+ */
1031
+ FlexibleColumnLayout.prototype.onLayoutDataChange = function (oEvent) {
1032
+ var oSource = oEvent.srcControl;
1033
+
1034
+ if (oSource.isA("sap.f.FlexibleColumnLayoutData")) {
1035
+ this.invalidate();
1036
+ }
1037
+ };
1038
+
981
1039
  FlexibleColumnLayout.prototype.onmousedown = function (oEvent) {
982
1040
  if (this._ignoreMouse) {
983
1041
  return;
@@ -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.128.0
25
+ * @version 1.130.0
26
26
  * @since 1.95
27
27
  *
28
28
  * @constructor
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  // Provides element sap.f.FlexibleColumnLayoutData
8
- sap.ui.define(['sap/ui/core/LayoutData'],
9
- function(LayoutData) {
8
+ sap.ui.define(["sap/ui/core/LayoutData", "sap/ui/base/ManagedObjectObserver", "sap/ui/thirdparty/jquery"],
9
+ function(LayoutData, ManagedObjectObserver, jQuery) {
10
10
  "use strict";
11
11
 
12
12
  /**
@@ -21,7 +21,7 @@ sap.ui.define(['sap/ui/core/LayoutData'],
21
21
  *
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.128.0
24
+ * @version 1.130.0
25
25
  *
26
26
  * @extends sap.ui.core.LayoutData
27
27
  *
@@ -48,5 +48,58 @@ sap.ui.define(['sap/ui/core/LayoutData'],
48
48
  }
49
49
  });
50
50
 
51
+ FlexibleColumnLayoutData.prototype.init = function () {
52
+ this._oObserver = new ManagedObjectObserver(FlexibleColumnLayoutData.prototype._onAggregationChange.bind(this));
53
+ this._oObserver.observe(this, {
54
+ aggregations: [
55
+ "desktopLayoutData",
56
+ "tabletLayoutData"
57
+ ]
58
+ });
59
+ };
60
+
61
+ FlexibleColumnLayoutData.prototype._onAggregationChange = function(oChanges) {
62
+ // Handle changes in the aggregations
63
+ if (oChanges.mutation === "insert") {
64
+ // Observe the properties of the newly added control
65
+ this._observeControlProperties(oChanges.child);
66
+ } else if (oChanges.mutation === "remove") {
67
+ this._unobserveControlProperties(oChanges.child);
68
+ } else if (oChanges.type === "property") {
69
+ this.fireEvent("_layoutDataPropertyChanged", {
70
+ layout: oChanges.name.charAt(0).toUpperCase() + oChanges.name.slice(1),
71
+ srcControl: oChanges.object,
72
+ oldValue: oChanges.old,
73
+ newValue: oChanges.current
74
+ });
75
+ }
76
+ };
77
+
78
+ FlexibleColumnLayoutData.prototype._observeControlProperties = function(oControl) {
79
+ // Observe changes in the properties of the control
80
+ this._oObserver.observe(oControl, {
81
+ properties: Object.keys(oControl.getMetadata().getAllProperties())
82
+ });
83
+ };
84
+
85
+ FlexibleColumnLayoutData.prototype._unobserveControlProperties = function(oControl) {
86
+ // Stop observing changes in the properties of the control
87
+ this._oObserver.unobserve(oControl, {
88
+ properties: Object.keys(oControl.getMetadata().getAllProperties())
89
+ });
90
+ };
91
+
92
+ FlexibleColumnLayoutData.prototype.invalidate = function() {
93
+ // Override to prevent error from Core implementation when the parent of FlexibleColumnLayout is UIComponent.
94
+ // Here we also want to fire a LayoutDataChange event to the actual parent - the FlexibleColumnLayout Control.
95
+ var oParent = this.getParent();
96
+
97
+ if (oParent) {
98
+ var oEvent = jQuery.Event("LayoutDataChange");
99
+ oEvent.srcControl = this;
100
+ oParent._handleEvent?.(oEvent);
101
+ }
102
+ };
103
+
51
104
  return FlexibleColumnLayoutData;
52
105
  });
@@ -20,7 +20,7 @@ sap.ui.define(['sap/ui/core/LayoutData'],
20
20
  *
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.128.0
23
+ * @version 1.130.0
24
24
  *
25
25
  * @extends sap.ui.core.LayoutData
26
26
  *
@@ -68,5 +68,9 @@ sap.ui.define(['sap/ui/core/LayoutData'],
68
68
  }
69
69
  });
70
70
 
71
+ FlexibleColumnLayoutDataForDesktop.prototype.invalidate = function() {
72
+ // Override basic LayoutData implementation, as we listen to changes in the parent control (FlexibleColumnLayoutData), where we have more information what has been changed.
73
+ };
74
+
71
75
  return FlexibleColumnLayoutDataForDesktop;
72
76
  });
@@ -20,7 +20,7 @@ sap.ui.define(['sap/ui/core/LayoutData'],
20
20
  *
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.128.0
23
+ * @version 1.130.0
24
24
  *
25
25
  * @extends sap.ui.core.LayoutData
26
26
  *
@@ -67,5 +67,9 @@ sap.ui.define(['sap/ui/core/LayoutData'],
67
67
  }
68
68
  });
69
69
 
70
+ FlexibleColumnLayoutDataForTablet.prototype.invalidate = function() {
71
+ // Override basic LayoutData implementation, as we listen to changes in the parent control (FlexibleColumnLayoutData), where we have more information what has been changed.
72
+ };
73
+
70
74
  return FlexibleColumnLayoutDataForTablet;
71
75
  });
@@ -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.128.0
52
+ * @version 1.130.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.128.0
180
+ * @version 1.130.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.128.0
24
+ * @version 1.130.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.128.0
61
+ * @version 1.130.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.128.0
68
+ * @version 1.130.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.128.0
96
+ * @version 1.130.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.128.0
27
+ * @version 1.130.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.128.0
59
+ * @version 1.130.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.128.0
33
+ * @version 1.130.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.128.0
25
+ * @version 1.130.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.128.0
37
+ * @version 1.130.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.128.0
43
+ * @version 1.130.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.128.0
26
+ * @version 1.130.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.128.0
61
+ * @version 1.130.0
62
62
  *
63
63
  * @constructor
64
64
  * @public