@sapui5/sap.suite.ui.commons 1.143.0 → 1.145.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 (126) 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 +26 -14
  5. package/src/sap/suite/ui/commons/CalculationBuilderExpression.js +2 -2
  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/CalculationBuilderInput.js +5 -5
  9. package/src/sap/suite/ui/commons/CalculationBuilderItem.js +1 -1
  10. package/src/sap/suite/ui/commons/CalculationBuilderValidationResult.js +1 -1
  11. package/src/sap/suite/ui/commons/CalculationBuilderVariable.js +1 -1
  12. package/src/sap/suite/ui/commons/CloudFilePicker.js +1 -3
  13. package/src/sap/suite/ui/commons/MicroProcessFlow.js +77 -73
  14. package/src/sap/suite/ui/commons/MicroProcessFlowItem.js +3 -3
  15. package/src/sap/suite/ui/commons/Timeline.js +9 -0
  16. package/src/sap/suite/ui/commons/TimelineNavigator.js +37 -5
  17. package/src/sap/suite/ui/commons/TimelineRenderer.js +3 -3
  18. package/src/sap/suite/ui/commons/collaboration/BaseHelperService.js +0 -1
  19. package/src/sap/suite/ui/commons/collaboration/CollaborationHelper.js +0 -3
  20. package/src/sap/suite/ui/commons/collaboration/CollaborationManagerService.js +0 -1
  21. package/src/sap/suite/ui/commons/collaboration/ContactHelper.js +7 -0
  22. package/src/sap/suite/ui/commons/collaboration/ContactPopover.fragment.xml +4 -1
  23. package/src/sap/suite/ui/commons/collaboration/MinimalContactPopover.fragment.xml +2 -1
  24. package/src/sap/suite/ui/commons/collaboration/TeamsHelperService.js +0 -6
  25. package/src/sap/suite/ui/commons/collaboration/channels/MessageChannel.js +0 -2
  26. package/src/sap/suite/ui/commons/collaboration/flpplugins/msplugin/Component-preload.js +1 -1
  27. package/src/sap/suite/ui/commons/collaboration/flpplugins/msplugin/Component.js +1 -2
  28. package/src/sap/suite/ui/commons/flexibility/changeHandler/PropertyChangeMapper.js +1 -1
  29. package/src/sap/suite/ui/commons/imageeditor/CropCustomShapeHistoryItem.js +1 -1
  30. package/src/sap/suite/ui/commons/imageeditor/CropEllipseHistoryItem.js +1 -1
  31. package/src/sap/suite/ui/commons/imageeditor/CropRectangleHistoryItem.js +1 -1
  32. package/src/sap/suite/ui/commons/imageeditor/CustomSizeItem.js +1 -1
  33. package/src/sap/suite/ui/commons/imageeditor/FilterHistoryItem.js +1 -1
  34. package/src/sap/suite/ui/commons/imageeditor/FlipHistoryItem.js +1 -1
  35. package/src/sap/suite/ui/commons/imageeditor/HistoryItem.js +1 -1
  36. package/src/sap/suite/ui/commons/imageeditor/ImageEditor.js +1 -1
  37. package/src/sap/suite/ui/commons/imageeditor/ImageEditorContainer.js +1 -1
  38. package/src/sap/suite/ui/commons/imageeditor/ImageEditorResponsiveContainer.js +1 -1
  39. package/src/sap/suite/ui/commons/imageeditor/ResizeHistoryItem.js +1 -1
  40. package/src/sap/suite/ui/commons/imageeditor/RotateHistoryItem.js +1 -1
  41. package/src/sap/suite/ui/commons/library.js +100 -3
  42. package/src/sap/suite/ui/commons/messagebundle.properties +76 -10
  43. package/src/sap/suite/ui/commons/messagebundle_ar.properties +51 -5
  44. package/src/sap/suite/ui/commons/messagebundle_bg.properties +62 -16
  45. package/src/sap/suite/ui/commons/messagebundle_ca.properties +52 -6
  46. package/src/sap/suite/ui/commons/messagebundle_cnr.properties +52 -6
  47. package/src/sap/suite/ui/commons/messagebundle_cs.properties +51 -5
  48. package/src/sap/suite/ui/commons/messagebundle_cy.properties +51 -5
  49. package/src/sap/suite/ui/commons/messagebundle_da.properties +51 -5
  50. package/src/sap/suite/ui/commons/messagebundle_de.properties +52 -6
  51. package/src/sap/suite/ui/commons/messagebundle_el.properties +52 -6
  52. package/src/sap/suite/ui/commons/messagebundle_en.properties +50 -7
  53. package/src/sap/suite/ui/commons/messagebundle_en_GB.properties +52 -6
  54. package/src/sap/suite/ui/commons/messagebundle_en_US_saprigi.properties +54 -6
  55. package/src/sap/suite/ui/commons/messagebundle_es.properties +53 -7
  56. package/src/sap/suite/ui/commons/messagebundle_es_MX.properties +54 -8
  57. package/src/sap/suite/ui/commons/messagebundle_et.properties +51 -5
  58. package/src/sap/suite/ui/commons/messagebundle_fi.properties +51 -5
  59. package/src/sap/suite/ui/commons/messagebundle_fr.properties +52 -6
  60. package/src/sap/suite/ui/commons/messagebundle_fr_CA.properties +52 -6
  61. package/src/sap/suite/ui/commons/messagebundle_hi.properties +52 -6
  62. package/src/sap/suite/ui/commons/messagebundle_hr.properties +52 -6
  63. package/src/sap/suite/ui/commons/messagebundle_hu.properties +51 -5
  64. package/src/sap/suite/ui/commons/messagebundle_id.properties +60 -14
  65. package/src/sap/suite/ui/commons/messagebundle_it.properties +53 -7
  66. package/src/sap/suite/ui/commons/messagebundle_iw.properties +51 -5
  67. package/src/sap/suite/ui/commons/messagebundle_ja.properties +52 -6
  68. package/src/sap/suite/ui/commons/messagebundle_kk.properties +51 -5
  69. package/src/sap/suite/ui/commons/messagebundle_ko.properties +51 -5
  70. package/src/sap/suite/ui/commons/messagebundle_lt.properties +51 -5
  71. package/src/sap/suite/ui/commons/messagebundle_lv.properties +52 -6
  72. package/src/sap/suite/ui/commons/messagebundle_mk.properties +51 -5
  73. package/src/sap/suite/ui/commons/messagebundle_ms.properties +59 -13
  74. package/src/sap/suite/ui/commons/messagebundle_nl.properties +51 -5
  75. package/src/sap/suite/ui/commons/messagebundle_no.properties +52 -6
  76. package/src/sap/suite/ui/commons/messagebundle_pl.properties +51 -5
  77. package/src/sap/suite/ui/commons/messagebundle_pt.properties +52 -6
  78. package/src/sap/suite/ui/commons/messagebundle_pt_PT.properties +51 -5
  79. package/src/sap/suite/ui/commons/messagebundle_ro.properties +51 -5
  80. package/src/sap/suite/ui/commons/messagebundle_ru.properties +51 -5
  81. package/src/sap/suite/ui/commons/messagebundle_sh.properties +52 -6
  82. package/src/sap/suite/ui/commons/messagebundle_sk.properties +51 -5
  83. package/src/sap/suite/ui/commons/messagebundle_sl.properties +51 -5
  84. package/src/sap/suite/ui/commons/messagebundle_sr.properties +52 -6
  85. package/src/sap/suite/ui/commons/messagebundle_sv.properties +51 -5
  86. package/src/sap/suite/ui/commons/messagebundle_th.properties +52 -6
  87. package/src/sap/suite/ui/commons/messagebundle_tr.properties +51 -5
  88. package/src/sap/suite/ui/commons/messagebundle_uk.properties +53 -7
  89. package/src/sap/suite/ui/commons/messagebundle_vi.properties +55 -9
  90. package/src/sap/suite/ui/commons/messagebundle_zh_CN.properties +51 -5
  91. package/src/sap/suite/ui/commons/messagebundle_zh_TW.properties +53 -7
  92. package/src/sap/suite/ui/commons/networkgraph/ElementBase.js +19 -1
  93. package/src/sap/suite/ui/commons/networkgraph/Graph.js +371 -29
  94. package/src/sap/suite/ui/commons/networkgraph/GraphRenderer.js +23 -10
  95. package/src/sap/suite/ui/commons/networkgraph/Group.js +43 -22
  96. package/src/sap/suite/ui/commons/networkgraph/KeyboardNavigator.js +54 -6
  97. package/src/sap/suite/ui/commons/networkgraph/Line.js +736 -31
  98. package/src/sap/suite/ui/commons/networkgraph/Node.js +546 -96
  99. package/src/sap/suite/ui/commons/networkgraph/Tooltip.js +5 -0
  100. package/src/sap/suite/ui/commons/networkgraph/layout/NoopLayout.js +28 -5
  101. package/src/sap/suite/ui/commons/networkgraph/util/ConnectionPathUtils.js +1144 -0
  102. package/src/sap/suite/ui/commons/networkgraph/util/CreateConnectionPopover.js +374 -0
  103. package/src/sap/suite/ui/commons/networkgraph/util/DependencyLayoutHelper.js +870 -0
  104. package/src/sap/suite/ui/commons/networkgraph/util/DragDropManager.js +563 -41
  105. package/src/sap/suite/ui/commons/networkgraph/util/PortManager.js +573 -0
  106. package/src/sap/suite/ui/commons/statusindicator/Circle.js +1 -1
  107. package/src/sap/suite/ui/commons/statusindicator/CustomShape.js +1 -1
  108. package/src/sap/suite/ui/commons/statusindicator/DiscreteThreshold.js +1 -1
  109. package/src/sap/suite/ui/commons/statusindicator/FillingOption.js +1 -1
  110. package/src/sap/suite/ui/commons/statusindicator/LibraryShape.js +1 -1
  111. package/src/sap/suite/ui/commons/statusindicator/Path.js +1 -1
  112. package/src/sap/suite/ui/commons/statusindicator/PropertyThreshold.js +1 -1
  113. package/src/sap/suite/ui/commons/statusindicator/Rectangle.js +1 -1
  114. package/src/sap/suite/ui/commons/statusindicator/Shape.js +1 -1
  115. package/src/sap/suite/ui/commons/statusindicator/ShapeGroup.js +1 -1
  116. package/src/sap/suite/ui/commons/statusindicator/SimpleShape.js +1 -1
  117. package/src/sap/suite/ui/commons/statusindicator/StatusIndicator.js +1 -1
  118. package/src/sap/suite/ui/commons/taccount/TAccount.js +1 -1
  119. package/src/sap/suite/ui/commons/taccount/TAccountGroup.js +1 -1
  120. package/src/sap/suite/ui/commons/taccount/TAccountItem.js +1 -1
  121. package/src/sap/suite/ui/commons/taccount/TAccountItemProperty.js +1 -1
  122. package/src/sap/suite/ui/commons/taccount/TAccountPanel.js +1 -1
  123. package/src/sap/suite/ui/commons/themes/base/NetworkGraph.less +13 -13
  124. package/src/sap/suite/ui/commons/themes/base/NetworkGroup.less +34 -2
  125. package/src/sap/suite/ui/commons/themes/base/NetworkLine.less +58 -13
  126. package/src/sap/suite/ui/commons/themes/base/NetworkNode.less +206 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.commons",
3
- "version": "1.143.0",
3
+ "version": "1.145.0",
4
4
  "description": "SAPUI5 Library sap.suite.ui.commons",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "author": "SAP SE (https://www.sap.com)",
@@ -7,7 +7,7 @@
7
7
  SAP UI development toolkit for HTML5 (SAPUI5)
8
8
  (c) Copyright 2009-2015 SAP SE. All rights reserved
9
9
  </copyright>
10
- <version>1.143.0</version>
10
+ <version>1.145.0</version>
11
11
 
12
12
  <documentation>SAP UI library: sap.suite.ui.commons</documentation>
13
13
 
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  * @extends sap.ui.core.Element
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.143.0
22
+ * @version 1.145.0
23
23
  * @since 1.65.0
24
24
  *
25
25
  * @constructor
@@ -134,7 +134,7 @@ sap.ui.define([
134
134
  * @extends sap.ui.core.Control
135
135
  *
136
136
  * @author SAP SE
137
- * @version 1.143.0
137
+ * @version 1.145.0
138
138
  * @since 1.56.0
139
139
  *
140
140
  * @constructor
@@ -772,9 +772,12 @@ sap.ui.define([
772
772
 
773
773
  CalculationBuilder.prototype._getFunctionDefinition = function (sKey) {
774
774
  sKey = (sKey || "").toLowerCase();
775
- return FunctionsMap[sKey] || jQuery.grep(this.getFunctions(), function (oFunction) {
775
+ // Check custom functions first, then fall back to default FunctionsMap
776
+ // This ensures custom functions take precedence when they have the same key as defaults
777
+ var oCustomFunction = jQuery.grep(this.getFunctions(), function (oFunction) {
776
778
  return oFunction.getKey().toLowerCase() === sKey;
777
779
  })[0];
780
+ return oCustomFunction || FunctionsMap[sKey];
778
781
  };
779
782
 
780
783
  CalculationBuilder.prototype._getFunctionDescription = function (oFunction) {
@@ -1071,7 +1074,9 @@ sap.ui.define([
1071
1074
  var aFunctions = [];
1072
1075
 
1073
1076
  Object.keys(FunctionsMap).forEach(function (sKey) {
1074
- if (FunctionsMap[sKey].allowed && this._isTokenAllowed(sKey)) {
1077
+ // Only add built-in function if it's allowed (not disabled)
1078
+ // bCheckCustomOverride=false ensures disabled functions are excluded even if custom override exists
1079
+ if (FunctionsMap[sKey].allowed && this._isTokenAllowed(sKey, false)) {
1075
1080
  aFunctions.push(this._createFunctionObject(FunctionsMap[sKey]));
1076
1081
  }
1077
1082
  }.bind(this));
@@ -1089,19 +1094,26 @@ sap.ui.define([
1089
1094
  });
1090
1095
  };
1091
1096
 
1092
- CalculationBuilder.prototype._isTokenAllowed = function (sKey) {
1093
- sKey = (sKey || "").toLowerCase();
1094
- // Check if the token is a custom function by searching the aggregation
1095
- var bCustomFunction = this.getFunctions().some(function (oFunction) {
1096
- return oFunction.getKey().toLowerCase() === sKey;
1097
- });
1098
- // If this is a custom function and its key is present in _mDisabledTokens,
1099
- // allow it (custom functions are not blocked by disabledDefaultTokens)
1100
- if (bCustomFunction && this._mDisabledTokens[sKey]) {
1097
+ CalculationBuilder.prototype._isTokenAllowed = function (sKey, bCheckCustomOverride) {
1098
+ var sKeyLower = (sKey || "").toLowerCase();
1099
+
1100
+ // If token is not in disabled list, it's allowed
1101
+ if (!this._mDisabledTokens[sKeyLower]) {
1101
1102
  return true;
1102
1103
  }
1103
- // For all other cases, block if present in _mDisabledTokens
1104
- return !this._mDisabledTokens[sKey];
1104
+
1105
+ // If bCheckCustomOverride is explicitly false, respect the disabled setting
1106
+ if (bCheckCustomOverride === false) {
1107
+ return false;
1108
+ }
1109
+
1110
+ // If token is disabled but user has defined a custom function with the same name,
1111
+ // allow it (custom functions override disabled built-in tokens)
1112
+ if (this._findInChildren(sKeyLower, "Function")) {
1113
+ return true;
1114
+ }
1115
+
1116
+ return false;
1105
1117
  };
1106
1118
 
1107
1119
  CalculationBuilder.prototype.setDisabledDefaultTokens = function (sValue) {
@@ -148,7 +148,7 @@ sap.ui.define([
148
148
  * @extends sap.ui.core.Control
149
149
  *
150
150
  * @author SAP SE
151
- * @version 1.143.0
151
+ * @version 1.145.0
152
152
  * @since 1.56.0
153
153
  *
154
154
  * @constructor
@@ -1018,7 +1018,7 @@ sap.ui.define([
1018
1018
  showHeader: true,
1019
1019
  title: oResourceBundle.getText("CALCULATION_BUILDER_DIALOG_TITLE"),
1020
1020
  resizable: true,
1021
- placement: PlacementType.PreferredBottomOrFlip,
1021
+ placement: PlacementType.Auto,
1022
1022
  contentWidth: "400px",
1023
1023
  contentHeight: "450px",
1024
1024
  content: [oPopoverItems.navContainer],
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.core.Control
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.143.0
29
+ * @version 1.145.0
30
30
  * @since 1.56.0
31
31
  *
32
32
  * @constructor
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  * @extends sap.ui.core.Control
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.143.0
25
+ * @version 1.145.0
26
26
  * @since 1.60.0
27
27
  *
28
28
  * @constructor
@@ -941,7 +941,7 @@ sap.ui.define([
941
941
  for (var i = 0; i < aItems.length; i++) {
942
942
  var oItem = aItems[i],
943
943
  sKey = oItem.getKey(),
944
- bIsFunction = this._isFunction(sKey);
944
+ bIsFunction = this._isFunction(sKey, true);
945
945
 
946
946
  if (bCreateInputText) {
947
947
  oError = jQuery.grep(mParameters.errors, function (oItem) { // eslint-disable-line
@@ -1360,13 +1360,13 @@ sap.ui.define([
1360
1360
  return this.$("input").text();
1361
1361
  };
1362
1362
 
1363
- CalculationBuilderInput.prototype._isFunction = function (sKey) {
1364
- return !!this._getFunction(sKey);
1363
+ CalculationBuilderInput.prototype._isFunction = function (sKey, bIsInputStringGeneration) {
1364
+ return !!this._getFunction(sKey, bIsInputStringGeneration);
1365
1365
  };
1366
1366
 
1367
- CalculationBuilderInput.prototype._getFunction = function (sKey) {
1367
+ CalculationBuilderInput.prototype._getFunction = function (sKey, bIsInputStringGeneration) {
1368
1368
  var oParent = this.getParent();
1369
- return oParent && oParent._isTokenAllowed(sKey) && oParent._getFunctionDefinition(sKey);
1369
+ return oParent && oParent._isTokenAllowed(sKey, bIsInputStringGeneration) && oParent._getFunctionDefinition(sKey);
1370
1370
  };
1371
1371
 
1372
1372
  CalculationBuilderInput.prototype._storeCurrent = function (sValue) {
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @extends sap.ui.core.Control
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.143.0
43
+ * @version 1.145.0
44
44
  * @since 1.56.0
45
45
  *
46
46
  * @constructor
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @extends sap.ui.base.ManagedObject
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.143.0
24
+ * @version 1.145.0
25
25
  * @since 1.56.0
26
26
  *
27
27
  * @constructor
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.core.Control
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.143.0
26
+ * @version 1.145.0
27
27
  * @since 1.56.0
28
28
  *
29
29
  * @constructor
@@ -115,12 +115,10 @@ sap.ui.define([
115
115
  * @extends sap.m.Dialog
116
116
  *
117
117
  * @namespace sap.suite.ui.commons.CloudFilePicker
118
- * @experimental
119
- * @since 1.101
120
118
  * @class
121
119
  * @public
122
120
  * @internal
123
- * @version 1.143.0
121
+ * @version 1.145.0
124
122
  */
125
123
  var CloudFilePicker = Dialog.extend("sap.suite.ui.commons.CloudFilePicker", {
126
124
  metadata: {
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  CoreLib,
26
26
  Localization,
27
27
  Theming
28
- ) {
28
+ ) {
29
29
  "use strict";
30
30
 
31
31
  var RenderType = library.MicroProcessFlowRenderType;
@@ -50,7 +50,7 @@ sap.ui.define([
50
50
  * @extends sap.ui.core.Control
51
51
  *
52
52
  * @author SAP SE
53
- * @version 1.143.0
53
+ * @version 1.145.0
54
54
  *
55
55
  * @constructor
56
56
  * @public
@@ -59,14 +59,14 @@ sap.ui.define([
59
59
  var MicroProcessFlow = Control.extend("sap.suite.ui.commons.MicroProcessFlow", /** @lends sap.teaminstinct.prototypes.MicroProcessFlow.prototype */ {
60
60
  metadata: {
61
61
  library: "sap.suite.ui.commons",
62
- interfaces : [
62
+ interfaces: [
63
63
  "sap.ui.core.IFormContent"
64
64
  ],
65
65
  properties: {
66
66
  /**
67
67
  * ARIA label for this control to be used by screen reader software.
68
68
  */
69
- ariaLabel: {type: "string", defaultValue: null},
69
+ ariaLabel: { type: "string", defaultValue: null },
70
70
 
71
71
  /**
72
72
  * Determines how the micro process flow should be rendered inside its parent container.
@@ -98,88 +98,88 @@ sap.ui.define([
98
98
  renderer: {
99
99
  apiVersion: 2,
100
100
  render: function (oRM, oMicroProcessFlow) {
101
- var aContent = oMicroProcessFlow.getContent(),
102
- sWidth = oMicroProcessFlow.getWidth(),
103
- iLength = aContent.length,
104
- sLabel = oMicroProcessFlow.getAriaLabel();
105
-
106
- // wait for CSS loaded
107
- if (!oMicroProcessFlow._bThemeApplied) {
108
- return;
109
- }
101
+ var aContent = oMicroProcessFlow.getContent(),
102
+ sWidth = oMicroProcessFlow.getWidth(),
103
+ iLength = aContent.length,
104
+ sLabel = oMicroProcessFlow.getAriaLabel();
105
+
106
+ // wait for CSS loaded
107
+ if (!oMicroProcessFlow._bThemeApplied) {
108
+ return;
109
+ }
110
110
 
111
- oRM.openStart("div", oMicroProcessFlow);
111
+ oRM.openStart("div", oMicroProcessFlow);
112
112
 
113
- oRM.attr("role", "list");
114
- oRM.attr("aria-roledescription", oResourceBundle.getText("ACC_CTR_TYPE_MICRO_PROCESS_FLOW"));
115
- oRM.attr("aria-label",sLabel);
113
+ oRM.attr("role", "list");
114
+ oRM.attr("aria-roledescription", oResourceBundle.getText("ACC_CTR_TYPE_MICRO_PROCESS_FLOW"));
115
+ oRM.attr("aria-label", sLabel);
116
116
 
117
- if (sWidth) {
118
- oRM.style("width", sWidth);
119
- }
117
+ if (sWidth) {
118
+ oRM.style("width", sWidth);
119
+ }
120
120
 
121
- oRM.class("sapSuiteUiCommonsMicroProcessFlow");
122
- oRM.openEnd();
121
+ oRM.class("sapSuiteUiCommonsMicroProcessFlow");
122
+ oRM.openEnd();
123
+
124
+ if (oMicroProcessFlow._hasScrolling()) {
125
+ oRM.openStart("div");
126
+ oRM.attr("tabindex", "-1");
127
+ oRM.attr("id", oMicroProcessFlow.getId() + "-leftscroller");
128
+ oRM.class("sapSuiteUiCommonsMicroProcessFlowScroller").class("sapSuiteUiCommonsMicroProcessFlowLeftScroller");
129
+ oRM.openEnd();
130
+ oRM.renderControl(oMicroProcessFlow._getLeftScroller());
131
+ oRM.openStart("span");
132
+ oRM.attr("id", oMicroProcessFlow.getId() + "-leftlabel");
133
+ oRM.class("sapSuiteUiCommonsMicroProcessFlowLeftLabel");
134
+ oRM.openEnd();
135
+ oRM.close("span");
136
+ oRM.close("div");
137
+
138
+ }
123
139
 
124
- if (oMicroProcessFlow._hasScrolling()) {
125
140
  oRM.openStart("div");
126
- oRM.attr("tabindex", "-1");
127
- oRM.attr("id", oMicroProcessFlow.getId() + "-leftscroller");
128
- oRM.class("sapSuiteUiCommonsMicroProcessFlowScroller").class("sapSuiteUiCommonsMicroProcessFlowLeftScroller");
129
- oRM.openEnd();
130
- oRM.renderControl(oMicroProcessFlow._getLeftScroller());
131
- oRM.openStart("span");
132
- oRM.attr("id", oMicroProcessFlow.getId() + "-leftlabel");
133
- oRM.class("sapSuiteUiCommonsMicroProcessFlowLeftLabel");
141
+ oRM.attr("id", oMicroProcessFlow.getId() + "-content");
142
+ oRM.class("sapSuiteUiCommonsMicroProcessFlowContent");
134
143
  oRM.openEnd();
135
- oRM.close("span");
136
- oRM.close("div");
137
-
138
- }
144
+ oRM.openStart("div");
145
+ oRM.attr("id", oMicroProcessFlow.getId() + "-scrolling");
146
+ oRM.class("sapSuiteUiCommonsMicroProcessFlowScrolling").class("sapSuiteUiCommonsMicroProcessFlowScrollingTransition");
139
147
 
140
- oRM.openStart("div");
141
- oRM.attr("id", oMicroProcessFlow.getId() + "-content");
142
- oRM.class("sapSuiteUiCommonsMicroProcessFlowContent");
143
- oRM.openEnd();
144
- oRM.openStart("div");
145
- oRM.attr("id", oMicroProcessFlow.getId() + "-scrolling");
146
- oRM.class("sapSuiteUiCommonsMicroProcessFlowScrolling").class("sapSuiteUiCommonsMicroProcessFlowScrollingTransition");
148
+ if (oMicroProcessFlow.getRenderType() === RenderType.Wrap) {
149
+ oRM.style("flex-wrap", "wrap");
150
+ }
147
151
 
148
- if (oMicroProcessFlow.getRenderType() === RenderType.Wrap) {
149
- oRM.style("flex-wrap", "wrap");
150
- }
152
+ oRM.openEnd();
151
153
 
152
- oRM.openEnd();
154
+ aContent.forEach(function (oItem, i) {
155
+ oItem._setAccessibilityData(i + 1, iLength);
156
+ oRM.renderControl(oItem);
157
+ });
153
158
 
154
- aContent.forEach(function (oItem, i) {
155
- oItem._setAccessibilityData(i + 1, iLength);
156
- oRM.renderControl(oItem);
157
- });
159
+ oRM.close("div");
160
+ oRM.close("div");
158
161
 
159
- oRM.close("div");
160
- oRM.close("div");
162
+ if (oMicroProcessFlow._hasScrolling()) {
163
+ oRM.openStart("div");
164
+ oRM.attr("id", oMicroProcessFlow.getId() + "-rightscroller");
165
+ oRM.attr("tabindex", "-1");
166
+ oRM.class("sapSuiteUiCommonsMicroProcessFlowScroller").class("sapSuiteUiCommonsMicroProcessFlowRightScroller");
167
+ oRM.openEnd();
168
+ oRM.openStart("span");
169
+ oRM.attr("id", oMicroProcessFlow.getId() + "-rightlabel");
170
+ oRM.class("sapSuiteUiCommonsMicroProcessFlowRightLabel");
171
+ oRM.openEnd();
172
+ oRM.close("span");
173
+ oRM.renderControl(oMicroProcessFlow._getRightScroller());
174
+ oRM.close("div");
175
+ }
161
176
 
162
- if (oMicroProcessFlow._hasScrolling()) {
163
- oRM.openStart("div");
164
- oRM.attr("id", oMicroProcessFlow.getId() + "-rightscroller");
165
- oRM.attr("tabindex", "-1");
166
- oRM.class("sapSuiteUiCommonsMicroProcessFlowScroller").class("sapSuiteUiCommonsMicroProcessFlowRightScroller");
167
- oRM.openEnd();
168
- oRM.openStart("span");
169
- oRM.attr("id", oMicroProcessFlow.getId() + "-rightlabel");
170
- oRM.class("sapSuiteUiCommonsMicroProcessFlowRightLabel");
171
- oRM.openEnd();
172
- oRM.close("span");
173
- oRM.renderControl(oMicroProcessFlow._getRightScroller());
174
177
  oRM.close("div");
175
178
  }
176
-
177
- oRM.close("div");
178
- }
179
179
  }
180
180
  });
181
181
 
182
- MicroProcessFlow.prototype.exit = function() {
182
+ MicroProcessFlow.prototype.exit = function () {
183
183
  if (this._oLeftScroller) {
184
184
  this._oLeftScroller.destroy();
185
185
  }
@@ -467,7 +467,9 @@ sap.ui.define([
467
467
  MicroProcessFlow.prototype._getLeftScroller = function () {
468
468
  if (!this._oLeftScroller) {
469
469
  this._oLeftScroller = new Icon(this.getId() + "leftscroller", {
470
- src: "sap-icon://navigation-left-arrow"
470
+ src: "sap-icon://navigation-left-arrow",
471
+ tooltip: oResourceBundle.getText("MICRO_PROCESS_FLOW_SCROLL_LEFT"),
472
+ alt: oResourceBundle.getText("MICRO_PROCESS_FLOW_SCROLL_LEFT")
471
473
  });
472
474
  this._oLeftScroller.addStyleClass("sapSuiteUiCommonsMicroProcessFlowArrow");
473
475
  }
@@ -478,7 +480,9 @@ sap.ui.define([
478
480
  MicroProcessFlow.prototype._getRightScroller = function () {
479
481
  if (!this._oRightScroller) {
480
482
  this._oRightScroller = new Icon(this.getId() + "rightscroller", {
481
- src: "sap-icon://navigation-right-arrow"
483
+ src: "sap-icon://navigation-right-arrow",
484
+ tooltip: oResourceBundle.getText("MICRO_PROCESS_FLOW_SCROLL_RIGHT"),
485
+ alt: oResourceBundle.getText("MICRO_PROCESS_FLOW_SCROLL_RIGHT")
482
486
  });
483
487
  this._oRightScroller.addStyleClass("sapSuiteUiCommonsMicroProcessFlowArrow");
484
488
  }
@@ -560,9 +564,9 @@ sap.ui.define([
560
564
  this._processKeyPress();
561
565
  };
562
566
 
563
- MicroProcessFlow.prototype.getAccessibilityInfo = function() {
567
+ MicroProcessFlow.prototype.getAccessibilityInfo = function () {
564
568
  var description = "";
565
- this.getAggregation("content").forEach(function(val) {
569
+ this.getAggregation("content").forEach(function (val) {
566
570
  description = description.concat(val._getAriaText());
567
571
  });
568
572
  return {
@@ -574,7 +578,7 @@ sap.ui.define([
574
578
  /*
575
579
  * MicroProcessFlow must not be stretched in Form because this would stretch the size of the focus outline
576
580
  */
577
- MicroProcessFlow.prototype.getFormDoNotAdjustWidth = function() {
581
+ MicroProcessFlow.prototype.getFormDoNotAdjustWidth = function () {
578
582
  return true;
579
583
  };
580
584
  return MicroProcessFlow;
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @extends sap.ui.core.Control
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.143.0
41
+ * @version 1.145.0
42
42
  *
43
43
  * @constructor
44
44
  * @public
@@ -207,6 +207,8 @@ sap.ui.define([
207
207
  oRM.attr("aria-roledescription", oResourceBundle.getText("MICRO_PROCESS_FLOW_ITEM_ACC_BUTTON",[oMicroProcessFlowItem._iIndex,oMicroProcessFlowItem._iItemsCount]));
208
208
  } else {
209
209
  oRM.attr("role", "listitem");
210
+ oRM.attr("aria-posinset", oMicroProcessFlowItem._iIndex);
211
+ oRM.attr("aria-setsize", oMicroProcessFlowItem._iItemsCount);
210
212
  }
211
213
  oRM.openEnd();
212
214
 
@@ -245,8 +247,6 @@ sap.ui.define([
245
247
  $item.attr("tabindex", 0);
246
248
  }
247
249
  $item.attr("aria-label", sAriaLabel);
248
- $item.attr("aria-posinset", this._iIndex);
249
- $item.attr("aria-setsize", this._iItemsCount);
250
250
  this._setItemContentAccessibility();
251
251
  };
252
252
 
@@ -2587,6 +2587,15 @@ sap.ui.define([
2587
2587
  selectedItem: aFocusedItems[0],
2588
2588
  userAction: oEvent.mParameters.event && oEvent.mParameters.event.type === "mousedown"
2589
2589
  });
2590
+ if (!this._isVertical() && oFocusedDomRef){
2591
+ if (oFocusedDomRef.scrollIntoView) {
2592
+ oFocusedDomRef.scrollIntoView({
2593
+ behavior: 'smooth',
2594
+ block: 'nearest',
2595
+ inline: 'nearest'
2596
+ });
2597
+ }
2598
+ }
2590
2599
  }
2591
2600
  }, this);
2592
2601
  this.oItemNavigation.attachEvent("Enter", function (oEvent) {
@@ -7,13 +7,14 @@
7
7
 
8
8
  sap.ui.define([
9
9
  "sap/ui/thirdparty/jquery",
10
+ "./library",
10
11
  "sap/ui/core/delegate/ItemNavigation",
11
12
  "sap/base/assert",
12
13
  "sap/ui/dom/containsOrEquals",
13
14
  "sap/ui/events/KeyCodes"
14
- ], function (jQuery, ItemNavigation, assert, containsOrEquals, KeyCodes) {
15
+ ], function (jQuery, library, ItemNavigation, assert, containsOrEquals, KeyCodes) {
15
16
  "use strict";
16
-
17
+ var TimelineAxisOrientation = library.TimelineAxisOrientation;
17
18
  function stringEndsWith(sString, sPattern) {
18
19
  var iDiff = sString.length - sPattern.length;
19
20
  return iDiff >= 0 && sString.lastIndexOf(sPattern) === iDiff;
@@ -110,10 +111,37 @@ sap.ui.define([
110
111
  */
111
112
  TimelineNavigator.prototype.setItemDomRefs = function (aItemDomRefs) {
112
113
  assert(Array.isArray(aItemDomRefs), "aItemDomRefs must be an array of DOM elements");
113
- this.aItemDomRefs = aItemDomRefs;
114
+ var bIsVertical = false;
115
+ if (this.oDomRef) {
116
+ var $timeline = jQuery(this.oDomRef).closest(".sapSuiteUiCommonsTimeline");
117
+ var oTimelineControl = $timeline.control(0);
118
+ if (oTimelineControl) {
119
+ var sOrientation = oTimelineControl.getAxisOrientation();
120
+ bIsVertical = (sOrientation === TimelineAxisOrientation.Vertical);
121
+ }
122
+ }
123
+ var aValidItems = [];
124
+ for (var j = 0; j < aItemDomRefs.length; j++) {
125
+ var oDomRef = aItemDomRefs[j];
126
+ if (oDomRef) {
127
+ var sClass = oDomRef.className || "";
128
+ var sTag = oDomRef.tagName || "";
129
+ var bIsTimelineItem = sClass.indexOf("sapSuiteUiCommonsTimelineItemOutline") >= 0;
130
+ var bIsGroupHeader = sClass.indexOf("sapSuiteUiCommonsTimelineGroupHeaderMainWrapper") >= 0;
131
+ var bIsButton = sTag === "BUTTON" || sClass.indexOf("sapMBtn") >= 0;
132
+
133
+ if (bIsTimelineItem || bIsGroupHeader) {
134
+ aValidItems.push(oDomRef);
135
+ }
136
+ else if (bIsButton && bIsVertical) {
137
+ aValidItems.push(oDomRef);
138
+ }
139
+ }
140
+ }
114
141
 
115
- if (this.iFocusedIndex > aItemDomRefs.length - 1) {
116
- this.iFocusedIndex = aItemDomRefs.length - 1;
142
+ this.aItemDomRefs = aValidItems;
143
+ if (this.iFocusedIndex > aValidItems.length - 1) {
144
+ this.iFocusedIndex = aValidItems.length - 1;
117
145
  }
118
146
 
119
147
  // in nested ItemNavigation the tabindex must only be set if it's the focused item of the parent ItemNavigation
@@ -157,6 +185,10 @@ sap.ui.define([
157
185
  */
158
186
  TimelineNavigator.prototype.setItemsTabindex = function () {
159
187
 
188
+ if (!this.aItemDomRefs) {
189
+ return this;
190
+ }
191
+
160
192
  for (var i = 0; i < this.aItemDomRefs.length; i++) {
161
193
  if (this.aItemDomRefs[i]) { // separators return null here
162
194
  var $Item = jQuery(this.aItemDomRefs[i]);
@@ -117,9 +117,9 @@ sap.ui.define([
117
117
  oItem, sPlacementLine, bIsEven, bIsGroupHeader, oNextItem, cParent,
118
118
  bIsMaxed = oTimeline._isMaxed(),
119
119
  bLastGroup,
120
- fnCreateUL = function() {
120
+ fnCreateUL = function(sRole) {
121
121
  var eUl = new HtmlElement("ul");
122
- eUl.setAttribute("role", "list");
122
+ eUl.setAttribute("role", sRole ? sRole : "list");
123
123
  return eUl;
124
124
  };
125
125
 
@@ -131,7 +131,7 @@ sap.ui.define([
131
131
  eTopLine = new HtmlElement("div"),
132
132
  eUlTop = fnCreateUL(),
133
133
  eMiddleLine = new HtmlElement("div"),
134
- eUlMid = fnCreateUL(),
134
+ eUlMid = fnCreateUL(oTimeline.getAxisOrientation() === TimelineAxisOrientation.Horizontal ? "presentation" : "list"),
135
135
  eBottomLine = new HtmlElement("div"),
136
136
  eUlBot = fnCreateUL(),
137
137
  eLeftScroller = new HtmlElement("div"),
@@ -27,7 +27,6 @@ sap.ui.define([
27
27
  * @returns {Object} Configuration settings
28
28
  * @private
29
29
  * @ui5-restricted
30
- * @experimental Since 1.108
31
30
  */
32
31
  BaseHelperService.prototype.getProviderConfig = function() {
33
32
  return this._providerConfig;
@@ -28,7 +28,6 @@ sap.ui.define(
28
28
  /**
29
29
  * CollaborationHelper for collaboration-related functionalities
30
30
  * @namespace
31
- * @since 1.108
32
31
  * @alias module:sap/suite/ui/commons/collaboration/CollaborationHelper
33
32
  * @public
34
33
  */
@@ -43,7 +42,6 @@ sap.ui.define(
43
42
  * `<protocol>/<hostname>#<semantic-object>&/sap-url-hash=<UUID>`
44
43
  * @private
45
44
  * @ui5-restricted sap.suite.suite-ui-commons
46
- * @experimental since 1.108
47
45
  */
48
46
  CollaborationHelper.compactHash = function(sUrl) {
49
47
  const UshellContainer = sap.ui.require("sap/ushell/Container");
@@ -266,7 +264,6 @@ sap.ui.define(
266
264
  * Hides the avatar of the user if the app is running in the Microsoft Teams application.
267
265
  * @private
268
266
  * @ui5-restricted sap.suite.suite-ui-commons
269
- * @experimental since 1.108
270
267
  */
271
268
  CollaborationHelper._hideAvatarFromShellbar = function() {
272
269
  this.isTeamsModeActive().then(function(bIsActive) {
@@ -21,7 +21,6 @@ sap.ui.define([
21
21
  * @alias module:sap/suite/ui/commons/collaboration/CollaborationManagerService
22
22
  * @private
23
23
  * @ui5-restricted
24
- * @experimental Since 1.125
25
24
  */
26
25
 
27
26
  var CollaborationManagerService = BaseHelperService.extend("sap.suite.ui.commons.collaboration.CollaborationManagerService");
@@ -163,6 +163,7 @@ sap.ui.define([
163
163
  loadMinimalContactPopover: function(sEmail, oParams) {
164
164
  // oParams contains subject and body of the email
165
165
  this.afterClose(); // Make sure, previously opened popup is closed if any
166
+ this.sEmail = sEmail;
166
167
  var oJsonModel = new JSONModel({
167
168
  "mail": sEmail,
168
169
  "params": oParams
@@ -329,6 +330,12 @@ sap.ui.define([
329
330
 
330
331
  Object.assign(oFullProfileData, oBadgeInfo);
331
332
  return oFullProfileData;
333
+ },
334
+
335
+ handleCopyEmailPress: function() {
336
+ if (typeof window !== "undefined" && window.navigator && window.navigator.clipboard && window.navigator.clipboard.writeText) {
337
+ window.navigator.clipboard.writeText(this.sEmail);
338
+ }
332
339
  }
333
340
  });
334
341
  });
@@ -71,7 +71,10 @@
71
71
 
72
72
  <VBox visible="{= !!${userData>/mail}}" class="sapUiTinyMarginTop sapUiTinyMarginBottom" >
73
73
  <Label id="UserEmail" text="{i18n>POPOVER_CONTACT_SECTION_EMAIL}:" />
74
- <Link text="{userData>/mail}" href="{path: 'userData>/mail', formatter: '.formatUri'}" ariaLabelledBy="UserEmail"/>
74
+ <HBox>
75
+ <Link text="{userData>/mail}" href="{path: 'userData>/mail', formatter: '.formatUri'}" ariaLabelledBy="UserEmail" class="sapUiTinyMarginEnd"/>
76
+ <core:Icon src="sap-icon://copy" press="handleCopyEmailPress" decorative="false" tooltip="{i18n>POPOVER_CONTACT_COPY_EMAIL}"/>
77
+ </HBox>
75
78
  </VBox>
76
79
 
77
80
  <VBox visible="{= !!${userData>/officelocation}}" class="sapUiTinyMarginTop sapUiTinyMarginBottom" >