@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
@@ -532,10 +532,10 @@ NETWORKGRAPH_CANCEL_BUTTON=Cancel
532
532
  #XBUT: Cancel button text
533
533
  NETWORKGRAPH_CREATE_BUTTON=Create
534
534
  #XTXT: Connection type display texts
535
- NETWORKGRAPH_CONNECTION_TYPE_LEFT_TO_LEFT=Left to Left
536
- NETWORKGRAPH_CONNECTION_TYPE_LEFT_TO_RIGHT=Left to Right
537
- NETWORKGRAPH_CONNECTION_TYPE_RIGHT_TO_LEFT=Right to Left
538
- NETWORKGRAPH_CONNECTION_TYPE_RIGHT_TO_RIGHT=Right to Right
535
+ NETWORKGRAPH_CONNECTION_TYPE_LEFT_TO_LEFT=Start to Start
536
+ NETWORKGRAPH_CONNECTION_TYPE_LEFT_TO_RIGHT=Start to Finish
537
+ NETWORKGRAPH_CONNECTION_TYPE_RIGHT_TO_LEFT=Finish to Start
538
+ NETWORKGRAPH_CONNECTION_TYPE_RIGHT_TO_RIGHT=Finish to Finish
539
539
  NETWORKGRAPH_CONNECTION_TYPE_TOP_TO_TOP=Top to Top
540
540
  NETWORKGRAPH_CONNECTION_TYPE_TOP_TO_BOTTOM=Top to Bottom
541
541
  NETWORKGRAPH_CONNECTION_TYPE_BOTTOM_TO_TOP=Bottom to Top
@@ -553,13 +553,13 @@ NETWORK_GRAPH_NODE_ATTRIBUTES=Attributes are
553
553
  #XACT: Text for node status accessibility label
554
554
  NETWORK_GRAPH_NODE_ACCESSIBILITY_STATUS=Status is
555
555
  #XACT: Text for incoming connectors accessibility label (singular)
556
- NETWORK_GRAPH_INCOMING_CONNECTOR_SINGULAR=There is {0} incoming connector
556
+ NETWORK_GRAPH_INCOMING_CONNECTOR_SINGULAR={0} incoming connector
557
557
  #XACT: Text for incoming connectors accessibility label (plural)
558
- NETWORK_GRAPH_INCOMING_CONNECTORS_PLURAL=There are {0} incoming connectors
558
+ NETWORK_GRAPH_INCOMING_CONNECTORS_PLURAL={0} incoming connectors
559
559
  #XACT: Text for outgoing connectors accessibility label (singular)
560
- NETWORK_GRAPH_OUTGOING_CONNECTOR_SINGULAR=There is {0} outgoing connector
560
+ NETWORK_GRAPH_OUTGOING_CONNECTOR_SINGULAR={0} outgoing connector
561
561
  #XACT: Text for outgoing connectors accessibility label (plural)
562
- NETWORK_GRAPH_OUTGOING_CONNECTORS_PLURAL=There are {0} outgoing connectors
562
+ NETWORK_GRAPH_OUTGOING_CONNECTORS_PLURAL={0} outgoing connectors
563
563
  #XACT: Text for keyboard navigation to outgoing connector
564
564
  NETWORK_GRAPH_NAVIGATION_TAB_TO_OUTGOING=To navigate to the outgoing connector, press Tab
565
565
  #XACT: Text for keyboard navigation to incoming connector
@@ -570,6 +570,10 @@ NETWORK_GRAPH_LINE_NAVIGATION_TAB_TO_TARGET=To navigate to {0}, press Tab
570
570
  NETWORK_GRAPH_LINE_NAVIGATION_SHIFT_TAB_TO_SOURCE=To navigate back to {0}, press Shift + Tab
571
571
  #XACT: Text for keyboard navigation between connectors
572
572
  NETWORK_GRAPH_LINE_NAVIGATION_ARROW_KEYS=To navigate to other connectors from {0}, Use arrow keys
573
+ #XACT: Text hint to hear individual connector navigation options via Alt+
574
+ NETWORK_GRAPH_NAVIGATION_ALT_CONNECTORS=To hear possible connectors, press ALT +
575
+ #XACT: Text for individual connector announcement when Alt+ is pressed. {0}=type, {1}=direction, {2}=connection type, {3}=from node, {4}=to node, {5}=number
576
+ NETWORK_GRAPH_NAVIGATION_ALT_CONNECTOR_ANNOUNCE=Navigate to {0} connector on {1}, {2} connector connecting {3} to {4}, press ALT + {5}
573
577
  #XACT: Text for line status accessibility label
574
578
  NETWORK_GRAPH_LINE_ACCESSIBILITY_STATUS=Status is
575
579
  #XACT: Text for line accessibility - connection going from source to destination
@@ -297,7 +297,7 @@ NETWORK_GRAPH_OUTGOING_CONNECTORS_PLURAL=\u041F\u043E\u0441\u0442\u043E\u0458\u0
297
297
  NETWORK_GRAPH_NAVIGATION_TAB_TO_OUTGOING=\u0417\u0430 \u043D\u0430\u0432\u0438\u0433\u0438\u0440\u0430\u045A\u0435 \u043A\u043E\u043D \u0438\u0437\u043B\u0435\u0437\u043D\u0438\u043E\u0442 \u043A\u043E\u043D\u0435\u043A\u0442\u043E\u0440, \u043F\u0440\u0438\u0442\u0438\u0441\u043D\u0435\u0442\u0435 Tab
298
298
  NETWORK_GRAPH_NAVIGATION_SHIFT_TAB_TO_INCOMING=\u0417\u0430 \u043D\u0430\u0432\u0438\u0433\u0438\u0440\u0430\u045A\u0435 \u043A\u043E\u043D \u0432\u043B\u0435\u0437\u043D\u0438\u043E\u0442 \u043A\u043E\u043D\u0435\u043A\u0442\u043E\u0440, \u043F\u0440\u0438\u0442\u0438\u0441\u043D\u0435\u0442\u0435 Shift + Tab
299
299
  NETWORK_GRAPH_LINE_NAVIGATION_TAB_TO_TARGET=\u041F\u0440\u0438\u0442\u0438\u0441\u043D\u0435\u0442\u0435 \u043D\u0430 \u043A\u043E\u043F\u0447\u0435\u0442\u043E Tab \u0437\u0430 \u0434\u0430 \u043F\u043E\u0458\u0434\u0435\u0442\u0435 \u043D\u0430 {0}
300
- NETWORK_GRAPH_LINE_NAVIGATION_SHIFT_TAB_TO_SOURCE=\u041F\u0440\u0438\u0442\u0438\u0441\u043D\u0435\u0442\u0435 \u043D\u0430 \u043A\u043E\u043F\u0447\u0438\u045A\u0430\u0442\u0430 Shift+Tab \u0437\u0430 \u0434\u0430 \u0441\u0435 \u0432\u0440\u0430\u0442\u0438\u0442\u0435 \u043D\u0430 {0}
300
+ NETWORK_GRAPH_LINE_NAVIGATION_SHIFT_TAB_TO_SOURCE=\u041F\u0440\u0438\u0442\u0438\u0441\u043D\u0435\u0442\u0435 \u043D\u0430 \u043A\u043E\u043F\u0447\u0438\u045A\u0430\u0442\u0430 Shift+Tab \u0437\u0430 \u0434\u0430 \u0441\u0435 \u0432\u0440\u0430\u0442\u0438\u0442\u0435 \u043D\u0430\u0437\u0430\u0434 \u043D\u0430 {0}
301
301
  NETWORK_GRAPH_LINE_NAVIGATION_ARROW_KEYS=\u0417\u0430 \u0434\u0430 \u043D\u0430\u0432\u0438\u0433\u0438\u0440\u0430\u0442\u0435 \u043A\u043E\u043D \u0434\u0440\u0443\u0433\u0438 \u043A\u043E\u043D\u0435\u043A\u0442\u043E\u0440\u0438 \u043E\u0434 {0}, \u043A\u043E\u0440\u0438\u0441\u0442\u0435\u0442\u0435 \u0433\u0438 \u043A\u043E\u043F\u0447\u0438\u045A\u0430\u0442\u0430 \u0441\u043E \u0441\u0442\u0440\u0435\u043B\u043A\u0438
302
302
  NETWORK_GRAPH_LINE_ACCESSIBILITY_STATUS=\u0421\u0442\u0430\u0442\u0443\u0441\u043E\u0442 \u0435
303
303
  NETWORK_GRAPH_LINE_ACCESSIBILITY_CONNECTION_FROM_TO=\u0412\u0440\u0441\u043A\u0430\u0442\u0430 \u043E\u0434\u0438 \u043E\u0434 {0} \u0434\u043E {1}
@@ -291,10 +291,10 @@ sap.ui.define([
291
291
  */
292
292
  connectionTypeMapping: {
293
293
  type: "object", group: "Behavior", defaultValue: {
294
- "LeftToLeft": "Left to Left",
295
- "LeftToRight": "Left to Right",
296
- "RightToLeft": "Right to Left",
297
- "RightToRight": "Right to Right"
294
+ "LeftToLeft": "Start to Start",
295
+ "LeftToRight": "Start to Finish",
296
+ "RightToLeft": "Finish to Start",
297
+ "RightToRight": "Finish to Finish"
298
298
  }
299
299
  }
300
300
  },
@@ -480,7 +480,14 @@ sap.ui.define([
480
480
  */
481
481
  item: { type: "sap.suite.ui.commons.networkgraph.ElementBase" }
482
482
  }
483
- }
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: {}
484
491
  }
485
492
  }
486
493
  });
@@ -579,13 +586,66 @@ sap.ui.define([
579
586
  }
580
587
  // Initialize PortManager with this graph instance
581
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
+ };
582
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();
583
637
  };
584
638
 
585
639
  Graph.prototype.onBeforeRendering = function () {
586
640
  // indicates RTL
587
641
  this._bIsRtl = Localization.getRTL();
588
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
+
589
649
  this.setBusy(false);
590
650
  this.setBusyIndicatorDelay(0);
591
651
 
@@ -633,7 +693,6 @@ sap.ui.define([
633
693
  this.$().addClass("sapSuiteUiCommonsNetworkGraphFullScreen");
634
694
  }
635
695
 
636
-
637
696
  if (aNodes.length === 0 || this._bIsInvalid || this.getNoData()) {
638
697
  if (this._bIsInvalid) {
639
698
  oRm.openStart("span");
@@ -695,29 +754,18 @@ sap.ui.define([
695
754
  oRm.flush(this._$innerscroller[0], true, this._$innerscroller.children().length);
696
755
  }
697
756
 
698
- // make sure everything is rendered
699
- aNodes.forEach(function (oNode) {
700
- if (this._isUseNodeHtml()) {
701
- // call after rendering before layouter starts - can be handy when user custom renders
702
- oNode._setupDivDimensions();
703
- } else {
704
- oNode.calculateSizes();
705
- oNode._setupWidthAndHeight();
706
- }
707
- }.bind(this));
708
-
709
- this._preprocessData();
710
- Theming.detachApplied(fnProcess);
757
+ if (!this._bRtlMeasurementPending) {
758
+ this._measureAndLayout();
759
+ }
711
760
  }.bind(this);
712
761
 
713
- // In case theme is applied fnProcess will be called immediately,
714
- // else it will be called once theme is applied.
715
- Theming.attachApplied(fnProcess);
762
+ fnProcess();
716
763
  }
717
764
  this.oInvisibleMessage = InvisibleMessage.getInstance();
718
765
  oRm.destroy();
719
766
 
720
767
  };
768
+
721
769
  Graph.prototype.exit = function () {
722
770
  // if (this.oHashChanger) {
723
771
  // this.oHashChanger.destroy();
@@ -1025,6 +1073,21 @@ sap.ui.define([
1025
1073
  this._oZoomLevelInvisibleText.setText(oResourceBundle.getText("NETWORK_GRAPH_ZOOM_LEVEL") + ": " + this._getZoomText());
1026
1074
  };
1027
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
+
1028
1091
  /**
1029
1092
  * Gets the associated control linked to this graph instance using the 'associatedControl' association.
1030
1093
  * This can be any UI5 control that is related to the graph.
@@ -1086,7 +1149,14 @@ sap.ui.define([
1086
1149
  oTooltip.attachEvent("afterClose", function () {
1087
1150
  var oFocus = this.getFocus();
1088
1151
 
1089
- 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
+
1090
1160
  this.setFocus(oFocus);
1091
1161
 
1092
1162
  if (oFocus.button == "menu") {
@@ -1192,6 +1262,13 @@ sap.ui.define([
1192
1262
  * @private
1193
1263
  */
1194
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
+
1195
1272
  // Identity redundant
1196
1273
  if (!oFocus && !this._oFocus ||
1197
1274
  oFocus && this._oFocus && oFocus.item === this._oFocus.item && oFocus.button === this._oFocus.button && oFocus.groupInFocused === this._oFocus.groupInFocused) {
@@ -1406,12 +1483,25 @@ sap.ui.define([
1406
1483
 
1407
1484
  // While Expand/Collapse, focus will still remain to the button
1408
1485
  if (this._oFocus && this._oFocus.button === Group.BUTTONS.COLLAPSE) {
1409
- this._oFocus.item._setCollapseButtonFocus(true);
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
+ }
1410
1493
  }
1411
1494
  this._bIsLayedOut = true;
1412
1495
  this._setupEvents();
1413
1496
  this._setupKeyboardNavigation();
1414
- this.setFocus(this.getFocus());
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
+ }
1415
1505
 
1416
1506
  // when there is background image, busy is set false after image is loaded (own event)
1417
1507
  // in case image was already loaded continue as usual
@@ -2876,7 +2966,13 @@ sap.ui.define([
2876
2966
  fHeight = oItem._iHeight;
2877
2967
  }
2878
2968
 
2879
- this.$scroller.get(0).scrollLeft = ((fX + (fWidth ? fWidth : 0) / 2) * this._fZoomLevel) - (this.$scroller.width() / 2);
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
+ }
2880
2976
  this.$scroller.get(0).scrollTop = ((fY + (fHeight ? fHeight : 0) / 2) * this._fZoomLevel) - (this.$scroller.height() / 2);
2881
2977
  };
2882
2978
 
@@ -2897,6 +2993,14 @@ sap.ui.define([
2897
2993
  iRight = iLeft + this.$scroller.width() / this._fZoomLevel,
2898
2994
  iBottom = iTop + this.$scroller.height() / this._fZoomLevel;
2899
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
+
2900
3004
  if (!oItem._isOnScreen(iLeft, iRight, iTop, iBottom)) {
2901
3005
  if (oItem instanceof Node) {
2902
3006
  iCenterX = oItem.getX() + oItem._iWidth / 2;
@@ -2911,7 +3015,14 @@ sap.ui.define([
2911
3015
  }
2912
3016
 
2913
3017
  if (iCenterX < iLeft || iCenterX > iRight) {
2914
- oScroller.scrollLeft = iCenterX * this._fZoomLevel - this.$scroller.width() / 2;
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;
2915
3026
  }
2916
3027
  if (iCenterY < iTop || iCenterY > iBottom) {
2917
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, $scroller[0].scrollLeft / oGraph._fZoomLevel));
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, $scroller[0].scrollLeft / oGraph._fZoomLevel));
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
- oScroller.scrollLeft = (oScrollData.pageX - fRealStartX) * iRatio - ($scroller.width() / 2);
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