@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.
- package/package.json +1 -1
- package/src/sap/suite/ui/commons/.library +1 -1
- package/src/sap/suite/ui/commons/AriaProperties.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilder.js +56 -2
- package/src/sap/suite/ui/commons/CalculationBuilderExpression.js +87 -14
- package/src/sap/suite/ui/commons/CalculationBuilderFunction.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilderGroup.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilderItem.js +16 -3
- package/src/sap/suite/ui/commons/CalculationBuilderValidationResult.js +1 -1
- package/src/sap/suite/ui/commons/CalculationBuilderVariable.js +1 -1
- package/src/sap/suite/ui/commons/CloudFilePicker.js +1 -1
- package/src/sap/suite/ui/commons/MicroProcessFlow.js +1 -1
- package/src/sap/suite/ui/commons/MicroProcessFlowItem.js +1 -1
- package/src/sap/suite/ui/commons/collaboration/ContactPopover.fragment.xml +8 -8
- package/src/sap/suite/ui/commons/collaboration/MinimalContactPopover.fragment.xml +5 -5
- package/src/sap/suite/ui/commons/flexibility/changeHandler/PropertyChangeMapper.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/CropCustomShapeHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/CropEllipseHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/CropRectangleHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/CustomSizeItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/FilterHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/FlipHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/HistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/ImageEditor.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/ImageEditorContainer.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/ImageEditorResponsiveContainer.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/ResizeHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/imageeditor/RotateHistoryItem.js +1 -1
- package/src/sap/suite/ui/commons/library.js +4 -4
- package/src/sap/suite/ui/commons/messagebundle.properties +12 -8
- package/src/sap/suite/ui/commons/messagebundle_mk.properties +1 -1
- package/src/sap/suite/ui/commons/networkgraph/Graph.js +138 -27
- package/src/sap/suite/ui/commons/networkgraph/GraphMap.js +25 -3
- package/src/sap/suite/ui/commons/networkgraph/KeyboardNavigator.js +332 -13
- package/src/sap/suite/ui/commons/networkgraph/Line.js +5 -1
- package/src/sap/suite/ui/commons/networkgraph/Node.js +67 -5
- package/src/sap/suite/ui/commons/networkgraph/Utils.js +10 -0
- package/src/sap/suite/ui/commons/networkgraph/util/ConnectionPathUtils.js +34 -4
- package/src/sap/suite/ui/commons/networkgraph/util/DependencyLayoutHelper.js +213 -74
- package/src/sap/suite/ui/commons/statusindicator/Circle.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/CustomShape.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/DiscreteThreshold.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/FillingOption.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/LibraryShape.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/Path.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/PropertyThreshold.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/Rectangle.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/Shape.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/ShapeGroup.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/SimpleShape.js +1 -1
- package/src/sap/suite/ui/commons/statusindicator/StatusIndicator.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccount.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccountGroup.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccountItem.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccountItemProperty.js +1 -1
- package/src/sap/suite/ui/commons/taccount/TAccountPanel.js +1 -1
- package/src/sap/suite/ui/commons/themes/base/BusinessCard.less +5 -4
- package/src/sap/suite/ui/commons/themes/base/CalculationBuilder.less +33 -24
- package/src/sap/suite/ui/commons/themes/base/CalculationBuilderExpression.less +40 -31
- package/src/sap/suite/ui/commons/themes/base/CalculationBuilderInput.less +26 -10
- package/src/sap/suite/ui/commons/themes/base/CalculationBuilderItem.less +76 -63
- package/src/sap/suite/ui/commons/themes/base/ChartContainer.less +8 -11
- package/src/sap/suite/ui/commons/themes/base/ChartTile.less +5 -8
- package/src/sap/suite/ui/commons/themes/base/CollaborationPopover.less +116 -106
- package/src/sap/suite/ui/commons/themes/base/DateRangeScroller.less +5 -5
- package/src/sap/suite/ui/commons/themes/base/DateRangeSliderInternal.less +9 -10
- package/src/sap/suite/ui/commons/themes/base/FacetOverview.less +9 -10
- package/src/sap/suite/ui/commons/themes/base/FeedItemHeader.less +9 -12
- package/src/sap/suite/ui/commons/themes/base/FeedTile.less +23 -27
- package/src/sap/suite/ui/commons/themes/base/GenericTile2X2.less +15 -15
- package/src/sap/suite/ui/commons/themes/base/HeaderCell.less +7 -6
- package/src/sap/suite/ui/commons/themes/base/HeaderContainer.less +35 -37
- package/src/sap/suite/ui/commons/themes/base/ImageEditor.less +28 -10
- package/src/sap/suite/ui/commons/themes/base/ImageEditorContainer.less +29 -22
- package/src/sap/suite/ui/commons/themes/base/InfoTile.less +10 -4
- package/src/sap/suite/ui/commons/themes/base/InfoTileSize.less +5 -4
- package/src/sap/suite/ui/commons/themes/base/KpiTile.less +10 -11
- package/src/sap/suite/ui/commons/themes/base/LaunchTile.less +9 -8
- package/src/sap/suite/ui/commons/themes/base/LinkActionSheet.less +14 -43
- package/src/sap/suite/ui/commons/themes/base/MicroProcessFlow.less +51 -47
- package/src/sap/suite/ui/commons/themes/base/MonitoringContent.less +5 -5
- package/src/sap/suite/ui/commons/themes/base/NetworkGraph.less +57 -62
- package/src/sap/suite/ui/commons/themes/base/NetworkGroup.less +61 -65
- package/src/sap/suite/ui/commons/themes/base/NetworkLine.less +58 -55
- package/src/sap/suite/ui/commons/themes/base/NetworkNode.less +3 -0
- package/src/sap/suite/ui/commons/themes/base/NetworkTooltip.less +21 -25
- package/src/sap/suite/ui/commons/themes/base/NoteTaker.less +13 -18
- package/src/sap/suite/ui/commons/themes/base/NoteTakerCard.less +26 -27
- package/src/sap/suite/ui/commons/themes/base/NoteTakerFeeder.less +22 -44
- package/src/sap/suite/ui/commons/themes/base/NumericTile.less +7 -5
- package/src/sap/suite/ui/commons/themes/base/PictureZoomIn.less +6 -5
- package/src/sap/suite/ui/commons/themes/base/ProcessFlow.less +57 -76
- package/src/sap/suite/ui/commons/themes/base/ProcessFlowConnection.less +71 -17
- package/src/sap/suite/ui/commons/themes/base/ProcessFlowConnectionLabel.less +9 -13
- package/src/sap/suite/ui/commons/themes/base/ProcessFlowLaneHeader.less +37 -96
- package/src/sap/suite/ui/commons/themes/base/ProcessFlowNode.less +219 -238
- package/src/sap/suite/ui/commons/themes/base/SemanticColorMixins.less +55 -0
- package/src/sap/suite/ui/commons/themes/base/SplitButton.less +7 -20
- package/src/sap/suite/ui/commons/themes/base/StatusIndicator.less +10 -9
- package/src/sap/suite/ui/commons/themes/base/TAccount.less +78 -73
- package/src/sap/suite/ui/commons/themes/base/TargetFilter.less +50 -58
- package/src/sap/suite/ui/commons/themes/base/ThingCollection.less +18 -13
- package/src/sap/suite/ui/commons/themes/base/ThreePanelThingViewer.less +14 -14
- package/src/sap/suite/ui/commons/themes/base/TileContent2X2.less +9 -13
- package/src/sap/suite/ui/commons/themes/base/Timeline.less +16 -19
- package/src/sap/suite/ui/commons/themes/base/TimelineItem.less +95 -103
- package/src/sap/suite/ui/commons/themes/base/UnifiedThingGroup.less +7 -9
- package/src/sap/suite/ui/commons/themes/base/UnifiedThingInspector.less +12 -9
- package/src/sap/suite/ui/commons/themes/base/VerticalNavigationBar.less +10 -15
- package/src/sap/suite/ui/commons/themes/base/ViewRepeater.less +8 -9
- package/src/sap/suite/ui/commons/themes/base/library.source.less +0 -2
- package/src/sap/suite/ui/commons/themes/sap_fiori_3/MicroProcessFlow.less +9 -3
- package/src/sap/suite/ui/commons/themes/sap_fiori_3/ProcessFlowConnection.less +14 -7
- package/src/sap/suite/ui/commons/themes/sap_fiori_3/ProcessFlowConnectionLabel.less +38 -35
- package/src/sap/suite/ui/commons/themes/sap_fiori_3/ProcessFlowLaneHeader.less +29 -30
- package/src/sap/suite/ui/commons/themes/sap_fiori_3/ProcessFlowNode.less +158 -102
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/MicroProcessFlow.less +9 -3
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/ProcessFlowConnection.less +14 -7
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/ProcessFlowConnectionLabel.less +38 -35
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/ProcessFlowLaneHeader.less +30 -31
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_dark/ProcessFlowNode.less +157 -101
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcb/ProcessFlowConnection.less +14 -7
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcb/ProcessFlowConnectionLabel.less +38 -35
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcb/ProcessFlowLaneHeader.less +30 -31
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcb/ProcessFlowNode.less +147 -101
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcw/ProcessFlowConnection.less +14 -7
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcw/ProcessFlowConnectionLabel.less +38 -35
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcw/ProcessFlowLaneHeader.less +30 -31
- package/src/sap/suite/ui/commons/themes/sap_fiori_3_hcw/ProcessFlowNode.less +158 -102
- package/src/sap/suite/ui/commons/themes/sap_horizon/MicroProcessFlow.less +5 -0
- package/src/sap/suite/ui/commons/themes/sap_horizon/NetworkLine.less +12 -8
- package/src/sap/suite/ui/commons/themes/sap_horizon/ProcessFlowConnection.less +17 -10
- package/src/sap/suite/ui/commons/themes/sap_horizon/ProcessFlowConnectionLabel.less +154 -133
- package/src/sap/suite/ui/commons/themes/sap_horizon/ProcessFlowLaneHeader.less +30 -32
- package/src/sap/suite/ui/commons/themes/sap_horizon/ProcessFlowNode.less +113 -214
- package/src/sap/suite/ui/commons/themes/sap_horizon/TimelineItem.less +43 -39
- package/src/sap/suite/ui/commons/themes/sap_horizon_dark/MicroProcessFlow.less +5 -0
- package/src/sap/suite/ui/commons/themes/sap_horizon_dark/NetworkLine.less +12 -12
- package/src/sap/suite/ui/commons/themes/sap_horizon_dark/ProcessFlowConnection.less +17 -10
- package/src/sap/suite/ui/commons/themes/sap_horizon_dark/ProcessFlowConnectionLabel.less +154 -133
- package/src/sap/suite/ui/commons/themes/sap_horizon_dark/ProcessFlowLaneHeader.less +30 -31
- package/src/sap/suite/ui/commons/themes/sap_horizon_dark/ProcessFlowNode.less +114 -216
- package/src/sap/suite/ui/commons/themes/sap_horizon_dark/TimelineItem.less +41 -39
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/MicroProcessFlow.less +4 -4
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/ProcessFlowConnection.less +17 -10
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/ProcessFlowConnectionLabel.less +153 -131
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/ProcessFlowLaneHeader.less +29 -30
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/ProcessFlowNode.less +159 -103
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcb/TimelineItem.less +41 -39
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/MicroProcessFlow.less +4 -4
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/ProcessFlowConnection.less +16 -9
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/ProcessFlowConnectionLabel.less +153 -131
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/ProcessFlowLaneHeader.less +29 -30
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/ProcessFlowNode.less +157 -101
- package/src/sap/suite/ui/commons/themes/sap_horizon_hcw/TimelineItem.less +41 -39
- package/src/sap/suite/ui/commons/themes/base/DateRangeSlider.less +0 -3
- package/src/sap/suite/ui/commons/themes/base/MonitoringTile.less +0 -3
package/package.json
CHANGED
|
@@ -134,7 +134,7 @@ sap.ui.define([
|
|
|
134
134
|
* @extends sap.ui.core.Control
|
|
135
135
|
*
|
|
136
136
|
* @author SAP SE
|
|
137
|
-
* @version 1.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
1146
|
-
this._oCurrentItem.setKey(mArguments.key);
|
|
1150
|
+
var oCurrentItem = this._oCurrentItem;
|
|
1147
1151
|
|
|
1148
|
-
|
|
1149
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2050
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
|
@@ -40,7 +40,7 @@ sap.ui.define([
|
|
|
40
40
|
* @extends sap.ui.core.Control
|
|
41
41
|
*
|
|
42
42
|
* @author SAP SE
|
|
43
|
-
* @version 1.
|
|
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
|
-
|
|
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
|
|
@@ -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>
|
|
@@ -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.
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
1488
|
+
* @since 1.144
|
|
1489
1489
|
*/
|
|
1490
1490
|
Both: "Both"
|
|
1491
1491
|
};
|