@sapui5/sap.suite.ui.commons 1.150.0 → 1.152.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 (69) 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 +1 -1
  5. package/src/sap/suite/ui/commons/CalculationBuilderExpression.js +1 -1
  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 +1 -1
  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/TimelineItem.js +2 -3
  15. package/src/sap/suite/ui/commons/TimelineNavigator.js +12 -9
  16. package/src/sap/suite/ui/commons/collaboration/UniversalCollaborationBar.js +475 -360
  17. package/src/sap/suite/ui/commons/flexibility/changeHandler/PropertyChangeMapper.js +1 -1
  18. package/src/sap/suite/ui/commons/imageeditor/CropCustomShapeHistoryItem.js +1 -1
  19. package/src/sap/suite/ui/commons/imageeditor/CropEllipseHistoryItem.js +1 -1
  20. package/src/sap/suite/ui/commons/imageeditor/CropRectangleHistoryItem.js +1 -1
  21. package/src/sap/suite/ui/commons/imageeditor/CustomSizeItem.js +1 -1
  22. package/src/sap/suite/ui/commons/imageeditor/FilterHistoryItem.js +1 -1
  23. package/src/sap/suite/ui/commons/imageeditor/FlipHistoryItem.js +1 -1
  24. package/src/sap/suite/ui/commons/imageeditor/HistoryItem.js +1 -1
  25. package/src/sap/suite/ui/commons/imageeditor/ImageEditor.js +1 -1
  26. package/src/sap/suite/ui/commons/imageeditor/ImageEditorContainer.js +1 -1
  27. package/src/sap/suite/ui/commons/imageeditor/ImageEditorResponsiveContainer.js +1 -1
  28. package/src/sap/suite/ui/commons/imageeditor/ResizeHistoryItem.js +1 -1
  29. package/src/sap/suite/ui/commons/imageeditor/RotateHistoryItem.js +1 -1
  30. package/src/sap/suite/ui/commons/library.js +1 -1
  31. package/src/sap/suite/ui/commons/messagebundle_de.properties +2 -2
  32. package/src/sap/suite/ui/commons/messagebundle_en_US_saptrc.properties +616 -537
  33. package/src/sap/suite/ui/commons/messagebundle_mk.properties +1 -1
  34. package/src/sap/suite/ui/commons/messagebundle_pl.properties +1 -1
  35. package/src/sap/suite/ui/commons/networkgraph/ElementBase.js +7 -2
  36. package/src/sap/suite/ui/commons/networkgraph/Graph.js +19 -7
  37. package/src/sap/suite/ui/commons/networkgraph/GraphRenderer.js +1 -1
  38. package/src/sap/suite/ui/commons/networkgraph/Group.js +1 -1
  39. package/src/sap/suite/ui/commons/networkgraph/KeyboardNavigator.js +2 -0
  40. package/src/sap/suite/ui/commons/networkgraph/Line.js +24 -0
  41. package/src/sap/suite/ui/commons/networkgraph/Node.js +1 -1
  42. package/src/sap/suite/ui/commons/networkgraph/Tooltip.js +3 -1
  43. package/src/sap/suite/ui/commons/networkgraph/util/ConnectionPathUtils.js +323 -129
  44. package/src/sap/suite/ui/commons/networkgraph/util/DependencyLayoutHelper.js +21 -6
  45. package/src/sap/suite/ui/commons/statusindicator/Circle.js +1 -1
  46. package/src/sap/suite/ui/commons/statusindicator/CustomShape.js +1 -1
  47. package/src/sap/suite/ui/commons/statusindicator/DiscreteThreshold.js +1 -1
  48. package/src/sap/suite/ui/commons/statusindicator/FillingOption.js +1 -1
  49. package/src/sap/suite/ui/commons/statusindicator/LibraryShape.js +1 -1
  50. package/src/sap/suite/ui/commons/statusindicator/Path.js +1 -1
  51. package/src/sap/suite/ui/commons/statusindicator/PropertyThreshold.js +1 -1
  52. package/src/sap/suite/ui/commons/statusindicator/Rectangle.js +1 -1
  53. package/src/sap/suite/ui/commons/statusindicator/Shape.js +1 -1
  54. package/src/sap/suite/ui/commons/statusindicator/ShapeGroup.js +1 -1
  55. package/src/sap/suite/ui/commons/statusindicator/SimpleShape.js +1 -1
  56. package/src/sap/suite/ui/commons/statusindicator/StatusIndicator.js +1 -1
  57. package/src/sap/suite/ui/commons/taccount/TAccount.js +1 -1
  58. package/src/sap/suite/ui/commons/taccount/TAccountGroup.js +1 -1
  59. package/src/sap/suite/ui/commons/taccount/TAccountItem.js +1 -1
  60. package/src/sap/suite/ui/commons/taccount/TAccountItemProperty.js +1 -1
  61. package/src/sap/suite/ui/commons/taccount/TAccountPanel.js +1 -1
  62. package/src/sap/suite/ui/commons/themes/base/MicroProcessFlow.less +2 -1
  63. package/src/sap/suite/ui/commons/themes/base/NetworkGraph.less +23 -6
  64. package/src/sap/suite/ui/commons/themes/base/Timeline.less +2 -2
  65. package/src/sap/suite/ui/commons/themes/sap_belize_base/NetworkGraph.less +23 -6
  66. package/src/sap/suite/ui/commons/themes/sap_belize_base/Timeline.less +2 -2
  67. package/src/sap/suite/ui/commons/themes/sap_belize_hcb/NetworkGraph.less +23 -2
  68. package/src/sap/suite/ui/commons/themes/sap_belize_hcw/NetworkGraph.less +23 -2
  69. package/src/sap/suite/ui/commons/themes/sap_hcb/base_NetworkGraph.less +23 -6
@@ -462,7 +462,7 @@ IMGEDITOR_FILTER_SEPIA=Sepia
462
462
  IMGEDITOR_FILTER_GRAYSCALE=\u0421\u043A\u0430\u043B\u0430 \u0441\u043E \u0441\u0438\u0432\u0438 \u0442\u043E\u043D\u043E\u0432\u0438
463
463
  IMGEDITOR_FILTER_SATURATION=\u0417\u0430\u0441\u0438\u0442\u0435\u043D\u043E\u0441\u0442
464
464
  IMGEDITOR_FILTER_HUE=\u041D\u0438\u0458\u0430\u043D\u0441\u0430
465
- IMGEDITOR_FILTER_INVERT=\u041F\u0440\u0435\u0432\u0440\u0442\u0435\u043D\u043E
465
+ IMGEDITOR_FILTER_INVERT=\u0418\u043D\u0432\u0435\u0440\u0437\u0438\u0458\u0430
466
466
  IMGEDITOR_FILTER_BRIGHTNESS=\u0421\u0432\u0435\u0442\u043B\u0438\u043D\u0430
467
467
  IMGEDITOR_FILTER_CONTRAST=\u041A\u043E\u043D\u0442\u0440\u0430\u0441\u0442
468
468
  IMGEDITOR_FILTER_BLUR=\u0417\u0430\u043C\u0430\u0442\u0435\u043D\u043E
@@ -301,7 +301,7 @@ NETWORK_GRAPH_LINE_NAVIGATION_TAB_TO_TARGET=Aby przej\u015B\u0107 do {0}, naci\u
301
301
  NETWORK_GRAPH_LINE_NAVIGATION_SHIFT_TAB_TO_SOURCE=Aby przej\u015B\u0107 z powrotem do {0}, naci\u015Bnij klawisze Shift + Tab
302
302
  NETWORK_GRAPH_LINE_NAVIGATION_ARROW_KEYS=Aby przej\u015B\u0107 do innych konektor\u00F3w z {0}, u\u017Cyj klawiszy strza\u0142ek
303
303
  NETWORK_GRAPH_NAVIGATION_ALT_CONNECTORS=Aby dowiedzie\u0107 si\u0119 o mo\u017Cliwych konektorach, naci\u015Bnij ALT +
304
- NETWORK_GRAPH_NAVIGATION_ALT_CONNECTOR_ANNOUNCE=Przejd\u017A do konektora {0} na {1}, konektora {2} \u0142\u0105cz\u0105cego {3} z {4}, naci\u015Bnij ALT + {5}
304
+ NETWORK_GRAPH_NAVIGATION_ALT_CONNECTOR_ANNOUNCE=Przejd\u017A do konektora\: {0} na\: {1}, konektora {2} \u0142\u0105cz\u0105cego {3} z {4}, naci\u015Bnij ALT + {5}
305
305
  NETWORK_GRAPH_LINE_ACCESSIBILITY_STATUS=Status to
306
306
  NETWORK_GRAPH_LINE_ACCESSIBILITY_CONNECTION_FROM_TO=Po\u0142\u0105czenie z {0} do {1}
307
307
 
@@ -500,7 +500,7 @@ sap.ui.define([
500
500
 
501
501
  ElementBase.prototype._appendActionButton = function (mArguments, $wrapper) {
502
502
  var sId = mArguments.id ? "id=\"" + mArguments.id + "\"" : "";
503
- var sButtonHtml = "<div " + sId + " title=\"" + mArguments.title + "\"class=\"sapSuiteUiCommonsNetworkGraphDivActionButtonBackground\">";
503
+ var sButtonHtml = "<div " + sId + " title=\"" + mArguments.title + "\" role=\"button\" aria-label=\"" + mArguments.title + "\" class=\"sapSuiteUiCommonsNetworkGraphDivActionButtonBackground\">";
504
504
  sButtonHtml += "<div class=\"sapSuiteUiCommonsNetworkGraphDivActionButton ";
505
505
 
506
506
  if (!mArguments.enable) {
@@ -509,7 +509,7 @@ sap.ui.define([
509
509
  }
510
510
  sButtonHtml += "\">";
511
511
 
512
- sButtonHtml += this._renderHtmlIcon(mArguments.icon, (mArguments.class || ""));
512
+ sButtonHtml += this._renderHtmlIcon(mArguments.icon, (mArguments.class || ""), null, null, mArguments.title);
513
513
 
514
514
  sButtonHtml += "</div>";
515
515
  sButtonHtml += "<div class=\"sapSuiteUiCommonsNetworkActionButtonFocusCircle\"></div>";
@@ -536,6 +536,11 @@ sap.ui.define([
536
536
  (Math.min(iY1, iY2) < iBottom);
537
537
  };
538
538
 
539
+ ElementBase._isRectFullyOnScreen = function (iX1, iX2, iY1, iY2, iLeft, iRight, iTop, iBottom) {
540
+ return (Math.min(iX1, iX2) >= iLeft) && (Math.max(iX1, iX2) <= iRight) &&
541
+ (Math.min(iY1, iY2) >= iTop) && (Math.max(iY1, iY2) <= iBottom);
542
+ };
543
+
539
544
  ElementBase.prototype._isOnScreen = function (iLeft, iRight, iTop, iBottom) {
540
545
  return false;
541
546
  };
@@ -306,6 +306,15 @@ sap.ui.define([
306
306
  */
307
307
  labels: {
308
308
  type: "object", group: "Appearance", defaultValue: {}
309
+ },
310
+ /**
311
+ * Enables enhanced line routing for the network graph.
312
+ * When set to <code>true</code>, overlapping connections are visually separated.
313
+ * @public
314
+ * @since 1.151
315
+ */
316
+ enableEnhancedLineRouting: {
317
+ type: "boolean", group: "Behavior", defaultValue: true
309
318
  }
310
319
  },
311
320
  aggregations: {
@@ -1297,6 +1306,7 @@ sap.ui.define([
1297
1306
  this._updateAccessibility(oFocus);
1298
1307
  }
1299
1308
  this._updateAccessibility(oFocus);
1309
+ this._ensureOnScreen(oFocus ? oFocus.item : null);
1300
1310
  return;
1301
1311
  }
1302
1312
 
@@ -1353,6 +1363,7 @@ sap.ui.define([
1353
1363
  return sTitleLabel;
1354
1364
  };
1355
1365
  if (this.getDomRef("wrapper")) {
1366
+ this.getDomRef("wrapper").setAttribute("aria-live", "assertive");
1356
1367
  this._setAriaLabelForWrapper();
1357
1368
  }
1358
1369
  if (oFocus) {
@@ -1371,6 +1382,8 @@ sap.ui.define([
1371
1382
  } else {
1372
1383
  fnSetDefaultAccessibilityTitle();
1373
1384
  }
1385
+ } else if (oFocus.item instanceof Line) {
1386
+ this._setAccessibilityTitle(oFocus.item._getActionButtonTitle(oFocus.button));
1374
1387
  } else {
1375
1388
  fnSetDefaultAccessibilityTitle();
1376
1389
  }
@@ -3004,7 +3017,7 @@ sap.ui.define([
3004
3017
  * @private
3005
3018
  */
3006
3019
  Graph.prototype._ensureOnScreen = function (oItem) {
3007
- if (!oItem || !this.$scroller) {
3020
+ if (!oItem || !this.$scroller || typeof oItem._isOnScreen !== "function") {
3008
3021
  return;
3009
3022
  }
3010
3023
 
@@ -3036,7 +3049,9 @@ sap.ui.define([
3036
3049
  iCenterY = oItem.getY();
3037
3050
  }
3038
3051
 
3039
- if (iCenterX < iLeft || iCenterX > iRight) {
3052
+ const iItemRight = oItem instanceof Node ? oItem.getX() + oItem._iWidth : iCenterX;
3053
+ const iItemBottom = oItem instanceof Node ? oItem.getY() + oItem._iHeight : iCenterY;
3054
+ if (iCenterX < iLeft || iCenterX > iRight || iItemRight > iRight) {
3040
3055
  let iTargetScrollLeft = iCenterX * this._fZoomLevel - this.$scroller.width() / 2;
3041
3056
 
3042
3057
  if (this._bIsRtl) {
@@ -3046,7 +3061,7 @@ sap.ui.define([
3046
3061
 
3047
3062
  oScroller.scrollLeft = iTargetScrollLeft;
3048
3063
  }
3049
- if (iCenterY < iTop || iCenterY > iBottom) {
3064
+ if (iCenterY < iTop || iCenterY > iBottom || iItemBottom > iBottom) {
3050
3065
  oScroller.scrollTop = iCenterY * this._fZoomLevel - this.$scroller.height() / 2;
3051
3066
  }
3052
3067
  }
@@ -3306,10 +3321,7 @@ sap.ui.define([
3306
3321
  } else {
3307
3322
  sLabel = oItem._getAccessibilityLabel(this);
3308
3323
  }
3309
- if (oWrapper && oWrapper.length) {
3310
- // Switch to assertive only when deliberately updating text, so re-render
3311
- // of the div (which resets to default text) does not trigger an announcement.
3312
- oWrapper[0].setAttribute("aria-live", "assertive");
3324
+ if (oWrapper) {
3313
3325
  oWrapper.html(encodeXML(sLabel));
3314
3326
  }
3315
3327
  };
@@ -43,6 +43,7 @@ sap.ui.define([
43
43
  oRM.openStart("div", oNetworkGraph.getId() + "-wrapper" );
44
44
  oRM.class("sapSuiteUiCommonsNetworkGraphContentWrapper");
45
45
  oRM.attr("tabindex", "0");
46
+ oRM.attr("aria-live", "assertive");
46
47
  oRM.attr("aria-label", oResourceBundle.getText("NETWORK_GRAPH_ACCESSIBILITY_LABEL"));
47
48
  oRM.attr("role", "application");
48
49
  oRM.openEnd();
@@ -53,7 +54,6 @@ sap.ui.define([
53
54
  */
54
55
  oRM.openStart("div", oNetworkGraph.getId() + "-accessibility" );
55
56
  oRM.class("sapSuiteUiCommonsNetworkGraphContentWrapperAccessibility");
56
- oRM.attr("aria-live", "off");
57
57
  oRM.openEnd();
58
58
  oRM.text(oResourceBundle.getText("NETWORK_GRAPH_ACCESSIBILITY_CONTENT"));
59
59
  oRM.close("div");
@@ -773,7 +773,7 @@ sap.ui.define([
773
773
  Group.prototype._isOnScreen = function (iLeft, iRight, iTop, iBottom) {
774
774
  var iX = this.getX(),
775
775
  iY = this.getY();
776
- return ElementBase._isRectOnScreen(iX, iX + this._iWidth, iY, iY + this._iHeight, iLeft, iRight, iTop, iBottom);
776
+ return ElementBase._isRectFullyOnScreen(iX, iX + this._iWidth, iY, iY + this._iHeight, iLeft, iRight, iTop, iBottom);
777
777
  };
778
778
 
779
779
  /* =========================================================== */
@@ -480,8 +480,10 @@ sap.ui.define([
480
480
  KeyboardNavigator.prototype._handleTab = function (oEvent, sDirection) {
481
481
  const oFocus = this.getFocus(),
482
482
  bBackward = sDirection === mDirections.LEFT;
483
+ this._oWrapperDom.setAttribute("aria-live", "assertive");
483
484
  this._oGraph._setAriaLabelForWrapper(oResourceBundle.getText("NETWORK_GRAPH_ACCESSIBILITY_LABEL"));
484
485
  if (this._ignoreEvent(oEvent)) {
486
+ this._oWrapperDom.setAttribute("aria-live","off");
485
487
  this._oWrapperDom.classList.remove("sapSuiteUiCommonsNetworkGraphContentFocusHidden");
486
488
  if (oEvent.target.getAttribute("title") === oResourceBundle.getText("CALCULATION_BUILDER_ENTER_FULL_SCREEN_BUTTON")){
487
489
  this.isFromFullscreen = true;
@@ -367,6 +367,19 @@ sap.ui.define([
367
367
  oRm.text(sTooltipText);
368
368
  oRm.close("title");
369
369
  }
370
+ } else {
371
+ var oFrom = this.getFromNode(),
372
+ oTo = this.getToNode();
373
+ if (oFrom && oTo) {
374
+ var sFromText = oFrom.getTitle() || oFrom.getAltText();
375
+ var sToText = oTo.getTitle() || oTo.getAltText();
376
+ var sLineTitle = this.getTitle() ? (this.getTitle() + " ") : "";
377
+ var sHoverTooltip = sLineTitle + sFromText + " - " + sToText;
378
+ oRm.openStart("title");
379
+ oRm.openEnd();
380
+ oRm.text(sHoverTooltip);
381
+ oRm.close("title");
382
+ }
370
383
  }
371
384
 
372
385
  // invisible wrapper for better event handling
@@ -923,6 +936,17 @@ sap.ui.define([
923
936
  return aSentenceParts.join('. ');
924
937
  };
925
938
 
939
+ /**
940
+ * Returns the accessible title for a Line action button.
941
+ * @param {object} oItem - DOM element of the focused action button
942
+ * @returns {string}
943
+ * @private
944
+ */
945
+ Line.prototype._getActionButtonTitle = function (oItem) {
946
+ var sTitle = jQuery(oItem).attr("title");
947
+ return (sTitle ? sTitle + " " : "") + oResourceBundle.getText("NETWORK_GRAPH_ACCESSIBILITY_ACTION_BUTTON");
948
+ };
949
+
926
950
  /* =========================================================== */
927
951
  /* Public methods */
928
952
  /* =========================================================== */
@@ -4066,7 +4066,7 @@ sap.ui.define([
4066
4066
  Node.prototype._isOnScreen = function(iLeft, iRight, iTop, iBottom) {
4067
4067
  var iX = this.getX(),
4068
4068
  iY = this.getY();
4069
- return ElementBase._isRectOnScreen(iX, iX + this._iWidth, iY, iY + this._iHeight, iLeft, iRight, iTop, iBottom);
4069
+ return ElementBase._isRectFullyOnScreen(iX, iX + this._iWidth, iY, iY + this._iHeight, iLeft, iRight, iTop, iBottom);
4070
4070
  };
4071
4071
 
4072
4072
  Node.prototype.getFocusDomRef = function() {
@@ -102,7 +102,9 @@ sap.ui.define([
102
102
  }.bind(this),
103
103
  beforeOpen: function () {
104
104
  this._fnCreate();
105
- this._oPopover.setInitialFocus(Element.getElementById(this.getId() + "-detailsSection"));
105
+ if (this.oCloseButton) {
106
+ this._oPopover.setInitialFocus(this.oCloseButton.getId());
107
+ }
106
108
  if (this._oOpener && this._oElement && this._oElement._setActionButtonFocus) {
107
109
  this._oElement._setActionButtonFocus(this._oOpener, false);
108
110
  }