@sapui5/sap.suite.ui.commons 1.145.1 → 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 +83 -4
- 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/CalculationBuilderInput.js +11 -0
- 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/ControlProxy.js +7 -4
- 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/ProcessFlowRenderer.js +3 -0
- package/src/sap/suite/ui/commons/collaboration/ContactHelper.js +5 -1
- package/src/sap/suite/ui/commons/collaboration/ContactPopover.fragment.xml +10 -10
- package/src/sap/suite/ui/commons/collaboration/MinimalContactPopover.fragment.xml +12 -10
- package/src/sap/suite/ui/commons/collaboration/ServiceContainer.js +12 -2
- 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 +9 -6
- 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 +16 -8
- package/src/sap/suite/ui/commons/messagebundle_ar.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_bg.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_ca.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_cnr.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_cs.properties +7 -1
- package/src/sap/suite/ui/commons/messagebundle_cy.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_da.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_de.properties +8 -2
- package/src/sap/suite/ui/commons/messagebundle_el.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_en.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_en_GB.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_en_US_saprigi.properties +9 -5
- package/src/sap/suite/ui/commons/messagebundle_es.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_es_MX.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_et.properties +6 -0
- package/src/sap/suite/ui/commons/messagebundle_fi.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_fr.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_fr_CA.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_hi.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_hr.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_hu.properties +9 -3
- package/src/sap/suite/ui/commons/messagebundle_id.properties +12 -6
- package/src/sap/suite/ui/commons/messagebundle_it.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_iw.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_ja.properties +9 -3
- package/src/sap/suite/ui/commons/messagebundle_kk.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_ko.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_lt.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_lv.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_mk.properties +9 -3
- package/src/sap/suite/ui/commons/messagebundle_ms.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_nl.properties +8 -2
- package/src/sap/suite/ui/commons/messagebundle_no.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_pl.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_pt.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_pt_PT.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_ro.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_ru.properties +12 -6
- package/src/sap/suite/ui/commons/messagebundle_sh.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_sk.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_sl.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_sr.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_sv.properties +10 -4
- package/src/sap/suite/ui/commons/messagebundle_th.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_tr.properties +8 -2
- package/src/sap/suite/ui/commons/messagebundle_uk.properties +14 -8
- package/src/sap/suite/ui/commons/messagebundle_vi.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_zh_CN.properties +11 -5
- package/src/sap/suite/ui/commons/messagebundle_zh_TW.properties +11 -5
- package/src/sap/suite/ui/commons/networkgraph/Graph.js +149 -40
- 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 +110 -12
- package/src/sap/suite/ui/commons/networkgraph/Node.js +67 -5
- package/src/sap/suite/ui/commons/networkgraph/Utils.js +249 -10
- package/src/sap/suite/ui/commons/networkgraph/layout/NoopLayout.js +55 -8
- package/src/sap/suite/ui/commons/networkgraph/util/ConnectionPathUtils.js +34 -4
- package/src/sap/suite/ui/commons/networkgraph/util/DependencyLayoutHelper.js +230 -82
- package/src/sap/suite/ui/commons/networkgraph/util/DragDropManager.js +52 -50
- package/src/sap/suite/ui/commons/networkgraph/util/PortManager.js +12 -3
- 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/windowmessages/CollaborationMessageConsumer.js +3 -3
- package/src/sap/suite/ui/commons/themes/base/DateRangeSlider.less +0 -3
- package/src/sap/suite/ui/commons/themes/base/MonitoringTile.less +0 -3
|
@@ -252,6 +252,7 @@ sap.ui.define([
|
|
|
252
252
|
/**
|
|
253
253
|
* Enables the drag and drop of nodes. This property is ignored if the layout property is not set to noop.
|
|
254
254
|
* If set to <code>true</code>, nodes can be dragged and dropped within the graph.
|
|
255
|
+
* Note: Drag and drop functionality is only available for nodes. Groups cannot be dragged and dropped, even when NoopLayout is used and enableDragAndDrop is set to true.
|
|
255
256
|
* @public
|
|
256
257
|
* @since 1.144
|
|
257
258
|
*/
|
|
@@ -290,10 +291,10 @@ sap.ui.define([
|
|
|
290
291
|
*/
|
|
291
292
|
connectionTypeMapping: {
|
|
292
293
|
type: "object", group: "Behavior", defaultValue: {
|
|
293
|
-
"LeftToLeft": "
|
|
294
|
-
"LeftToRight": "
|
|
295
|
-
"RightToLeft": "
|
|
296
|
-
"RightToRight": "
|
|
294
|
+
"LeftToLeft": "Start to Start",
|
|
295
|
+
"LeftToRight": "Start to Finish",
|
|
296
|
+
"RightToLeft": "Finish to Start",
|
|
297
|
+
"RightToRight": "Finish to Finish"
|
|
297
298
|
}
|
|
298
299
|
}
|
|
299
300
|
},
|
|
@@ -417,6 +418,7 @@ sap.ui.define([
|
|
|
417
418
|
/**
|
|
418
419
|
* This event is fired when a user drops a node in the graph.
|
|
419
420
|
* This event is available only when the layout algorithm is set to "NoopLayout" and the <code>enableDragAndDrop</code> property is set to <code>true</code>.
|
|
421
|
+
* Note: When a node is dropped near the TOP or LEFT boundary of the graph canvas, its position is automatically adjusted (clamped) to ensure the node and its elements remain fully visible. This provides better visualization by preventing nodes from being positioned at coordinates that would make them invisible or partially hidden.
|
|
420
422
|
* @public
|
|
421
423
|
* @since 1.144
|
|
422
424
|
*/
|
|
@@ -478,7 +480,14 @@ sap.ui.define([
|
|
|
478
480
|
*/
|
|
479
481
|
item: { type: "sap.suite.ui.commons.networkgraph.ElementBase" }
|
|
480
482
|
}
|
|
481
|
-
}
|
|
483
|
+
},
|
|
484
|
+
/**
|
|
485
|
+
* Fired when the user requests to add a node via INSERT or Ctrl+Alt+N.
|
|
486
|
+
* Only available when NoopLayout is used and enableDragAndDrop is <code>true</code>.
|
|
487
|
+
* @public
|
|
488
|
+
* @since 1.148
|
|
489
|
+
*/
|
|
490
|
+
nodeAdded: {}
|
|
482
491
|
}
|
|
483
492
|
}
|
|
484
493
|
});
|
|
@@ -577,13 +586,66 @@ sap.ui.define([
|
|
|
577
586
|
}
|
|
578
587
|
// Initialize PortManager with this graph instance
|
|
579
588
|
PortManager.setGraphInstance(this);
|
|
589
|
+
Core.ready(this._handleCoreInitialized.bind(this));
|
|
590
|
+
|
|
591
|
+
};
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Handler for the core's init event. Attaches listener for localization changes.
|
|
595
|
+
* @private
|
|
596
|
+
*/
|
|
597
|
+
Graph.prototype._handleCoreInitialized = function () {
|
|
598
|
+
Localization.attachChange(this._handleLocalizationChanged.bind(this));
|
|
599
|
+
};
|
|
600
|
+
|
|
601
|
+
/**
|
|
602
|
+
* Handler for localization changes. Sets a pending flag when RTL mode changes so that
|
|
603
|
+
* node dimensions are re-measured after RTL CSS files finish loading.
|
|
604
|
+
* UI5 automatically re-renders all UIAreas on RTL change; the flag prevents premature
|
|
605
|
+
* layout calculation in onAfterRendering before CSS dimensions are stable.
|
|
606
|
+
* @private
|
|
607
|
+
*/
|
|
608
|
+
Graph.prototype._handleLocalizationChanged = function () {
|
|
609
|
+
const bNewRtl = Localization.getRTL();
|
|
610
|
+
if (this._bIsRtl !== bNewRtl) {
|
|
611
|
+
this._bIsRtl = bNewRtl;
|
|
612
|
+
this._bRtlMeasurementPending = true;
|
|
613
|
+
|
|
614
|
+
const fnOnApplied = function () {
|
|
615
|
+
Theming.detachApplied(fnOnApplied);
|
|
616
|
+
if (this._bRtlMeasurementPending) {
|
|
617
|
+
this._bRtlMeasurementPending = false;
|
|
618
|
+
this._measureAndLayout();
|
|
619
|
+
}
|
|
620
|
+
}.bind(this);
|
|
621
|
+
Theming.attachApplied(fnOnApplied);
|
|
622
|
+
}
|
|
623
|
+
};
|
|
580
624
|
|
|
625
|
+
Graph.prototype._measureAndLayout = function () {
|
|
626
|
+
var aNodes = this.getNodes();
|
|
627
|
+
aNodes.forEach(function (oNode) {
|
|
628
|
+
if (this._isUseNodeHtml()) {
|
|
629
|
+
oNode._setupDivDimensions();
|
|
630
|
+
} else {
|
|
631
|
+
oNode.calculateSizes();
|
|
632
|
+
oNode._setupWidthAndHeight();
|
|
633
|
+
}
|
|
634
|
+
}.bind(this));
|
|
635
|
+
this._bTriggerLayoutCalculation = true;
|
|
636
|
+
this._preprocessData();
|
|
581
637
|
};
|
|
582
638
|
|
|
583
639
|
Graph.prototype.onBeforeRendering = function () {
|
|
584
640
|
// indicates RTL
|
|
585
641
|
this._bIsRtl = Localization.getRTL();
|
|
586
642
|
|
|
643
|
+
// Check if the currently focused item has been destroyed and clear it
|
|
644
|
+
if (this._oFocus && this._oFocus.item && (this._oFocus.item.bIsDestroyed || this._oFocus.item.isDestroyed?.())) {
|
|
645
|
+
Log.info("NetworkGraph: Focused item was destroyed before rendering, clearing focus");
|
|
646
|
+
this._oFocus = null;
|
|
647
|
+
}
|
|
648
|
+
|
|
587
649
|
this.setBusy(false);
|
|
588
650
|
this.setBusyIndicatorDelay(0);
|
|
589
651
|
|
|
@@ -631,7 +693,6 @@ sap.ui.define([
|
|
|
631
693
|
this.$().addClass("sapSuiteUiCommonsNetworkGraphFullScreen");
|
|
632
694
|
}
|
|
633
695
|
|
|
634
|
-
|
|
635
696
|
if (aNodes.length === 0 || this._bIsInvalid || this.getNoData()) {
|
|
636
697
|
if (this._bIsInvalid) {
|
|
637
698
|
oRm.openStart("span");
|
|
@@ -693,29 +754,18 @@ sap.ui.define([
|
|
|
693
754
|
oRm.flush(this._$innerscroller[0], true, this._$innerscroller.children().length);
|
|
694
755
|
}
|
|
695
756
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
// call after rendering before layouter starts - can be handy when user custom renders
|
|
700
|
-
oNode._setupDivDimensions();
|
|
701
|
-
} else {
|
|
702
|
-
oNode.calculateSizes();
|
|
703
|
-
oNode._setupWidthAndHeight();
|
|
704
|
-
}
|
|
705
|
-
}.bind(this));
|
|
706
|
-
|
|
707
|
-
this._preprocessData();
|
|
708
|
-
Theming.detachApplied(fnProcess);
|
|
757
|
+
if (!this._bRtlMeasurementPending) {
|
|
758
|
+
this._measureAndLayout();
|
|
759
|
+
}
|
|
709
760
|
}.bind(this);
|
|
710
761
|
|
|
711
|
-
|
|
712
|
-
// else it will be called once theme is applied.
|
|
713
|
-
Theming.attachApplied(fnProcess);
|
|
762
|
+
fnProcess();
|
|
714
763
|
}
|
|
715
764
|
this.oInvisibleMessage = InvisibleMessage.getInstance();
|
|
716
765
|
oRm.destroy();
|
|
717
766
|
|
|
718
767
|
};
|
|
768
|
+
|
|
719
769
|
Graph.prototype.exit = function () {
|
|
720
770
|
// if (this.oHashChanger) {
|
|
721
771
|
// this.oHashChanger.destroy();
|
|
@@ -1023,6 +1073,21 @@ sap.ui.define([
|
|
|
1023
1073
|
this._oZoomLevelInvisibleText.setText(oResourceBundle.getText("NETWORK_GRAPH_ZOOM_LEVEL") + ": " + this._getZoomText());
|
|
1024
1074
|
};
|
|
1025
1075
|
|
|
1076
|
+
/**
|
|
1077
|
+
* Restores keyboard focus to the last focused item in the graph, or falls back to the graph wrapper.
|
|
1078
|
+
* @private
|
|
1079
|
+
*/
|
|
1080
|
+
Graph.prototype._restoreFocusToGraph = function () {
|
|
1081
|
+
if (this._oFocus) {
|
|
1082
|
+
const oFocusToRestore = this._oFocus;
|
|
1083
|
+
// Force setFocus to re-apply even if the item hasn't changed.
|
|
1084
|
+
this._oFocus = null;
|
|
1085
|
+
this.setFocus(oFocusToRestore);
|
|
1086
|
+
} else {
|
|
1087
|
+
this.getFocusDomRef().focus();
|
|
1088
|
+
}
|
|
1089
|
+
};
|
|
1090
|
+
|
|
1026
1091
|
/**
|
|
1027
1092
|
* Gets the associated control linked to this graph instance using the 'associatedControl' association.
|
|
1028
1093
|
* This can be any UI5 control that is related to the graph.
|
|
@@ -1084,7 +1149,14 @@ sap.ui.define([
|
|
|
1084
1149
|
oTooltip.attachEvent("afterClose", function () {
|
|
1085
1150
|
var oFocus = this.getFocus();
|
|
1086
1151
|
|
|
1087
|
-
if (oFocus) {
|
|
1152
|
+
if (oFocus && oFocus.item) {
|
|
1153
|
+
// Check if the focused item is destroyed before trying to restore focus
|
|
1154
|
+
if (oFocus.item.bIsDestroyed || oFocus.item.isDestroyed?.()) {
|
|
1155
|
+
Log.info("NetworkGraph: Cannot restore focus on destroyed control after tooltip close");
|
|
1156
|
+
this._oFocus = null;
|
|
1157
|
+
return;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1088
1160
|
this.setFocus(oFocus);
|
|
1089
1161
|
|
|
1090
1162
|
if (oFocus.button == "menu") {
|
|
@@ -1159,12 +1231,12 @@ sap.ui.define([
|
|
|
1159
1231
|
Graph.prototype.setEnableDragAndDrop = function (bEnabled) {
|
|
1160
1232
|
this.setProperty("enableDragAndDrop", bEnabled, true);
|
|
1161
1233
|
|
|
1162
|
-
// Update zoom button
|
|
1234
|
+
// Update zoom button visibility
|
|
1163
1235
|
if (this._zoomIn && this._zoomOut && this._zoomToFitButton) {
|
|
1164
|
-
var
|
|
1165
|
-
this._zoomIn.
|
|
1166
|
-
this._zoomOut.
|
|
1167
|
-
this._zoomToFitButton.
|
|
1236
|
+
var bZoomVisible = !this._isDnDEnabled();
|
|
1237
|
+
this._zoomIn.setVisible(bZoomVisible);
|
|
1238
|
+
this._zoomOut.setVisible(bZoomVisible);
|
|
1239
|
+
this._zoomToFitButton.setVisible(bZoomVisible);
|
|
1168
1240
|
}
|
|
1169
1241
|
|
|
1170
1242
|
// remove the node ports when drag and drop is disabled
|
|
@@ -1190,6 +1262,13 @@ sap.ui.define([
|
|
|
1190
1262
|
* @private
|
|
1191
1263
|
*/
|
|
1192
1264
|
Graph.prototype.setFocus = function (oFocus, bIsClickOrEnter) {
|
|
1265
|
+
// Check if the focused item has been destroyed and clear it
|
|
1266
|
+
if (oFocus && oFocus.item && (oFocus.item.bIsDestroyed || oFocus.item.isDestroyed?.())) {
|
|
1267
|
+
Log.info("NetworkGraph: Cannot set focus on destroyed control, clearing focus");
|
|
1268
|
+
this._oFocus = null;
|
|
1269
|
+
return;
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1193
1272
|
// Identity redundant
|
|
1194
1273
|
if (!oFocus && !this._oFocus ||
|
|
1195
1274
|
oFocus && this._oFocus && oFocus.item === this._oFocus.item && oFocus.button === this._oFocus.button && oFocus.groupInFocused === this._oFocus.groupInFocused) {
|
|
@@ -1404,12 +1483,25 @@ sap.ui.define([
|
|
|
1404
1483
|
|
|
1405
1484
|
// While Expand/Collapse, focus will still remain to the button
|
|
1406
1485
|
if (this._oFocus && this._oFocus.button === Group.BUTTONS.COLLAPSE) {
|
|
1407
|
-
|
|
1486
|
+
// Check if the focused item still exists and is not destroyed
|
|
1487
|
+
if (this._oFocus.item && !this._oFocus.item.bIsDestroyed && !this._oFocus.item.isDestroyed?.()) {
|
|
1488
|
+
this._oFocus.item._setCollapseButtonFocus(true);
|
|
1489
|
+
} else {
|
|
1490
|
+
Log.info("NetworkGraph: Focused item was destroyed, clearing focus");
|
|
1491
|
+
this._oFocus = null;
|
|
1492
|
+
}
|
|
1408
1493
|
}
|
|
1409
1494
|
this._bIsLayedOut = true;
|
|
1410
1495
|
this._setupEvents();
|
|
1411
1496
|
this._setupKeyboardNavigation();
|
|
1412
|
-
|
|
1497
|
+
// Only restore focus if the focused item still exists and is not destroyed
|
|
1498
|
+
var oCurrentFocus = this.getFocus();
|
|
1499
|
+
if (oCurrentFocus && oCurrentFocus.item && (oCurrentFocus.item.bIsDestroyed || oCurrentFocus.item.isDestroyed?.())) {
|
|
1500
|
+
Log.info("NetworkGraph: Cannot restore focus on destroyed control, clearing focus");
|
|
1501
|
+
this._oFocus = null;
|
|
1502
|
+
} else {
|
|
1503
|
+
this.setFocus(oCurrentFocus);
|
|
1504
|
+
}
|
|
1413
1505
|
|
|
1414
1506
|
// when there is background image, busy is set false after image is loaded (own event)
|
|
1415
1507
|
// in case image was already loaded continue as usual
|
|
@@ -2225,12 +2317,6 @@ sap.ui.define([
|
|
|
2225
2317
|
}
|
|
2226
2318
|
});
|
|
2227
2319
|
this._toolbar.addContent(this._zoomOut);
|
|
2228
|
-
|
|
2229
|
-
// Disable zoom buttons if drag and drop is enabled
|
|
2230
|
-
if (this._isDnDEnabled()) {
|
|
2231
|
-
this._zoomIn.setEnabled(false);
|
|
2232
|
-
this._zoomOut.setEnabled(false);
|
|
2233
|
-
}
|
|
2234
2320
|
}
|
|
2235
2321
|
|
|
2236
2322
|
// fit to viewport
|
|
@@ -2243,9 +2329,11 @@ sap.ui.define([
|
|
|
2243
2329
|
});
|
|
2244
2330
|
this._toolbar.addContent(this._zoomToFitButton);
|
|
2245
2331
|
|
|
2246
|
-
//
|
|
2332
|
+
// Hide zoom buttons if drag and drop is enabled
|
|
2247
2333
|
if (this._isDnDEnabled()) {
|
|
2248
|
-
this.
|
|
2334
|
+
this._zoomIn.setVisible(false);
|
|
2335
|
+
this._zoomOut.setVisible(false);
|
|
2336
|
+
this._zoomToFitButton.setVisible(false);
|
|
2249
2337
|
}
|
|
2250
2338
|
|
|
2251
2339
|
// toggle full screen
|
|
@@ -2878,7 +2966,13 @@ sap.ui.define([
|
|
|
2878
2966
|
fHeight = oItem._iHeight;
|
|
2879
2967
|
}
|
|
2880
2968
|
|
|
2881
|
-
|
|
2969
|
+
const fScrollLeft = ((fX + (fWidth ? fWidth : 0) / 2) * this._fZoomLevel) - (this.$scroller.width() / 2);
|
|
2970
|
+
|
|
2971
|
+
if (this._bIsRtl) {
|
|
2972
|
+
this.$scroller.get(0).scrollLeft = -fScrollLeft;
|
|
2973
|
+
} else {
|
|
2974
|
+
this.$scroller.get(0).scrollLeft = fScrollLeft;
|
|
2975
|
+
}
|
|
2882
2976
|
this.$scroller.get(0).scrollTop = ((fY + (fHeight ? fHeight : 0) / 2) * this._fZoomLevel) - (this.$scroller.height() / 2);
|
|
2883
2977
|
};
|
|
2884
2978
|
|
|
@@ -2899,6 +2993,14 @@ sap.ui.define([
|
|
|
2899
2993
|
iRight = iLeft + this.$scroller.width() / this._fZoomLevel,
|
|
2900
2994
|
iBottom = iTop + this.$scroller.height() / this._fZoomLevel;
|
|
2901
2995
|
|
|
2996
|
+
if (this._bIsRtl) {
|
|
2997
|
+
const iGraphWidth = this.$svg.width() / this._fZoomLevel;
|
|
2998
|
+
const iViewportWidth = this.$scroller.width() / this._fZoomLevel;
|
|
2999
|
+
const iScrollPosAbs = Math.abs(iLeft);
|
|
3000
|
+
iLeft = iGraphWidth - iScrollPosAbs - iViewportWidth;
|
|
3001
|
+
iRight = iLeft + iViewportWidth;
|
|
3002
|
+
}
|
|
3003
|
+
|
|
2902
3004
|
if (!oItem._isOnScreen(iLeft, iRight, iTop, iBottom)) {
|
|
2903
3005
|
if (oItem instanceof Node) {
|
|
2904
3006
|
iCenterX = oItem.getX() + oItem._iWidth / 2;
|
|
@@ -2913,7 +3015,14 @@ sap.ui.define([
|
|
|
2913
3015
|
}
|
|
2914
3016
|
|
|
2915
3017
|
if (iCenterX < iLeft || iCenterX > iRight) {
|
|
2916
|
-
|
|
3018
|
+
let iTargetScrollLeft = iCenterX * this._fZoomLevel - this.$scroller.width() / 2;
|
|
3019
|
+
|
|
3020
|
+
if (this._bIsRtl) {
|
|
3021
|
+
const iScrollRange = oScroller.scrollWidth - oScroller.clientWidth;
|
|
3022
|
+
iTargetScrollLeft = -(iScrollRange - iTargetScrollLeft);
|
|
3023
|
+
}
|
|
3024
|
+
|
|
3025
|
+
oScroller.scrollLeft = iTargetScrollLeft;
|
|
2917
3026
|
}
|
|
2918
3027
|
if (iCenterY < iTop || iCenterY > iBottom) {
|
|
2919
3028
|
oScroller.scrollTop = iCenterY * this._fZoomLevel - this.$scroller.height() / 2;
|
|
@@ -367,12 +367,28 @@ sap.ui.define([
|
|
|
367
367
|
}
|
|
368
368
|
};
|
|
369
369
|
|
|
370
|
+
/**
|
|
371
|
+
* Returns the horizontal scroll position in graph coordinates, accounting for RTL.
|
|
372
|
+
*/
|
|
373
|
+
GraphMap.prototype._getScrollLeftForMap = function (oGraph) {
|
|
374
|
+
const fScrollLeft = oGraph.$scroller[0].scrollLeft;
|
|
375
|
+
|
|
376
|
+
if (oGraph._bIsRtl) {
|
|
377
|
+
const iGraphWidth = oGraph.$svg.width() / oGraph._fZoomLevel;
|
|
378
|
+
const iViewportWidth = oGraph.$scroller.width() / oGraph._fZoomLevel;
|
|
379
|
+
const iScrollPosAbs = Math.abs(fScrollLeft) / oGraph._fZoomLevel;
|
|
380
|
+
return iGraphWidth - iScrollPosAbs - iViewportWidth;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
return fScrollLeft / oGraph._fZoomLevel;
|
|
384
|
+
};
|
|
385
|
+
|
|
370
386
|
GraphMap.prototype._resize = function () {
|
|
371
387
|
var oGraph = this.getGraph(),
|
|
372
388
|
$scroller = oGraph.$scroller,
|
|
373
389
|
$mapNavigator = this.$("mapNavigator");
|
|
374
390
|
|
|
375
|
-
$mapNavigator.attr("x", Math.max(NAVIGATORLINESIZE / 2,
|
|
391
|
+
$mapNavigator.attr("x", Math.max(NAVIGATORLINESIZE / 2, this._getScrollLeftForMap(oGraph)));
|
|
376
392
|
$mapNavigator.attr("y", Math.max(NAVIGATORLINESIZE / 2, $scroller[0].scrollTop / oGraph._fZoomLevel));
|
|
377
393
|
|
|
378
394
|
$mapNavigator.attr("width", $scroller.width() / oGraph._fZoomLevel);
|
|
@@ -403,7 +419,7 @@ sap.ui.define([
|
|
|
403
419
|
$mapNavigator = this.$("mapNavigator");
|
|
404
420
|
|
|
405
421
|
if (oGraph && $scroller[0]) {
|
|
406
|
-
$mapNavigator.attr("x", Math.max(NAVIGATORLINESIZE / 2,
|
|
422
|
+
$mapNavigator.attr("x", Math.max(NAVIGATORLINESIZE / 2, this._getScrollLeftForMap(oGraph)));
|
|
407
423
|
$mapNavigator.attr("y", Math.max(NAVIGATORLINESIZE / 2, $scroller[0].scrollTop / oGraph._fZoomLevel));
|
|
408
424
|
|
|
409
425
|
this._correctMapNavigator();
|
|
@@ -424,7 +440,13 @@ sap.ui.define([
|
|
|
424
440
|
fRealStartX = $border.offset().left,
|
|
425
441
|
fRealStartY = $border.offset().top;
|
|
426
442
|
|
|
427
|
-
|
|
443
|
+
const fTargetScrollLeft = (oScrollData.pageX - fRealStartX) * iRatio - ($scroller.width() / 2);
|
|
444
|
+
if (oGraph._bIsRtl) {
|
|
445
|
+
const iScrollRange = oScroller.scrollWidth - oScroller.clientWidth;
|
|
446
|
+
oScroller.scrollLeft = -(iScrollRange - fTargetScrollLeft);
|
|
447
|
+
} else {
|
|
448
|
+
oScroller.scrollLeft = fTargetScrollLeft;
|
|
449
|
+
}
|
|
428
450
|
oScroller.scrollTop = (oScrollData.pageY - fRealStartY) * iRatio - ($scroller.height() / 2);
|
|
429
451
|
};
|
|
430
452
|
|