@sapui5/sap.suite.ui.commons 1.146.0 → 1.147.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 (157) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/commons/.library +1 -1
  3. package/src/sap/suite/ui/commons/AriaProperties.js +1 -1
  4. package/src/sap/suite/ui/commons/CalculationBuilder.js +56 -2
  5. package/src/sap/suite/ui/commons/CalculationBuilderExpression.js +87 -14
  6. package/src/sap/suite/ui/commons/CalculationBuilderFunction.js +1 -1
  7. package/src/sap/suite/ui/commons/CalculationBuilderGroup.js +1 -1
  8. package/src/sap/suite/ui/commons/CalculationBuilderItem.js +16 -3
  9. package/src/sap/suite/ui/commons/CalculationBuilderValidationResult.js +1 -1
  10. package/src/sap/suite/ui/commons/CalculationBuilderVariable.js +1 -1
  11. package/src/sap/suite/ui/commons/CloudFilePicker.js +1 -1
  12. package/src/sap/suite/ui/commons/MicroProcessFlow.js +1 -1
  13. package/src/sap/suite/ui/commons/MicroProcessFlowItem.js +1 -1
  14. package/src/sap/suite/ui/commons/collaboration/ContactPopover.fragment.xml +8 -8
  15. package/src/sap/suite/ui/commons/collaboration/MinimalContactPopover.fragment.xml +5 -5
  16. package/src/sap/suite/ui/commons/flexibility/changeHandler/PropertyChangeMapper.js +1 -1
  17. package/src/sap/suite/ui/commons/imageeditor/CropCustomShapeHistoryItem.js +1 -1
  18. package/src/sap/suite/ui/commons/imageeditor/CropEllipseHistoryItem.js +1 -1
  19. package/src/sap/suite/ui/commons/imageeditor/CropRectangleHistoryItem.js +1 -1
  20. package/src/sap/suite/ui/commons/imageeditor/CustomSizeItem.js +1 -1
  21. package/src/sap/suite/ui/commons/imageeditor/FilterHistoryItem.js +1 -1
  22. package/src/sap/suite/ui/commons/imageeditor/FlipHistoryItem.js +1 -1
  23. package/src/sap/suite/ui/commons/imageeditor/HistoryItem.js +1 -1
  24. package/src/sap/suite/ui/commons/imageeditor/ImageEditor.js +1 -1
  25. package/src/sap/suite/ui/commons/imageeditor/ImageEditorContainer.js +1 -1
  26. package/src/sap/suite/ui/commons/imageeditor/ImageEditorResponsiveContainer.js +1 -1
  27. package/src/sap/suite/ui/commons/imageeditor/ResizeHistoryItem.js +1 -1
  28. package/src/sap/suite/ui/commons/imageeditor/RotateHistoryItem.js +1 -1
  29. package/src/sap/suite/ui/commons/library.js +4 -4
  30. package/src/sap/suite/ui/commons/messagebundle.properties +12 -8
  31. package/src/sap/suite/ui/commons/messagebundle_mk.properties +1 -1
  32. package/src/sap/suite/ui/commons/networkgraph/Graph.js +138 -27
  33. package/src/sap/suite/ui/commons/networkgraph/GraphMap.js +25 -3
  34. package/src/sap/suite/ui/commons/networkgraph/KeyboardNavigator.js +332 -13
  35. package/src/sap/suite/ui/commons/networkgraph/Line.js +5 -1
  36. package/src/sap/suite/ui/commons/networkgraph/Node.js +67 -5
  37. package/src/sap/suite/ui/commons/networkgraph/Utils.js +10 -0
  38. package/src/sap/suite/ui/commons/networkgraph/util/ConnectionPathUtils.js +34 -4
  39. package/src/sap/suite/ui/commons/networkgraph/util/DependencyLayoutHelper.js +213 -74
  40. package/src/sap/suite/ui/commons/statusindicator/Circle.js +1 -1
  41. package/src/sap/suite/ui/commons/statusindicator/CustomShape.js +1 -1
  42. package/src/sap/suite/ui/commons/statusindicator/DiscreteThreshold.js +1 -1
  43. package/src/sap/suite/ui/commons/statusindicator/FillingOption.js +1 -1
  44. package/src/sap/suite/ui/commons/statusindicator/LibraryShape.js +1 -1
  45. package/src/sap/suite/ui/commons/statusindicator/Path.js +1 -1
  46. package/src/sap/suite/ui/commons/statusindicator/PropertyThreshold.js +1 -1
  47. package/src/sap/suite/ui/commons/statusindicator/Rectangle.js +1 -1
  48. package/src/sap/suite/ui/commons/statusindicator/Shape.js +1 -1
  49. package/src/sap/suite/ui/commons/statusindicator/ShapeGroup.js +1 -1
  50. package/src/sap/suite/ui/commons/statusindicator/SimpleShape.js +1 -1
  51. package/src/sap/suite/ui/commons/statusindicator/StatusIndicator.js +1 -1
  52. package/src/sap/suite/ui/commons/taccount/TAccount.js +1 -1
  53. package/src/sap/suite/ui/commons/taccount/TAccountGroup.js +1 -1
  54. package/src/sap/suite/ui/commons/taccount/TAccountItem.js +1 -1
  55. package/src/sap/suite/ui/commons/taccount/TAccountItemProperty.js +1 -1
  56. package/src/sap/suite/ui/commons/taccount/TAccountPanel.js +1 -1
  57. package/src/sap/suite/ui/commons/themes/base/BusinessCard.less +5 -4
  58. package/src/sap/suite/ui/commons/themes/base/CalculationBuilder.less +33 -24
  59. package/src/sap/suite/ui/commons/themes/base/CalculationBuilderExpression.less +40 -31
  60. package/src/sap/suite/ui/commons/themes/base/CalculationBuilderInput.less +26 -10
  61. package/src/sap/suite/ui/commons/themes/base/CalculationBuilderItem.less +76 -63
  62. package/src/sap/suite/ui/commons/themes/base/ChartContainer.less +8 -11
  63. package/src/sap/suite/ui/commons/themes/base/ChartTile.less +5 -8
  64. package/src/sap/suite/ui/commons/themes/base/CollaborationPopover.less +116 -106
  65. package/src/sap/suite/ui/commons/themes/base/DateRangeScroller.less +5 -5
  66. package/src/sap/suite/ui/commons/themes/base/DateRangeSliderInternal.less +9 -10
  67. package/src/sap/suite/ui/commons/themes/base/FacetOverview.less +9 -10
  68. package/src/sap/suite/ui/commons/themes/base/FeedItemHeader.less +9 -12
  69. package/src/sap/suite/ui/commons/themes/base/FeedTile.less +23 -27
  70. package/src/sap/suite/ui/commons/themes/base/GenericTile2X2.less +15 -15
  71. package/src/sap/suite/ui/commons/themes/base/HeaderCell.less +7 -6
  72. package/src/sap/suite/ui/commons/themes/base/HeaderContainer.less +35 -37
  73. package/src/sap/suite/ui/commons/themes/base/ImageEditor.less +28 -10
  74. package/src/sap/suite/ui/commons/themes/base/ImageEditorContainer.less +29 -22
  75. package/src/sap/suite/ui/commons/themes/base/InfoTile.less +10 -4
  76. package/src/sap/suite/ui/commons/themes/base/InfoTileSize.less +5 -4
  77. package/src/sap/suite/ui/commons/themes/base/KpiTile.less +10 -11
  78. package/src/sap/suite/ui/commons/themes/base/LaunchTile.less +9 -8
  79. package/src/sap/suite/ui/commons/themes/base/LinkActionSheet.less +14 -43
  80. package/src/sap/suite/ui/commons/themes/base/MicroProcessFlow.less +51 -47
  81. package/src/sap/suite/ui/commons/themes/base/MonitoringContent.less +5 -5
  82. package/src/sap/suite/ui/commons/themes/base/NetworkGraph.less +57 -62
  83. package/src/sap/suite/ui/commons/themes/base/NetworkGroup.less +61 -65
  84. package/src/sap/suite/ui/commons/themes/base/NetworkLine.less +58 -55
  85. package/src/sap/suite/ui/commons/themes/base/NetworkNode.less +3 -0
  86. package/src/sap/suite/ui/commons/themes/base/NetworkTooltip.less +21 -25
  87. package/src/sap/suite/ui/commons/themes/base/NoteTaker.less +13 -18
  88. package/src/sap/suite/ui/commons/themes/base/NoteTakerCard.less +26 -27
  89. package/src/sap/suite/ui/commons/themes/base/NoteTakerFeeder.less +22 -44
  90. package/src/sap/suite/ui/commons/themes/base/NumericTile.less +7 -5
  91. package/src/sap/suite/ui/commons/themes/base/PictureZoomIn.less +6 -5
  92. package/src/sap/suite/ui/commons/themes/base/ProcessFlow.less +57 -76
  93. package/src/sap/suite/ui/commons/themes/base/ProcessFlowConnection.less +71 -17
  94. package/src/sap/suite/ui/commons/themes/base/ProcessFlowConnectionLabel.less +9 -13
  95. package/src/sap/suite/ui/commons/themes/base/ProcessFlowLaneHeader.less +37 -96
  96. package/src/sap/suite/ui/commons/themes/base/ProcessFlowNode.less +219 -238
  97. package/src/sap/suite/ui/commons/themes/base/SemanticColorMixins.less +55 -0
  98. package/src/sap/suite/ui/commons/themes/base/SplitButton.less +7 -20
  99. package/src/sap/suite/ui/commons/themes/base/StatusIndicator.less +10 -9
  100. package/src/sap/suite/ui/commons/themes/base/TAccount.less +78 -73
  101. package/src/sap/suite/ui/commons/themes/base/TargetFilter.less +50 -58
  102. package/src/sap/suite/ui/commons/themes/base/ThingCollection.less +18 -13
  103. package/src/sap/suite/ui/commons/themes/base/ThreePanelThingViewer.less +14 -14
  104. package/src/sap/suite/ui/commons/themes/base/TileContent2X2.less +9 -13
  105. package/src/sap/suite/ui/commons/themes/base/Timeline.less +16 -19
  106. package/src/sap/suite/ui/commons/themes/base/TimelineItem.less +95 -103
  107. package/src/sap/suite/ui/commons/themes/base/UnifiedThingGroup.less +7 -9
  108. package/src/sap/suite/ui/commons/themes/base/UnifiedThingInspector.less +12 -9
  109. package/src/sap/suite/ui/commons/themes/base/VerticalNavigationBar.less +10 -15
  110. package/src/sap/suite/ui/commons/themes/base/ViewRepeater.less +8 -9
  111. package/src/sap/suite/ui/commons/themes/base/library.source.less +0 -2
  112. package/src/sap/suite/ui/commons/themes/sap_fiori_3/MicroProcessFlow.less +9 -3
  113. package/src/sap/suite/ui/commons/themes/sap_fiori_3/ProcessFlowConnection.less +14 -7
  114. package/src/sap/suite/ui/commons/themes/sap_fiori_3/ProcessFlowConnectionLabel.less +38 -35
  115. package/src/sap/suite/ui/commons/themes/sap_fiori_3/ProcessFlowLaneHeader.less +29 -30
  116. package/src/sap/suite/ui/commons/themes/sap_fiori_3/ProcessFlowNode.less +158 -102
  117. package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/MicroProcessFlow.less +9 -3
  118. package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/ProcessFlowConnection.less +14 -7
  119. package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/ProcessFlowConnectionLabel.less +38 -35
  120. package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/ProcessFlowLaneHeader.less +30 -31
  121. package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/ProcessFlowNode.less +157 -101
  122. package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcb/ProcessFlowConnection.less +14 -7
  123. package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcb/ProcessFlowConnectionLabel.less +38 -35
  124. package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcb/ProcessFlowLaneHeader.less +30 -31
  125. package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcb/ProcessFlowNode.less +147 -101
  126. package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcw/ProcessFlowConnection.less +14 -7
  127. package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcw/ProcessFlowConnectionLabel.less +38 -35
  128. package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcw/ProcessFlowLaneHeader.less +30 -31
  129. package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcw/ProcessFlowNode.less +158 -102
  130. package/src/sap/suite/ui/commons/themes/sap_horizon/MicroProcessFlow.less +5 -0
  131. package/src/sap/suite/ui/commons/themes/sap_horizon/NetworkLine.less +12 -8
  132. package/src/sap/suite/ui/commons/themes/sap_horizon/ProcessFlowConnection.less +17 -10
  133. package/src/sap/suite/ui/commons/themes/sap_horizon/ProcessFlowConnectionLabel.less +154 -133
  134. package/src/sap/suite/ui/commons/themes/sap_horizon/ProcessFlowLaneHeader.less +30 -32
  135. package/src/sap/suite/ui/commons/themes/sap_horizon/ProcessFlowNode.less +113 -214
  136. package/src/sap/suite/ui/commons/themes/sap_horizon/TimelineItem.less +43 -39
  137. package/src/sap/suite/ui/commons/themes/sap_horizon_dark/MicroProcessFlow.less +5 -0
  138. package/src/sap/suite/ui/commons/themes/sap_horizon_dark/NetworkLine.less +12 -12
  139. package/src/sap/suite/ui/commons/themes/sap_horizon_dark/ProcessFlowConnection.less +17 -10
  140. package/src/sap/suite/ui/commons/themes/sap_horizon_dark/ProcessFlowConnectionLabel.less +154 -133
  141. package/src/sap/suite/ui/commons/themes/sap_horizon_dark/ProcessFlowLaneHeader.less +30 -31
  142. package/src/sap/suite/ui/commons/themes/sap_horizon_dark/ProcessFlowNode.less +114 -216
  143. package/src/sap/suite/ui/commons/themes/sap_horizon_dark/TimelineItem.less +41 -39
  144. package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/MicroProcessFlow.less +4 -4
  145. package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/ProcessFlowConnection.less +17 -10
  146. package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/ProcessFlowConnectionLabel.less +153 -131
  147. package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/ProcessFlowLaneHeader.less +29 -30
  148. package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/ProcessFlowNode.less +159 -103
  149. package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/TimelineItem.less +41 -39
  150. package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/MicroProcessFlow.less +4 -4
  151. package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/ProcessFlowConnection.less +16 -9
  152. package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/ProcessFlowConnectionLabel.less +153 -131
  153. package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/ProcessFlowLaneHeader.less +29 -30
  154. package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/ProcessFlowNode.less +157 -101
  155. package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/TimelineItem.less +41 -39
  156. package/src/sap/suite/ui/commons/themes/base/DateRangeSlider.less +0 -3
  157. package/src/sap/suite/ui/commons/themes/base/MonitoringTile.less +0 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.commons",
3
- "version": "1.146.0",
3
+ "version": "1.147.0",
4
4
  "description": "SAPUI5 Library sap.suite.ui.commons",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "author": "SAP SE (https://www.sap.com)",
@@ -7,7 +7,7 @@
7
7
  SAP UI development toolkit for HTML5 (SAPUI5)
8
8
  (c) Copyright 2009-2015 SAP SE. All rights reserved
9
9
  </copyright>
10
- <version>1.146.0</version>
10
+ <version>1.147.0</version>
11
11
 
12
12
  <documentation>SAP UI library: sap.suite.ui.commons</documentation>
13
13
 
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  * @extends sap.ui.core.Element
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.146.0
22
+ * @version 1.147.0
23
23
  * @since 1.65.0
24
24
  *
25
25
  * @constructor
@@ -134,7 +134,7 @@ sap.ui.define([
134
134
  * @extends sap.ui.core.Control
135
135
  *
136
136
  * @author SAP SE
137
- * @version 1.146.0
137
+ * @version 1.147.0
138
138
  * @since 1.56.0
139
139
  *
140
140
  * @constructor
@@ -453,6 +453,11 @@ sap.ui.define([
453
453
  aItems = this._oInput._stringToItems(sText),
454
454
  iPosition = oEvent.getParameter("position");
455
455
 
456
+ // Preserve manually-set Literal types when items move positions
457
+ // Only for unique keys (not duplicates) to avoid the bug where
458
+ // all items with same key become Literals
459
+ this._preserveUniqueLiteralTypes(aItems);
460
+
456
461
  this._oExpressionBuilder._smartRender(aItems);
457
462
  this._setExpression(this._oInput._convertEmptyHashes(sText));
458
463
 
@@ -479,6 +484,54 @@ sap.ui.define([
479
484
  this.addDependent(this._oInput);
480
485
  };
481
486
 
487
+ /**
488
+ * Preserves manually-set Literal types when items move positions (e.g., adding brackets).
489
+ * Only applies to keys that appear EXACTLY ONCE in both existing and new items.
490
+ * This prevents the bug where multiple items with the same key all become Literals
491
+ * when only one of them was manually converted.
492
+ * @param {array} aNewItems Array of new items to process
493
+ * @private
494
+ */
495
+ CalculationBuilder.prototype._preserveUniqueLiteralTypes = function (aNewItems) {
496
+ var aExistingItems = this._oExpressionBuilder.getItems();
497
+
498
+ // Count occurrences of each key in existing and new items
499
+ var mExistingKeyCounts = {};
500
+ var mNewKeyCounts = {};
501
+ var mLiteralKeys = {}; // Track which keys are manually-set Literals
502
+
503
+ aExistingItems.forEach(function (oItem) {
504
+ var sKey = oItem.getKey();
505
+ mExistingKeyCounts[sKey] = (mExistingKeyCounts[sKey] || 0) + 1;
506
+
507
+ // Track manually-set Literals
508
+ if (oItem._sType === ItemType.Literal) {
509
+ mLiteralKeys[sKey] = true;
510
+ }
511
+ });
512
+
513
+ aNewItems.forEach(function (oItem) {
514
+ var sKey = oItem.getKey();
515
+ mNewKeyCounts[sKey] = (mNewKeyCounts[sKey] || 0) + 1;
516
+ });
517
+
518
+ // Only preserve Literal type for keys that:
519
+ // 1. Appear exactly ONCE in existing items as a Literal
520
+ // 2. Appear exactly ONCE in new items
521
+ // This ensures we're preserving the same logical item that moved, not duplicates
522
+ aNewItems.forEach(function (oNewItem) {
523
+ var sKey = oNewItem.getKey();
524
+
525
+ if (mLiteralKeys[sKey] &&
526
+ mExistingKeyCounts[sKey] === 1 &&
527
+ mNewKeyCounts[sKey] === 1 &&
528
+ (!oNewItem._sType || oNewItem._sType === "")) {
529
+ // This is a unique item that was manually set as Literal and has moved position
530
+ oNewItem._sType = ItemType.Literal;
531
+ }
532
+ });
533
+ };
534
+
482
535
  CalculationBuilder.prototype._expressionChanged = function () {
483
536
  var sPlainText = "";
484
537
 
@@ -519,7 +572,8 @@ sap.ui.define([
519
572
  this._oInput._aVariables = this.getVariables();
520
573
 
521
574
  if (this._bExpressionSet) {
522
- this._oExpressionBuilder._setItems(this._oInput._stringToItems(this._sExpressionDirectValue));
575
+ var aItems = this._oInput._stringToItems(this._sExpressionDirectValue);
576
+ this._oExpressionBuilder._setItems(aItems);
523
577
  }
524
578
  this._bExpressionSet = false;
525
579
  this._sExpressionDirectValue = "";
@@ -148,7 +148,7 @@ sap.ui.define([
148
148
  * @extends sap.ui.core.Control
149
149
  *
150
150
  * @author SAP SE
151
- * @version 1.146.0
151
+ * @version 1.147.0
152
152
  * @since 1.56.0
153
153
  *
154
154
  * @constructor
@@ -1109,7 +1109,8 @@ sap.ui.define([
1109
1109
  bIsTemplate = this._oCurrentItem && !this._oCurrentItem.getKey(),
1110
1110
  oParent = this.getParent(),
1111
1111
  oFunction = mArguments.functionObject,
1112
- aItems = this.getItems();
1112
+ aItems = this.getItems(),
1113
+ aNewItems;
1113
1114
 
1114
1115
  var fnProcessFunction = function () {
1115
1116
  var aItems = mArguments.type === ItemType.Function ? oFunction.template : oParent._convertToTemplate(oFunction.getItems());
@@ -1134,7 +1135,11 @@ sap.ui.define([
1134
1135
  }.bind(this);
1135
1136
 
1136
1137
  if (bIsNewItem) {
1137
- var aNewItems = [mArguments.key];
1138
+ // For literals, pass type information to preserve it during re-render
1139
+ // For other types, keep existing behavior (pass as string)
1140
+ aNewItems = (mArguments.type === ItemType.Literal) ?
1141
+ [{ key: mArguments.key, _sType: mArguments.type }] :
1142
+ [mArguments.key];
1138
1143
 
1139
1144
  if (oFunction) {
1140
1145
  fnProcessFunction();
@@ -1142,18 +1147,34 @@ sap.ui.define([
1142
1147
 
1143
1148
  fnRender();
1144
1149
  } else {
1145
- // updating current item or creating new item from function "empty" item
1146
- this._oCurrentItem.setKey(mArguments.key);
1150
+ var oCurrentItem = this._oCurrentItem;
1147
1151
 
1148
- if (mArguments.type) {
1149
- this._oCurrentItem._sType = mArguments.type;
1150
- }
1152
+ // Pass type as third parameter to preserve it after _reset()
1153
+ oCurrentItem.setKey(mArguments.key, false, mArguments.type);
1151
1154
 
1152
1155
  if (bIsTemplate && oFunction) {
1153
- var aNewItems = [];
1156
+ aNewItems = [];
1154
1157
  this._iCurrentIndex = fnFindCurrentItem();
1155
1158
  fnProcessFunction();
1156
1159
  fnRender();
1160
+ } else {
1161
+ // For non-template items, manually update the DOM to reflect changes
1162
+ var oRm = new RenderManager();
1163
+ var $item = oCurrentItem.$();
1164
+
1165
+ if ($item && $item[0]) {
1166
+ // Update InvisibleText with new label (no destroy/recreate needed)
1167
+ var sCurrentLabel = oCurrentItem._getLabel();
1168
+ if (oCurrentItem._oCalculationBuilderItemText) {
1169
+ oCurrentItem._oCalculationBuilderItemText.setText(sCurrentLabel);
1170
+ }
1171
+
1172
+ oCurrentItem._innerRender(oRm, $item[0]);
1173
+ $item.attr("class", oCurrentItem._getClass(null, oRm, true));
1174
+
1175
+ // Re-attach event handlers after DOM update
1176
+ oCurrentItem._setEvents();
1177
+ }
1157
1178
  }
1158
1179
  }
1159
1180
 
@@ -1280,6 +1301,11 @@ sap.ui.define([
1280
1301
 
1281
1302
  CalculationBuilderExpression.prototype._getKeys = function () {
1282
1303
  return this.getItems().map(function (oItem) {
1304
+ // Preserve type information for literals to prevent re-evaluation
1305
+ // when items are re-rendered (e.g., when adding an operator after a literal)
1306
+ if (oItem._sType === ItemType.Literal) {
1307
+ return { key: oItem.getKey(), _sType: oItem._sType };
1308
+ }
1283
1309
  return oItem.getKey();
1284
1310
  });
1285
1311
  };
@@ -2046,10 +2072,26 @@ sap.ui.define([
2046
2072
  };
2047
2073
 
2048
2074
  CalculationBuilderExpression.prototype._convertFromNewItem = function (oItem) {
2049
- return typeof oItem === "object" ? oItem :
2050
- new CalculationBuilderItem({
2075
+ if (typeof oItem === "object") {
2076
+ // Check if it's already a CalculationBuilderItem
2077
+ if (oItem.getKey) {
2078
+ return oItem;
2079
+ }
2080
+ // Plain object with key and optional _sType (for literals only)
2081
+ var oNewItem = new CalculationBuilderItem({
2082
+ key: oItem.key
2083
+ });
2084
+ // Only transfer type for literals (consistent with _smartRender)
2085
+ if (oItem._sType !== undefined && oItem._sType === ItemType.Literal) {
2086
+ oNewItem._sType = oItem._sType;
2087
+ }
2088
+ return oNewItem;
2089
+ } else {
2090
+ // String key (existing behavior for non-literals)
2091
+ return new CalculationBuilderItem({
2051
2092
  key: oItem
2052
2093
  });
2094
+ }
2053
2095
  };
2054
2096
 
2055
2097
  CalculationBuilderExpression.prototype._showErrorIcon = function () {
@@ -2101,15 +2143,46 @@ sap.ui.define([
2101
2143
  for (var i = 0; i < aNewItems.length; i++) {
2102
2144
  var oItem = aItems[i],
2103
2145
  oNewItem = aNewItems[i],
2104
- sKey = typeof oNewItem === "object" && oNewItem.getKey ? oNewItem.getKey() : oNewItem,
2146
+ sKey, sType;
2147
+
2148
+ // Extract key (standard logic for all types)
2149
+ if (typeof oNewItem === "object" && oNewItem.getKey) {
2150
+ sKey = oNewItem.getKey();
2151
+ } else if (typeof oNewItem === "object" && oNewItem.key) {
2152
+ sKey = oNewItem.key; // For literal plain objects: {key: "1000", _sType: "Literal"}
2153
+ } else {
2154
+ sKey = oNewItem; // String
2155
+ }
2156
+
2157
+ // Extract type: only preserve when explicitly passed in new item
2158
+ if (oNewItem._sType !== undefined && oNewItem._sType === ItemType.Literal) {
2159
+ // Literal with explicit type (from popup submission)
2160
+ sType = oNewItem._sType;
2161
+ } else {
2162
+ // All other cases - let natural type detection happen
2105
2163
  sType = oNewItem._sType ? oNewItem._sType : "";
2164
+ }
2106
2165
 
2107
2166
  if (!oItem) {
2108
2167
  fnAddNew(aNewItems[i]);
2109
2168
  } else if (oItem.getKey() !== sKey || oItem._sType !== sType) {
2110
- oItem.setKey(sKey, true);
2169
+ // CRITICAL: Preserve manually-set Literal type when keys match
2170
+ // This handles the case where user manually converts a variable to literal,
2171
+ // then types additional characters in text input (e.g., "1000" -> "+")
2172
+ // Without this, the literal would revert to variable on re-parse
2173
+ if (oItem.getKey() === sKey &&
2174
+ oItem._sType === ItemType.Literal &&
2175
+ (!sType || sType === "")) {
2176
+ // Keep existing literal type when:
2177
+ // 1. Keys match (same value)
2178
+ // 2. Existing item is a Literal (manually set)
2179
+ // 3. New item has no explicit type (from text input parser)
2180
+ sType = ItemType.Literal;
2181
+ }
2111
2182
 
2112
- oItem._sType = sType;
2183
+ // Pass type as third parameter to setKey to preserve it after _reset()
2184
+ // This is critical for literals to avoid auto-conversion to variables
2185
+ oItem.setKey(sKey, true, sType);
2113
2186
 
2114
2187
  var $item = oItem.$();
2115
2188
 
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.core.Control
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.146.0
29
+ * @version 1.147.0
30
30
  * @since 1.56.0
31
31
  *
32
32
  * @constructor
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  * @extends sap.ui.core.Control
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.146.0
25
+ * @version 1.147.0
26
26
  * @since 1.60.0
27
27
  *
28
28
  * @constructor
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @extends sap.ui.core.Control
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.146.0
43
+ * @version 1.147.0
44
44
  * @since 1.56.0
45
45
  *
46
46
  * @constructor
@@ -261,11 +261,18 @@ sap.ui.define([
261
261
  oRm.attr("tabindex", sTabIndexAttr);
262
262
  oRm.attr("title", sTooltipAttr);
263
263
  oRm.attr("role", "button");
264
+ // Always update label text to reflect current state
265
+ var sCurrentLabel = this._getLabel();
266
+
264
267
  if (!this._oCalculationBuilderItemText) {
265
268
  this._oCalculationBuilderItemText = new InvisibleText();
266
269
  this._oCalculationBuilderItemText.toStatic();
267
- this._oCalculationBuilderItemText.setText(this._getLabel());
270
+ // Make it a dependent so it's managed by control lifecycle
271
+ this.addDependent(this._oCalculationBuilderItemText);
268
272
  }
273
+ // Update text every time to reflect label changes
274
+ this._oCalculationBuilderItemText.setText(sCurrentLabel);
275
+
269
276
  oRm.attr("aria-labelledby", this._oCalculationBuilderItemText.getId());
270
277
  oRm.attr("aria-describedby", this._oArrowNavigtionInvisibleText.getId());
271
278
  oRm.openEnd();
@@ -600,11 +607,17 @@ sap.ui.define([
600
607
  this._sType = "";
601
608
  this._sLabel = "";
602
609
  this._oVariable = "";
610
+ // InvisibleText is now a dependent - no need to destroy, just update text later
603
611
  };
604
612
 
605
- CalculationBuilderItem.prototype.setKey = function (sKey, bSuppressInvalidation) {
613
+ CalculationBuilderItem.prototype.setKey = function (sKey, bSuppressInvalidation, sType) {
606
614
  this._reset();
607
615
 
616
+ // Restore type after reset if explicitly provided (for literal preservation)
617
+ if (sType !== undefined) {
618
+ this._sType = sType;
619
+ }
620
+
608
621
  this.setProperty("key", this._sanitizeKey(sKey), bSuppressInvalidation);
609
622
 
610
623
  // api change after all rendered, we need to recreate all items and input
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @extends sap.ui.base.ManagedObject
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.146.0
24
+ * @version 1.147.0
25
25
  * @since 1.56.0
26
26
  *
27
27
  * @constructor
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.core.Control
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.146.0
26
+ * @version 1.147.0
27
27
  * @since 1.56.0
28
28
  *
29
29
  * @constructor
@@ -118,7 +118,7 @@ sap.ui.define([
118
118
  * @class
119
119
  * @public
120
120
  * @internal
121
- * @version 1.146.0
121
+ * @version 1.147.0
122
122
  */
123
123
  var CloudFilePicker = Dialog.extend("sap.suite.ui.commons.CloudFilePicker", {
124
124
  metadata: {
@@ -50,7 +50,7 @@ sap.ui.define([
50
50
  * @extends sap.ui.core.Control
51
51
  *
52
52
  * @author SAP SE
53
- * @version 1.146.0
53
+ * @version 1.147.0
54
54
  *
55
55
  * @constructor
56
56
  * @public
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @extends sap.ui.core.Control
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.146.0
41
+ * @version 1.147.0
42
42
  *
43
43
  * @constructor
44
44
  * @public
@@ -8,8 +8,8 @@
8
8
  placement="Auto"
9
9
  showHeader="false"
10
10
  contentWidth="21.875rem"
11
- afterClose="afterClose"
12
- afterOpen="afterOpen">
11
+ afterClose=".afterClose"
12
+ afterOpen=".afterOpen">
13
13
  <VBox visible="{userData>/isUserExistsInTeams}">
14
14
  <HBox>
15
15
  <Avatar id="avatar" src="{= ${userData>/photo} ? ${userData>/photo} : 'sap-icon://person-placeholder' }"
@@ -24,7 +24,7 @@
24
24
  <Title text="{i18n>COLLABORATION_MSTEAMS_SHARE}" level="H5"/>
25
25
  <ToolbarSpacer/>
26
26
  <Button
27
- press="handleMSTeamsPress"
27
+ press=".handleMSTeamsPress"
28
28
  macrodata:email="{userData>/mail}"
29
29
  macrodata:type="chat"
30
30
  tooltip="{i18n>CHAT_BUTTON_TOOLTIP}"
@@ -34,7 +34,7 @@
34
34
  fesr:press="MST:ContactAction"
35
35
  />
36
36
  <Button
37
- press="handleMSTeamsPress"
37
+ press=".handleMSTeamsPress"
38
38
  macrodata:email="{userData>/mail}"
39
39
  macrodata:type="videoCall"
40
40
  tooltip="{i18n>VIDEOCALL_BUTTON_TOOLTIP}"
@@ -44,7 +44,7 @@
44
44
  fesr:press="MST:ContactAction"
45
45
  />
46
46
  <Button
47
- press="handleMSTeamsPress"
47
+ press=".handleMSTeamsPress"
48
48
  macrodata:email="{userData>/mail}"
49
49
  macrodata:type="call"
50
50
  tooltip="{i18n>CALL_BUTTON_TOOLTIP}"
@@ -73,7 +73,7 @@
73
73
  <Label id="UserEmail" text="{i18n>POPOVER_CONTACT_SECTION_EMAIL}:" />
74
74
  <HBox alignItems="Center" justifyContent="SpaceBetween">
75
75
  <Link text="{userData>/mail}" href="{path: 'userData>/mail', formatter: '.formatUri'}" ariaLabelledBy="UserEmail"/>
76
- <core:Icon src="sap-icon://copy" press="handleCopyEmailPress" decorative="false" tooltip="{i18n>POPOVER_CONTACT_COPY_EMAIL}" class="sapThemeHighlight-asColor"/>
76
+ <core:Icon src="sap-icon://copy" press=".handleCopyEmailPress" decorative="false" tooltip="{i18n>POPOVER_CONTACT_COPY_EMAIL}" class="sapThemeHighlight-asColor"/>
77
77
  </HBox>
78
78
  </VBox>
79
79
 
@@ -87,8 +87,8 @@
87
87
  <IllustratedMessage illustrationType="tnt-NoUsers" illustrationSize="Dialog" title="{i18n>POPOVER_NO_CONTACT_TITLE}"
88
88
  description="{i18n>POPOVER_NO_CONTACT_DESCRIPTION}" >
89
89
  <additionalContent>
90
- <Button id="mail" text="{i18n>POPOVER_CONTINUE}" press="afterContinue" type="Emphasized" class="sapUiTinyMarginEnd"/>
91
- <Button text="{i18n>POPOVER_CANCEL}" press="afterClose"/>
90
+ <Button id="mail" text="{i18n>POPOVER_CONTINUE}" press=".afterContinue" type="Emphasized" class="sapUiTinyMarginEnd"/>
91
+ <Button text="{i18n>POPOVER_CANCEL}" press=".afterClose"/>
92
92
  </additionalContent>
93
93
  </IllustratedMessage >
94
94
  </HBox>
@@ -10,12 +10,12 @@
10
10
  initialFocus="action"
11
11
  showHeader="false"
12
12
  contentWidth="25rem"
13
- afterClose="afterClose">
13
+ afterClose=".afterClose">
14
14
  <VBox>
15
15
  <HBox>
16
16
  <Title text="{i18n>COLLABORATION_MSTEAMS_SHARE}" level="H5" class="sapUiTinyMarginTop"/>
17
17
  <Button
18
- press="handleMSTeamsPress"
18
+ press=".handleMSTeamsPress"
19
19
  macrodata:email="{userData>/mail}"
20
20
  macrodata:type="chat"
21
21
  tooltip="{i18n>CHAT_BUTTON_TOOLTIP}"
@@ -25,7 +25,7 @@
25
25
  fesr:press="MST:ContactAction"
26
26
  />
27
27
  <Button
28
- press="handleMSTeamsPress"
28
+ press=".handleMSTeamsPress"
29
29
  macrodata:email="{userData>/mail}"
30
30
  macrodata:type="videoCall"
31
31
  tooltip="{i18n>VIDEOCALL_BUTTON_TOOLTIP}"
@@ -35,7 +35,7 @@
35
35
  fesr:press="MST:ContactAction"
36
36
  />
37
37
  <Button
38
- press="handleMSTeamsPress"
38
+ press=".handleMSTeamsPress"
39
39
  macrodata:email="{userData>/mail}"
40
40
  macrodata:type="call"
41
41
  tooltip="{i18n>CALL_BUTTON_TOOLTIP}"
@@ -53,7 +53,7 @@
53
53
  </core:Icon>
54
54
  <Link text="{userData>/mail}" href="{parts: [{path: 'userData>/mail'}, {path: 'userData>/params'}], formatter: '.formatUri'}" class="sapUiSmallMarginBegin sapUiTinyMarginBottom" />
55
55
  </HBox>
56
- <core:Icon src="sap-icon://copy" press="handleCopyEmailPress" decorative="false" tooltip="{i18n>POPOVER_CONTACT_COPY_EMAIL}" class="sapThemeHighlight-asColor"/>
56
+ <core:Icon src="sap-icon://copy" press=".handleCopyEmailPress" decorative="false" tooltip="{i18n>POPOVER_CONTACT_COPY_EMAIL}" class="sapThemeHighlight-asColor"/>
57
57
  </HBox>
58
58
  </VBox>
59
59
  </Popover>
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  *
23
23
  * @constructor
24
24
  * @alias sap.suite.ui.commons.flexibility.changeHandler.PropertyChangeMapper
25
- * @version 1.146.0
25
+ * @version 1.147.0
26
26
  * @since 1.50
27
27
  * @private
28
28
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.146.0
31
+ * @version 1.147.0
32
32
  * @since 1.67.0
33
33
  *
34
34
  * @constructor
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.146.0
33
+ * @version 1.147.0
34
34
  * @since 1.66.0
35
35
  *
36
36
  * @constructor
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.146.0
31
+ * @version 1.147.0
32
32
  * @since 1.66.0
33
33
  *
34
34
  * @constructor
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  * @extends sap.ui.core.Element
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.146.0
25
+ * @version 1.147.0
26
26
  * @since 1.66.0
27
27
  *
28
28
  * @constructor
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.146.0
31
+ * @version 1.147.0
32
32
  * @since 1.66.0
33
33
  *
34
34
  * @constructor
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.146.0
28
+ * @version 1.147.0
29
29
  * @since 1.66.0
30
30
  *
31
31
  * @constructor
@@ -18,7 +18,7 @@ sap.ui.define([
18
18
  * @extends sap.ui.base.Object
19
19
  *
20
20
  * @author SAP SE
21
- * @version 1.146.0
21
+ * @version 1.147.0
22
22
  * @since 1.66.0
23
23
  *
24
24
  * @abstract
@@ -50,7 +50,7 @@ sap.ui.define([
50
50
  * @extends sap.ui.core.Control
51
51
  *
52
52
  * @author SAP SE
53
- * @version 1.146.0
53
+ * @version 1.147.0
54
54
  * @since 1.66.0
55
55
  *
56
56
  * @constructor
@@ -162,7 +162,7 @@ sap.ui.define([
162
162
  * @extends sap.ui.core.Control
163
163
  *
164
164
  * @author SAP SE
165
- * @version 1.146.0
165
+ * @version 1.147.0
166
166
  * @since 1.66.0
167
167
  *
168
168
  * @constructor
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.suite.ui.commons.imageeditor.ImageEditorContainer
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.146.0
37
+ * @version 1.147.0
38
38
  * @since 1.68.0
39
39
  *
40
40
  * @constructor
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.146.0
31
+ * @version 1.147.0
32
32
  * @since 1.66.0
33
33
  *
34
34
  * @constructor
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.146.0
26
+ * @version 1.147.0
27
27
  * @since 1.66.0
28
28
  *
29
29
  * @constructor
@@ -198,7 +198,7 @@ sap.ui.define([
198
198
  "sap.suite.ui.commons.TargetFilterMeasureColumn",
199
199
  "sap.suite.ui.commons.AriaProperties"
200
200
  ],
201
- version: "1.146.0",
201
+ version: "1.147.0",
202
202
  extensions: {
203
203
  flChangeHandlers: {
204
204
  "sap.suite.ui.commons.Timeline": "sap/suite/ui/commons/flexibility/Timeline"
@@ -1212,7 +1212,7 @@ sap.ui.define([
1212
1212
  * This setting is ignored if layout property is not set to noop.
1213
1213
  *
1214
1214
  * @enum {string}
1215
- * @experimental Since 1.144 . This enumeration is experimental and might be modified or removed in future versions.
1215
+ * @since 1.144
1216
1216
  */
1217
1217
  oSuiteCommonsLib.networkgraph.ConnectionType = {
1218
1218
 
@@ -1244,7 +1244,7 @@ sap.ui.define([
1244
1244
  * This setting is ignored if the layout property is not set to noop.
1245
1245
  *
1246
1246
  * @enum {string}
1247
- * @experimental Since 1.144 . This enumeration is experimental and might be modified or removed in future versions.
1247
+ * @since 1.144
1248
1248
  */
1249
1249
  oSuiteCommonsLib.networkgraph.NodePorts = {
1250
1250
  /**
@@ -1485,7 +1485,7 @@ sap.ui.define([
1485
1485
 
1486
1486
  /**
1487
1487
  * The arrows are placed at both the beginning of the first line segment and the end of the last line segment. This options is valid only with layout type "noop" and optimizedlinealorithm is set.
1488
- * @experimental Since 1.144 . This enumeration is experimental and might be modified or removed in future versions.
1488
+ * @since 1.144
1489
1489
  */
1490
1490
  Both: "Both"
1491
1491
  };