@openui5/sap.f 1.120.10 → 1.121.1

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 (152) hide show
  1. package/.reuse/dep5 +23 -21
  2. package/THIRDPARTY.txt +6 -43
  3. package/package.json +4 -4
  4. package/src/sap/f/.library +1 -1
  5. package/src/sap/f/Avatar.js +5 -4
  6. package/src/sap/f/AvatarGroup.js +4 -4
  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 +7 -5
  10. package/src/sap/f/CalendarInCardRenderer.js +6 -11
  11. package/src/sap/f/Card.js +1 -1
  12. package/src/sap/f/CardBase.js +6 -6
  13. package/src/sap/f/DynamicPage.js +35 -15
  14. package/src/sap/f/DynamicPageAccessibleLandmarkInfo.js +1 -1
  15. package/src/sap/f/DynamicPageHeader.js +30 -16
  16. package/src/sap/f/DynamicPageTitle.js +10 -8
  17. package/src/sap/f/FlexibleColumnLayout.js +90 -45
  18. package/src/sap/f/FlexibleColumnLayoutAccessibleLandmarkInfo.js +1 -1
  19. package/src/sap/f/FlexibleColumnLayoutRenderer.js +7 -3
  20. package/src/sap/f/FlexibleColumnLayoutSemanticHelper.js +1 -1
  21. package/src/sap/f/GridContainer.js +45 -46
  22. package/src/sap/f/GridContainerItemLayoutData.js +1 -1
  23. package/src/sap/f/GridContainerRenderer.js +19 -11
  24. package/src/sap/f/GridContainerSettings.js +2 -2
  25. package/src/sap/f/GridList.js +15 -4
  26. package/src/sap/f/GridListItem.js +1 -1
  27. package/src/sap/f/GridNavigationMatrix.js +3 -3
  28. package/src/sap/f/IllustratedMessage.js +1 -1
  29. package/src/sap/f/Illustration.js +1 -1
  30. package/src/sap/f/PlanningCalendarInCardLegend.js +4 -5
  31. package/src/sap/f/PlanningCalendarInCardLegendRenderer.js +4 -4
  32. package/src/sap/f/ProductSwitch.js +7 -7
  33. package/src/sap/f/ProductSwitchItem.js +1 -1
  34. package/src/sap/f/ProductSwitchRenderer.js +3 -3
  35. package/src/sap/f/SearchManager.js +4 -4
  36. package/src/sap/f/ShellBar.js +71 -10
  37. package/src/sap/f/ShellBarRenderer.js +3 -3
  38. package/src/sap/f/SidePanel.js +22 -11
  39. package/src/sap/f/SidePanelItem.js +1 -1
  40. package/src/sap/f/cards/BaseHeader.js +21 -9
  41. package/src/sap/f/cards/Header.js +1 -1
  42. package/src/sap/f/cards/NumericHeader.js +1 -1
  43. package/src/sap/f/cards/NumericIndicators.js +1 -1
  44. package/src/sap/f/cards/NumericSideIndicator.js +1 -1
  45. package/src/sap/f/cards/loading/AnalyticalPlaceholder.js +1 -1
  46. package/src/sap/f/cards/loading/CalendarPlaceholder.js +1 -1
  47. package/src/sap/f/cards/loading/GenericPlaceholder.js +1 -1
  48. package/src/sap/f/cards/loading/ListPlaceholder.js +1 -1
  49. package/src/sap/f/cards/loading/ObjectPlaceholder.js +1 -1
  50. package/src/sap/f/cards/loading/PlaceholderBase.js +1 -1
  51. package/src/sap/f/cards/loading/PlaceholderBaseRenderer.js +2 -2
  52. package/src/sap/f/cards/loading/TablePlaceholder.js +1 -1
  53. package/src/sap/f/cards/loading/TimelinePlaceholder.js +1 -1
  54. package/src/sap/f/changeHandler/MoveDynamicPageTitleActions.js +1 -1
  55. package/src/sap/f/delegate/GridContainerItemNavigation.js +1 -1
  56. package/src/sap/f/delegate/GridItemNavigation.js +1 -1
  57. package/src/sap/f/designtime/messagebundle_en_US_saprigi.properties +4 -4
  58. package/src/sap/f/dnd/GridDragOver.js +5 -5
  59. package/src/sap/f/dnd/GridDropInfo.js +1 -1
  60. package/src/sap/f/library.js +23 -19
  61. package/src/sap/f/messagebundle.properties +4 -1
  62. package/src/sap/f/messagebundle_ar.properties +2 -0
  63. package/src/sap/f/messagebundle_bg.properties +2 -0
  64. package/src/sap/f/messagebundle_ca.properties +2 -0
  65. package/src/sap/f/messagebundle_cnr.properties +2 -0
  66. package/src/sap/f/messagebundle_cs.properties +2 -0
  67. package/src/sap/f/messagebundle_cy.properties +2 -0
  68. package/src/sap/f/messagebundle_da.properties +2 -0
  69. package/src/sap/f/messagebundle_de.properties +2 -0
  70. package/src/sap/f/messagebundle_el.properties +2 -0
  71. package/src/sap/f/messagebundle_en.properties +86 -1
  72. package/src/sap/f/messagebundle_en_GB.properties +2 -0
  73. package/src/sap/f/messagebundle_en_US_saprigi.properties +82 -80
  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 +3 -1
  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 +7 -8
  129. package/src/sap/f/semantic/SemanticControl.js +1 -1
  130. package/src/sap/f/semantic/SemanticFooter.js +2 -2
  131. package/src/sap/f/semantic/SemanticPage.js +19 -17
  132. package/src/sap/f/semantic/SemanticShareMenu.js +5 -2
  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/Accessibility.js +5 -5
  139. package/src/sap/f/shellBar/AdditionalContentSupport.js +1 -1
  140. package/src/sap/f/shellBar/CoPilot.js +8 -7
  141. package/src/sap/f/shellBar/ControlSpacer.js +1 -1
  142. package/src/sap/f/shellBar/Factory.js +14 -8
  143. package/src/sap/f/shellBar/ResponsiveHandler.js +23 -6
  144. package/src/sap/f/shellBar/Search.js +20 -4
  145. package/src/sap/f/themes/base/Card.less +2 -2
  146. package/src/sap/f/themes/base/CardLoading.less +94 -5
  147. package/src/sap/f/themes/base/DynamicPage.less +1 -1
  148. package/src/sap/f/themes/base/DynamicPageHeader.less +1 -1
  149. package/src/sap/f/themes/base/DynamicPageTitle.less +1 -1
  150. package/src/sap/f/themes/base/GridContainer.less +6 -4
  151. package/src/sap/f/themes/base/ShellBar.less +32 -13
  152. package/LICENSES/BSD-2-Clause.txt +0 -22
@@ -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.120.10
26
+ * @version 1.121.1
27
27
  *
28
28
  * @constructor
29
29
  * @public
@@ -6,20 +6,22 @@
6
6
 
7
7
  // Provides control sap.f.DynamicPageHeader.
8
8
  sap.ui.define([
9
- "./library",
10
- "sap/ui/Device",
11
- "sap/ui/core/Control",
9
+ "./library",
10
+ "sap/ui/Device",
11
+ "sap/ui/core/Control",
12
+ "sap/ui/core/Lib",
12
13
  "sap/ui/core/library",
13
14
  "sap/ui/core/IconPool",
14
15
  "sap/ui/core/theming/Parameters",
15
- "sap/m/ToggleButton",
16
- "sap/m/Button",
17
- "./DynamicPageHeaderRenderer",
16
+ "sap/m/ToggleButton",
17
+ "sap/m/Button",
18
+ "./DynamicPageHeaderRenderer",
18
19
  "sap/ui/core/InvisibleMessage"
19
20
  ], function(
20
- library,
21
+ library,
21
22
  Device,
22
23
  Control,
24
+ Library,
23
25
  CoreLibrary,
24
26
  IconPool,
25
27
  ThemeParameters,
@@ -62,7 +64,7 @@ sap.ui.define([
62
64
  * @extends sap.ui.core.Control
63
65
  *
64
66
  * @author SAP SE
65
- * @version 1.120.10
67
+ * @version 1.121.1
66
68
  *
67
69
  * @constructor
68
70
  * @public
@@ -119,9 +121,11 @@ sap.ui.define([
119
121
  * @returns {Object} the resource bundle object
120
122
  */
121
123
  DynamicPageHeader._getResourceBundle = function () {
122
- return sap.ui.getCore().getLibraryResourceBundle("sap.f");
124
+ return Library.getResourceBundleFor("sap.f");
123
125
  };
124
126
 
127
+ DynamicPageHeader.UNPRESSED_PIN_ICON = "sap-icon://pushpin-off";
128
+
125
129
  DynamicPageHeader.ARIA = {
126
130
  ARIA_CONTROLS: "aria-controls",
127
131
  ARIA_LABEL: "aria-label",
@@ -146,6 +150,11 @@ sap.ui.define([
146
150
  if (!this._oInvisibleMessage) {
147
151
  this._oInvisibleMessage = InvisibleMessage.getInstance();
148
152
  }
153
+ // Required if the parent has "headerPinned" set to "true" initially.
154
+ // Without the explicit "_setPressedStatePinIcon" an empty button is rendered.
155
+ if (this.getPinnable()) {
156
+ this._setPressedStatePinIcon();
157
+ }
149
158
  };
150
159
 
151
160
  /*************************************** Private members ******************************************/
@@ -157,6 +166,7 @@ sap.ui.define([
157
166
  */
158
167
  DynamicPageHeader.prototype._togglePinButton = function (bValue) {
159
168
  this._getPinButton().setPressed(bValue);
169
+ this._getPinButton().setIcon(bValue ? this._sPressedStatePinIconURI : DynamicPageHeader.UNPRESSED_PIN_ICON);
160
170
  };
161
171
 
162
172
  /**
@@ -172,8 +182,9 @@ sap.ui.define([
172
182
  * Fires the pin/unpin press event.
173
183
  * @private
174
184
  */
175
- DynamicPageHeader.prototype._pinUnpinFireEvent = function () {
185
+ DynamicPageHeader.prototype._pinUnpinFireEvent = function (oEvent) {
176
186
  this.fireEvent("_pinUnpinPress");
187
+ this._togglePinButton(oEvent.getSource().getPressed());
177
188
  };
178
189
 
179
190
  /**
@@ -247,7 +258,7 @@ sap.ui.define([
247
258
  if (!this.getAggregation("_pinButton")) {
248
259
  var oPinButton = new ToggleButton({
249
260
  id: this.getId() + "-pinBtn",
250
- icon: "sap-icon://pushpin-off",
261
+ icon: DynamicPageHeader.UNPRESSED_PIN_ICON,
251
262
  tooltip: DynamicPageHeader.ARIA.LABEL_PINNED,
252
263
  press: this._pinUnpinFireEvent.bind(this)
253
264
  }).addStyleClass("sapFDynamicPageHeaderPinButton");
@@ -359,15 +370,18 @@ sap.ui.define([
359
370
  };
360
371
  };
361
372
 
373
+ DynamicPageHeader.prototype.onThemeChanged = function () {
374
+ this._setPressedStatePinIcon();
375
+ };
376
+
362
377
  /**
363
- * Sets the icon of the pin button depending on the current theme
378
+ * Sets the icon URI for the pressed state of the pin button
379
+ * @private
364
380
  */
365
- DynamicPageHeader.prototype.onThemeChanged = function () {
366
- var sIcon = IconPool.getIconURI(ThemeParameters.get({
381
+ DynamicPageHeader.prototype._setPressedStatePinIcon = function () {
382
+ this._sPressedStatePinIconURI = IconPool.getIconURI(ThemeParameters.get({
367
383
  name: "_sap_f_DynamicPageHeader_PinButton_Icon"
368
384
  }));
369
-
370
- this._getPinButton().setIcon(sIcon);
371
385
  };
372
386
 
373
387
  return DynamicPageHeader;
@@ -7,6 +7,7 @@
7
7
  // Provides control sap.f.DynamicPageTitle.
8
8
  sap.ui.define([
9
9
  "./library",
10
+ "sap/ui/core/Lib",
10
11
  "sap/ui/core/library",
11
12
  "sap/ui/core/Control",
12
13
  "sap/ui/base/ManagedObjectObserver",
@@ -20,11 +21,12 @@ sap.ui.define([
20
21
  "sap/base/Log",
21
22
  "sap/ui/core/Icon",
22
23
  "sap/ui/Device",
23
- "sap/ui/events/KeyCodes",
24
- "sap/ui/core/InvisibleMessage",
25
- "sap/ui/core/Core"
24
+ "sap/ui/core/RenderManager",
25
+ "sap/ui/events/KeyCodes",
26
+ "sap/ui/core/InvisibleMessage"
26
27
  ], function(
27
28
  library,
29
+ Library,
28
30
  CoreLibrary,
29
31
  Control,
30
32
  ManagedObjectObserver,
@@ -38,9 +40,9 @@ sap.ui.define([
38
40
  Log,
39
41
  Icon,
40
42
  Device,
43
+ RenderManager,
41
44
  KeyCodes,
42
- InvisibleMessage,
43
- oCore
45
+ InvisibleMessage
44
46
  ) {
45
47
  "use strict";
46
48
 
@@ -93,7 +95,7 @@ sap.ui.define([
93
95
  * @extends sap.ui.core.Control
94
96
  *
95
97
  * @author SAP SE
96
- * @version 1.120.10
98
+ * @version 1.121.1
97
99
  *
98
100
  * @constructor
99
101
  * @public
@@ -382,7 +384,7 @@ sap.ui.define([
382
384
  * @private
383
385
  */
384
386
  DynamicPageTitle._getResourceBundle = function () {
385
- return oCore.getLibraryResourceBundle("sap.f");
387
+ return Library.getResourceBundleFor("sap.f");
386
388
  };
387
389
 
388
390
  DynamicPageTitle.ARIA = {
@@ -402,7 +404,7 @@ sap.ui.define([
402
404
  return;
403
405
  }
404
406
 
405
- oRenderManager = oCore.createRenderManager();
407
+ oRenderManager = new RenderManager().getInterface();
406
408
  oRenderManager.renderControl(oControlToRender);
407
409
  oRenderManager.flush(oContainerDOM);
408
410
  oRenderManager.destroy();
@@ -6,6 +6,10 @@
6
6
 
7
7
  // Provides control sap.f.FlexibleColumnLayout.
8
8
  sap.ui.define([
9
+ "sap/base/i18n/Localization",
10
+ "sap/ui/core/ControlBehavior",
11
+ "sap/ui/core/Lib",
12
+ "sap/ui/core/RenderManager",
9
13
  "sap/ui/thirdparty/jquery",
10
14
  "./library",
11
15
  "sap/ui/core/library",
@@ -23,8 +27,13 @@ sap.ui.define([
23
27
  "sap/base/util/isEmptyObject",
24
28
  "sap/base/util/merge",
25
29
  "sap/ui/core/InvisibleMessage",
26
- "sap/ui/dom/jquery/Focusable" // provides jQuery.fn.firstFocusableDomRef
30
+ // provides jQuery.fn.firstFocusableDomRef
31
+ "sap/ui/dom/jquery/Focusable"
27
32
  ], function(
33
+ Localization,
34
+ ControlBehavior,
35
+ Library,
36
+ RenderManager,
28
37
  jQuery,
29
38
  library,
30
39
  coreLibrary,
@@ -67,7 +76,9 @@ sap.ui.define([
67
76
  * three columns (referred to as <code>Begin</code>, <code>Mid</code> and <code>End</code>) rather than two
68
77
  * (<code>Master</code>, <code>Detail</code>). The width of the three columns is variable.
69
78
  *
70
- * There are several possible layouts that can be changed either with the control's API, or by the user with the help of layout arrows.
79
+ * There are several possible layouts that can be changed either with the control's API, or by the user with the help of the draggable column separators.
80
+ * The draggable column separators allow the user to customize the column widths for the current layout, or to switch to a new layout (if the user drags the column separator past a breakpoint that delimits two different layouts).
81
+ * After the user customized the column widths for a given layout, these user preferences are internally saved and automatically re-applied whenever the user re-visits the same layout.
71
82
  *
72
83
  * Internally the control makes use of three instances of {@link sap.m.NavContainer}, thus forming the three columns.
73
84
  *
@@ -97,7 +108,7 @@ sap.ui.define([
97
108
  *
98
109
  * @extends sap.ui.core.Control
99
110
  * @author SAP SE
100
- * @version 1.120.10
111
+ * @version 1.121.1
101
112
  *
102
113
  * @constructor
103
114
  * @public
@@ -213,8 +224,8 @@ sap.ui.define([
213
224
  * Fired when there is a change in the <code>layout</code> property or in the maximum number of columns that can be displayed at once.
214
225
  * <br/></br>
215
226
  * <ul>The interactions that may lead to a state change are:
216
- * <li>the property <code>layout</code> was changed indirectly by the user clicking a layout arrow</li>
217
- * <li>the user resized the browser beyond a breakpoint, thus changing the maximum number of columns that can be displayed at once.</li></ul>
227
+ * <li>The property <code>layout</code> was changed indirectly by the user dragging the column separator or clicking on its arrow (where arrow is available).</li>
228
+ * <li>The user resized the browser window beyond a breakpoint, thus changing the maximum number of columns that can be displayed at once.</li></ul>
218
229
  * <br/><br/>
219
230
  * <b>Note: </b>The event is suppressed while the control has zero width and will be fired the first time it gets a non-zero width
220
231
  *
@@ -239,13 +250,13 @@ sap.ui.define([
239
250
  type: "int"
240
251
  },
241
252
  /**
242
- * Indicates whether the layout changed as a result of the user clicking a layout arrow
253
+ * Indicates whether the layout changed as a result of the user clicking a column separator's arrow or dragging the column separators
243
254
  */
244
255
  isNavigationArrow: {
245
256
  type: "boolean"
246
257
  },
247
258
  /**
248
- * Indicates whether the maximum number of columns that can be displayed at once changed
259
+ * Indicates whether the maximum number of columns that can be displayed at once changed due to resize of the entire browser window
249
260
  */
250
261
  isResize: {
251
262
  type: "boolean"
@@ -882,7 +893,7 @@ sap.ui.define([
882
893
  */
883
894
  FlexibleColumnLayout.prototype._flushColumnContent = function (sColumn) {
884
895
  var oControl = this.getAggregation("_" + sColumn + "ColumnNav"),
885
- oRm = sap.ui.getCore().createRenderManager();
896
+ oRm = new RenderManager().getInterface();
886
897
 
887
898
  oRm.renderControl(oControl);
888
899
  oRm.flush(this._$columns[sColumn].find(".sapFFCLColumnContent")[0], undefined, true);
@@ -1106,7 +1117,7 @@ sap.ui.define([
1106
1117
  };
1107
1118
 
1108
1119
  /**
1109
- * Saves the DOM references of the columns and layout arrows.
1120
+ * Saves the DOM references of the columns and column separators.
1110
1121
  * @private
1111
1122
  */
1112
1123
  FlexibleColumnLayout.prototype._cacheDOMElements = function () {
@@ -1327,11 +1338,11 @@ sap.ui.define([
1327
1338
  sNewWidth = convertPxToCSSSizeString(iNewWidth, this._getControlWidth(), oColumnConfig.shouldInsetColumn),
1328
1339
  bAutoSize = oColumnConfig.autoSize,
1329
1340
  bAnimationsEnabled = oColumnConfig.hasAnimations,
1330
- bPinned = oColumnConfig.shouldRevealColumn || oColumnConfig.shouldConcealColumn,
1341
+ bHidden = !iNewWidth,
1331
1342
  bResizeColumnWithAnimation = this._canResizeColumnWithAnimation(sColumn, oColumnConfig),
1332
- bSuspendResizeHandler = bAnimationsEnabled && (bResizeColumnWithAnimation || bAutoSize) && !bPinned,
1343
+ bSuspendResizeHandler = bAnimationsEnabled,
1333
1344
  fnAfterResizeCallback = this._afterColumnResize.bind(this, sColumn, merge(oColumnConfig, {
1334
- resumeResizeHandler: bSuspendResizeHandler // toggle back after resize
1345
+ resumeResizeHandler: bSuspendResizeHandler && !bHidden // toggle back after resize
1335
1346
  })),
1336
1347
  fnResizeErrorCallback = function() {
1337
1348
  ResizeHandler.resume(oColumnDomRef);
@@ -1370,10 +1381,10 @@ sap.ui.define([
1370
1381
  }
1371
1382
 
1372
1383
  // For tablet and desktop - notify child controls to render with reduced container size, if they need to
1373
- if (oColumnConfig.updateContextualSettings && !Device.system.phone) {
1384
+ if (oColumnConfig.updateContextualSettings && !Device.system.phone && iNewWidth) {
1374
1385
  this._updateColumnContextualSettings(sColumn, iNewWidth);
1375
1386
  }
1376
- if (oColumnConfig.updateMediaCSSClases && !Device.system.phone) {
1387
+ if (oColumnConfig.updateMediaCSSClases && !Device.system.phone && iNewWidth) {
1377
1388
  this._updateColumnCSSClasses(sColumn, iNewWidth);
1378
1389
  }
1379
1390
  };
@@ -1398,6 +1409,9 @@ sap.ui.define([
1398
1409
  iNewWidth = oOptions.width,
1399
1410
  bShouldRestoreFocus = oOptions.shouldRestoreFocus;
1400
1411
 
1412
+ //BCP: 1980006195
1413
+ oColumn.toggleClass("sapFFCLColumnHidden", iNewWidth === 0);
1414
+
1401
1415
  if (bShouldRevealColumn || bShouldConcealColumn ) {
1402
1416
  oColumn[0].querySelector(".sapFFCLColumnContent").style.width = "";
1403
1417
  }
@@ -1409,9 +1423,6 @@ sap.ui.define([
1409
1423
  oColumn.removeClass("sapFFCLColumnActive");
1410
1424
  }
1411
1425
 
1412
- //BCP: 1980006195
1413
- oColumn.toggleClass("sapFFCLColumnHidden", iNewWidth === 0);
1414
-
1415
1426
  if (oOptions.resumeResizeHandler) {
1416
1427
  ResizeHandler.resume(oColumn[0]);
1417
1428
  }
@@ -1430,14 +1441,14 @@ sap.ui.define([
1430
1441
  oColumn = this._$columns[sColumn],
1431
1442
  oColumnDomRef = oColumn[0];
1432
1443
 
1433
- oColumn.toggleClass(FlexibleColumnLayout.PINNED_COLUMN_CLASS_NAME, bShouldPin);
1434
-
1435
1444
  if (bShouldRevealColumn) {
1436
- oColumnDomRef.querySelector(".sapFFCLColumnContent").style.width = convertPxToCSSSizeString(oColumnWidths[sColumn], this._getControlWidth());
1445
+ oColumnDomRef.querySelector(".sapFFCLColumnContent").style.width = oColumnWidths[sColumn] + "px";
1437
1446
  } else if (bShouldConcealColumn) {
1438
1447
  oColumnDomRef.querySelector(".sapFFCLColumnContent").style.width = oColumnDomRef.offsetWidth + "px";
1439
1448
  }
1440
1449
 
1450
+ oColumn.toggleClass(FlexibleColumnLayout.PINNED_COLUMN_CLASS_NAME, bShouldPin);
1451
+
1441
1452
  }, this);
1442
1453
  };
1443
1454
 
@@ -1468,7 +1479,7 @@ sap.ui.define([
1468
1479
  };
1469
1480
 
1470
1481
  FlexibleColumnLayout.prototype._getDefaultResizeOptions = function () {
1471
- var sAnimationMode = Configuration.getAnimationMode();
1482
+ var sAnimationMode = ControlBehavior.getAnimationMode();
1472
1483
  return {
1473
1484
  layout: this.getLayout(),
1474
1485
  previousLayout: this._getPreviousLayout(),
@@ -1486,7 +1497,7 @@ sap.ui.define([
1486
1497
 
1487
1498
  FlexibleColumnLayout.prototype._addDetailedActiveClasses = function (sLayout) {
1488
1499
  var aColumns = FlexibleColumnLayout.COLUMN_ORDER.slice(),
1489
- bRtl = Configuration.getRTL(),
1500
+ bRtl = Localization.getRTL(),
1490
1501
  aActiveColumns = aColumns.filter(function (sColumn) {
1491
1502
  return this._getColumnSizeForLayout(sColumn, sLayout) > 0;
1492
1503
  }, this);
@@ -1557,7 +1568,7 @@ sap.ui.define([
1557
1568
 
1558
1569
  FlexibleColumnLayout.prototype._onColumnSeparatorMoveStart = function (oEvent, oSeparator, bTouch) {
1559
1570
  // needed to position the separator presizely
1560
- var bRtl = Configuration.getRTL(),
1571
+ var bRtl = Localization.getRTL(),
1561
1572
  iStartOffset = this._getDraggedSeparatorStartOffset(oSeparator, bRtl);
1562
1573
 
1563
1574
  this._oMoveInfo = {
@@ -1747,15 +1758,15 @@ sap.ui.define([
1747
1758
 
1748
1759
  this._oMoveInfo.columnWidths = oNewColumnWidths;
1749
1760
 
1750
- if (bResizeWithPinning) {
1761
+ if (bResizeWithPinning || bIsResizeEnd) {
1751
1762
  // call the dedicated function in order to resize with reveal/conceal effect
1763
+ // or update CSS classes on resizeEnd
1752
1764
  this._resizeColumns({
1753
1765
  columnWidths: oNewColumnWidths,
1754
1766
  layout: sLayout,
1755
1767
  previousLayout: sPreviousLayout,
1756
- updateContextualSettings: false,
1757
- updateMediaCSSClases: false,
1758
- updateDetailedActiveClasses: false,
1768
+ updateMediaCSSClases: bIsResizeEnd,
1769
+ updateDetailedActiveClasses: bIsResizeEnd,
1759
1770
  restoreFocusOnBackNavigation: false
1760
1771
  });
1761
1772
  } else {
@@ -2220,12 +2231,19 @@ sap.ui.define([
2220
2231
  var iVisibleColumnsCount = this._getMaxColumnsCountForLayout(sLayout, FlexibleColumnLayout.DESKTOP_BREAKPOINT),
2221
2232
  sLastVisibleColumn = this._getLastVisibleColumnForLayout(sLayout),
2222
2233
  bIsLastColumn = sColumn === sLastVisibleColumn,
2234
+ sPreviousLastVisibleColumn = this._getLastVisibleColumnForLayout(sPreviousLayout),
2223
2235
  iPreviousVisibleColumnsCount = this._getMaxColumnsCountForLayout(sPreviousLayout, FlexibleColumnLayout.DESKTOP_BREAKPOINT),
2224
- bWasFullScreen = (sPreviousLayout === LT.MidColumnFullScreen || sPreviousLayout === LT.EndColumnFullScreen);
2236
+ bWasFullScreen = this._isFullScreenLayout(sPreviousLayout),
2237
+ bIsFullscreen = this._isFullScreenLayout(sLayout);
2225
2238
 
2226
- return (iVisibleColumnsCount > iPreviousVisibleColumnsCount) &&
2227
- !bWasFullScreen &&
2228
- bIsLastColumn;
2239
+ return ((iVisibleColumnsCount > iPreviousVisibleColumnsCount)
2240
+ && !(sPreviousLayout === LT.MidColumnFullScreen || sPreviousLayout === LT.EndColumnFullScreen)
2241
+ && bIsLastColumn
2242
+ || (bWasFullScreen && bIsFullscreen && sPreviousLastVisibleColumn !== sColumn && bIsLastColumn));
2243
+ };
2244
+
2245
+ FlexibleColumnLayout.prototype._isFullScreenLayout = function (sLayout) {
2246
+ return sLayout === LT.OneColumn || sLayout === LT.MidColumnFullScreen || sLayout === LT.EndColumnFullScreen;
2229
2247
  };
2230
2248
 
2231
2249
  FlexibleColumnLayout.prototype._isInteractivelyResizedColumn = function (sColumn) {
@@ -2252,12 +2270,15 @@ sap.ui.define([
2252
2270
  var iVisibleColumnsCount = this._getMaxColumnsCountForLayout(sLayout, FlexibleColumnLayout.DESKTOP_BREAKPOINT),
2253
2271
  iPreviousVisibleColumnsCount = this._getMaxColumnsCountForLayout(sPreviousLayout, FlexibleColumnLayout.DESKTOP_BREAKPOINT),
2254
2272
  sPreviousLastVisibleColumn = this._getLastVisibleColumnForLayout(sPreviousLayout),
2255
- bWasFullScreen = (sPreviousLayout === LT.MidColumnFullScreen || sPreviousLayout === LT.EndColumnFullScreen);
2273
+ sLastVisibleColumn = this._getLastVisibleColumnForLayout(sLayout),
2274
+ bWasFullScreen = this._isFullScreenLayout(sPreviousLayout),
2275
+ bIsFullscreen = this._isFullScreenLayout(sLayout);
2256
2276
 
2257
- return (iVisibleColumnsCount < iPreviousVisibleColumnsCount
2277
+ return ((iVisibleColumnsCount < iPreviousVisibleColumnsCount
2258
2278
  && sColumn === sPreviousLastVisibleColumn
2259
- && !bWasFullScreen
2260
- && this._getColumnSizeForLayout(sColumn, sLayout) === 0);
2279
+ && !(sPreviousLayout === LT.MidColumnFullScreen || sPreviousLayout === LT.EndColumnFullScreen)
2280
+ && this._getColumnSizeForLayout(sColumn, sLayout) === 0)
2281
+ || (bWasFullScreen && bIsFullscreen && sColumn !== sLastVisibleColumn && sPreviousLastVisibleColumn === sColumn));
2261
2282
  };
2262
2283
 
2263
2284
  /**
@@ -2446,7 +2467,7 @@ sap.ui.define([
2446
2467
  // Always resize the columns when the browser is resized
2447
2468
  this._resizeColumns();
2448
2469
 
2449
- // Only update the arrows and fire the event if the maximum number of columns that can be shown has changed
2470
+ // only fire the event if the maximum number of columns that can be shown has changed
2450
2471
  if (iMaxColumnsCount !== iOldMaxColumnsCount) {
2451
2472
  this._fireStateChange(false, true);
2452
2473
  }
@@ -2490,7 +2511,7 @@ sap.ui.define([
2490
2511
 
2491
2512
  iMaxColumnsCount = this.getMaxColumnsCount();
2492
2513
 
2493
- // Only show arrows if 2 or 3 columns can be displayed at a time
2514
+ // Only show separators if 2 or 3 columns can be displayed at a time
2494
2515
  if (iMaxColumnsCount > 1) {
2495
2516
  oMap[LT.TwoColumnsBeginExpanded] = ["begin"];
2496
2517
  oMap[LT.TwoColumnsMidExpanded] = ["begin"];
@@ -2516,7 +2537,7 @@ sap.ui.define([
2516
2537
  var aNeededSeparators = [],
2517
2538
  bIsNavContainersContentRendered;
2518
2539
 
2519
- // Stop here if the control isn't rendered yet or in phone mode, where arrows aren't necessary
2540
+ // Stop here if the control isn't rendered yet or in phone mode, where separators aren't necessary
2520
2541
  if (!this.isActive() || Device.system.phone) {
2521
2542
  return;
2522
2543
  }
@@ -2544,7 +2565,7 @@ sap.ui.define([
2544
2565
  this._oColumnSeparators[sKey].data("visible", bShow);
2545
2566
  };
2546
2567
 
2547
- FlexibleColumnLayout.prototype._fireStateChange = function (bIsNavigationArrow, bIsResize) {
2568
+ FlexibleColumnLayout.prototype._fireStateChange = function (bIsColumnSeparatorInteraction, bIsResize) {
2548
2569
 
2549
2570
  // The event should not be fired if the control has zero width as all relevant layout calculations are size-based
2550
2571
  if (this._getControlWidth() === 0) {
@@ -2552,7 +2573,7 @@ sap.ui.define([
2552
2573
  }
2553
2574
 
2554
2575
  this.fireStateChange({
2555
- isNavigationArrow: bIsNavigationArrow,
2576
+ isNavigationArrow: bIsColumnSeparatorInteraction,
2556
2577
  isResize: bIsResize,
2557
2578
  layout: this.getLayout(),
2558
2579
  maxColumnsCount: this.getMaxColumnsCount()
@@ -2948,14 +2969,14 @@ sap.ui.define([
2948
2969
  /**
2949
2970
  * Returns a string, representing the relative percentage sizes of the columns for the given layout in the format "begin/mid/end" (f.e. "33/67/0")
2950
2971
  * @param {string} sLayout - the layout
2951
- * @param {boolean} bAsArray - return an array in the format [33, 67, 0] instead of a string "33/67/0"
2972
+ * @param {boolean} bAsIntArray - return an array in the format [33, 67, 0] instead of a string "33/67/0"
2952
2973
  * @param {number} [iMaxColumnsCount] the maximun number of columns. If not provided, the result of
2953
2974
  * <code>getMaxColumnsCount</code> will be taken
2954
2975
  * @returns {string|array}
2955
2976
  * @private
2956
2977
  * @ui5-restricted sap.f.FlexibleColumnLayoutSemanticHelper
2957
2978
  */
2958
- FlexibleColumnLayout.prototype._getColumnWidthDistributionForLayout = function (sLayout, bAsArray, iMaxColumnsCount) {
2979
+ FlexibleColumnLayout.prototype._getColumnWidthDistributionForLayout = function (sLayout, bAsIntArray, iMaxColumnsCount) {
2959
2980
  var sColumnWidthDistribution = this._getLocalStorage(iMaxColumnsCount).get(sLayout),
2960
2981
  vResult;
2961
2982
 
@@ -2972,10 +2993,11 @@ sap.ui.define([
2972
2993
  vResult = this._getDefaultColumnWidthDistributionForLayout(sLayout, iMaxColumnsCount);
2973
2994
  }
2974
2995
 
2975
- if (bAsArray) {
2996
+ if (bAsIntArray) {
2976
2997
  vResult = vResult.split("/").map(function (sColumnWidth) {
2977
- return parseInt(sColumnWidth);
2998
+ return Math.round(parseFloat(sColumnWidth));
2978
2999
  });
3000
+ normalizeColumnPercentWidths(vResult);
2979
3001
  }
2980
3002
 
2981
3003
  return vResult;
@@ -3056,7 +3078,7 @@ sap.ui.define([
3056
3078
  * @returns {Object} the resource bundle object
3057
3079
  */
3058
3080
  FlexibleColumnLayout._getResourceBundle = function () {
3059
- return sap.ui.getCore().getLibraryResourceBundle("sap.f");
3081
+ return Library.getResourceBundleFor("sap.f");
3060
3082
  };
3061
3083
 
3062
3084
 
@@ -3363,6 +3385,29 @@ sap.ui.define([
3363
3385
  return oConfig.pageX;
3364
3386
  }
3365
3387
 
3388
+ /**
3389
+ * Ensures the sum of all column percent widths is 100.
3390
+ * (Used after converting all the column widths from floats to integers,
3391
+ * to avoid inconsistency of the final sum due to rounding.)
3392
+ *
3393
+ * @param {object} aColumnPercentWidths the percent widths of all three columns
3394
+ */
3395
+ function normalizeColumnPercentWidths(aColumnPercentWidths) {
3396
+ var oColumnIndex = {
3397
+ begin: 0,
3398
+ mid: 1,
3399
+ end: 2
3400
+ },
3401
+ iSum = aColumnPercentWidths.reduce((a, b) => a + b, 0);
3402
+ if (iSum !== 100) {
3403
+ // the CSS of the mid column always causes it take the space that remained
3404
+ // after sizing the begin and end columns
3405
+ aColumnPercentWidths[oColumnIndex.mid] = 100 -
3406
+ (aColumnPercentWidths[oColumnIndex.begin] + aColumnPercentWidths[oColumnIndex.end]);
3407
+ }
3408
+ }
3409
+
3410
+
3366
3411
  return FlexibleColumnLayout;
3367
3412
 
3368
3413
  });
@@ -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.120.10
25
+ * @version 1.121.1
26
26
  * @since 1.95
27
27
  *
28
28
  * @constructor
@@ -4,11 +4,15 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
7
- sap.ui.define(["sap/ui/Device", "sap/ui/core/Core", "sap/m/library"],
8
- function (Device, Core, mobileLibrary) {
7
+ sap.ui.define([
8
+ "sap/ui/Device",
9
+ "sap/m/library",
10
+ "sap/ui/core/Lib",
11
+ "sap/ui/core/IconPool" // side effect: required when calling RenderManager#icon
12
+ ], function (Device, mobileLibrary, Library) {
9
13
  "use strict";
10
14
 
11
- var oResourceBundle = Core.getLibraryResourceBundle("sap.f");
15
+ var oResourceBundle = Library.getResourceBundleFor("sap.f");
12
16
 
13
17
  var FCLRenderer = {
14
18
  apiVersion: 2
@@ -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.120.10
52
+ * @version 1.121.1
53
53
  * @param {sap.f.FlexibleColumnLayout} oFlexibleColumnLayout
54
54
  * The <code>sap.f.FlexibleColumnLayout</code> object whose state will be manipulated.
55
55
  *