@sapui5/sap.suite.ui.commons 1.136.3 → 1.139.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 (107) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/commons/.library +1 -9
  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 +27 -27
  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 +6 -6
  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/ProcessFlow.js +4 -0
  15. package/src/sap/suite/ui/commons/ProcessFlowRenderer.js +11 -3
  16. package/src/sap/suite/ui/commons/TimelineItemRenderer.js +46 -3
  17. package/src/sap/suite/ui/commons/TimelineRenderManager.js +1 -1
  18. package/src/sap/suite/ui/commons/collaboration/CollaborationHelper.js +110 -22
  19. package/src/sap/suite/ui/commons/collaboration/ContactPopover.fragment.xml +17 -17
  20. package/src/sap/suite/ui/commons/collaboration/TeamsHelperService.js +2 -1
  21. package/src/sap/suite/ui/commons/collaboration/flpplugins/msplugin/Component-preload.js +1 -1
  22. package/src/sap/suite/ui/commons/flexibility/changeHandler/PropertyChangeMapper.js +1 -1
  23. package/src/sap/suite/ui/commons/imageeditor/CropCustomShapeHistoryItem.js +1 -1
  24. package/src/sap/suite/ui/commons/imageeditor/CropEllipseHistoryItem.js +1 -1
  25. package/src/sap/suite/ui/commons/imageeditor/CropRectangleHistoryItem.js +1 -1
  26. package/src/sap/suite/ui/commons/imageeditor/CustomSizeItem.js +1 -1
  27. package/src/sap/suite/ui/commons/imageeditor/FilterHistoryItem.js +1 -1
  28. package/src/sap/suite/ui/commons/imageeditor/FlipHistoryItem.js +1 -1
  29. package/src/sap/suite/ui/commons/imageeditor/HistoryItem.js +1 -1
  30. package/src/sap/suite/ui/commons/imageeditor/ImageEditor.js +1 -1
  31. package/src/sap/suite/ui/commons/imageeditor/ImageEditorContainer.js +1 -1
  32. package/src/sap/suite/ui/commons/imageeditor/ImageEditorResponsiveContainer.js +1 -1
  33. package/src/sap/suite/ui/commons/imageeditor/ResizeHistoryItem.js +1 -1
  34. package/src/sap/suite/ui/commons/imageeditor/RotateHistoryItem.js +1 -1
  35. package/src/sap/suite/ui/commons/library.js +1 -1
  36. package/src/sap/suite/ui/commons/messagebundle.properties +4 -3
  37. package/src/sap/suite/ui/commons/messagebundle_ar.properties +2 -2
  38. package/src/sap/suite/ui/commons/messagebundle_bg.properties +2 -2
  39. package/src/sap/suite/ui/commons/messagebundle_ca.properties +2 -2
  40. package/src/sap/suite/ui/commons/messagebundle_cnr.properties +2 -2
  41. package/src/sap/suite/ui/commons/messagebundle_cs.properties +2 -2
  42. package/src/sap/suite/ui/commons/messagebundle_cy.properties +2 -2
  43. package/src/sap/suite/ui/commons/messagebundle_da.properties +2 -2
  44. package/src/sap/suite/ui/commons/messagebundle_de.properties +1 -1
  45. package/src/sap/suite/ui/commons/messagebundle_el.properties +2 -2
  46. package/src/sap/suite/ui/commons/messagebundle_en.properties +2 -2
  47. package/src/sap/suite/ui/commons/messagebundle_en_GB.properties +2 -2
  48. package/src/sap/suite/ui/commons/messagebundle_en_US_saprigi.properties +2 -2
  49. package/src/sap/suite/ui/commons/messagebundle_es.properties +4 -4
  50. package/src/sap/suite/ui/commons/messagebundle_es_MX.properties +2 -2
  51. package/src/sap/suite/ui/commons/messagebundle_et.properties +2 -2
  52. package/src/sap/suite/ui/commons/messagebundle_fi.properties +2 -2
  53. package/src/sap/suite/ui/commons/messagebundle_fr.properties +2 -2
  54. package/src/sap/suite/ui/commons/messagebundle_fr_CA.properties +2 -2
  55. package/src/sap/suite/ui/commons/messagebundle_hi.properties +2 -2
  56. package/src/sap/suite/ui/commons/messagebundle_hr.properties +2 -2
  57. package/src/sap/suite/ui/commons/messagebundle_hu.properties +2 -2
  58. package/src/sap/suite/ui/commons/messagebundle_id.properties +2 -2
  59. package/src/sap/suite/ui/commons/messagebundle_it.properties +2 -2
  60. package/src/sap/suite/ui/commons/messagebundle_iw.properties +2 -2
  61. package/src/sap/suite/ui/commons/messagebundle_ja.properties +2 -2
  62. package/src/sap/suite/ui/commons/messagebundle_kk.properties +2 -2
  63. package/src/sap/suite/ui/commons/messagebundle_ko.properties +2 -2
  64. package/src/sap/suite/ui/commons/messagebundle_lt.properties +2 -2
  65. package/src/sap/suite/ui/commons/messagebundle_lv.properties +2 -2
  66. package/src/sap/suite/ui/commons/messagebundle_mk.properties +2 -2
  67. package/src/sap/suite/ui/commons/messagebundle_ms.properties +2 -2
  68. package/src/sap/suite/ui/commons/messagebundle_nl.properties +2 -2
  69. package/src/sap/suite/ui/commons/messagebundle_no.properties +2 -2
  70. package/src/sap/suite/ui/commons/messagebundle_pl.properties +2 -2
  71. package/src/sap/suite/ui/commons/messagebundle_pt.properties +2 -2
  72. package/src/sap/suite/ui/commons/messagebundle_pt_PT.properties +2 -2
  73. package/src/sap/suite/ui/commons/messagebundle_ro.properties +2 -2
  74. package/src/sap/suite/ui/commons/messagebundle_ru.properties +2 -2
  75. package/src/sap/suite/ui/commons/messagebundle_sh.properties +2 -2
  76. package/src/sap/suite/ui/commons/messagebundle_sk.properties +2 -2
  77. package/src/sap/suite/ui/commons/messagebundle_sl.properties +2 -2
  78. package/src/sap/suite/ui/commons/messagebundle_sr.properties +2 -2
  79. package/src/sap/suite/ui/commons/messagebundle_sv.properties +2 -2
  80. package/src/sap/suite/ui/commons/messagebundle_th.properties +2 -2
  81. package/src/sap/suite/ui/commons/messagebundle_tr.properties +2 -2
  82. package/src/sap/suite/ui/commons/messagebundle_uk.properties +2 -2
  83. package/src/sap/suite/ui/commons/messagebundle_vi.properties +2 -2
  84. package/src/sap/suite/ui/commons/messagebundle_zh_CN.properties +2 -2
  85. package/src/sap/suite/ui/commons/messagebundle_zh_TW.properties +2 -2
  86. package/src/sap/suite/ui/commons/networkgraph/GraphRenderer.js +0 -1
  87. package/src/sap/suite/ui/commons/networkgraph/Node.js +29 -0
  88. package/src/sap/suite/ui/commons/statusindicator/Circle.js +1 -1
  89. package/src/sap/suite/ui/commons/statusindicator/CustomShape.js +1 -1
  90. package/src/sap/suite/ui/commons/statusindicator/DiscreteThreshold.js +1 -1
  91. package/src/sap/suite/ui/commons/statusindicator/FillingOption.js +1 -1
  92. package/src/sap/suite/ui/commons/statusindicator/LibraryShape.js +1 -1
  93. package/src/sap/suite/ui/commons/statusindicator/Path.js +1 -1
  94. package/src/sap/suite/ui/commons/statusindicator/PropertyThreshold.js +1 -1
  95. package/src/sap/suite/ui/commons/statusindicator/Rectangle.js +1 -1
  96. package/src/sap/suite/ui/commons/statusindicator/Shape.js +1 -1
  97. package/src/sap/suite/ui/commons/statusindicator/ShapeGroup.js +1 -1
  98. package/src/sap/suite/ui/commons/statusindicator/SimpleShape.js +1 -1
  99. package/src/sap/suite/ui/commons/statusindicator/StatusIndicator.js +1 -1
  100. package/src/sap/suite/ui/commons/statusindicator/StatusIndicatorRenderer.js +6 -2
  101. package/src/sap/suite/ui/commons/taccount/TAccount.js +1 -1
  102. package/src/sap/suite/ui/commons/taccount/TAccountGroup.js +1 -1
  103. package/src/sap/suite/ui/commons/taccount/TAccountItem.js +1 -1
  104. package/src/sap/suite/ui/commons/taccount/TAccountItemProperty.js +1 -1
  105. package/src/sap/suite/ui/commons/taccount/TAccountPanel.js +1 -1
  106. package/src/sap/suite/ui/commons/themes/base/MicroProcessFlow.less +12 -2
  107. package/src/sap/suite/ui/commons/windowmessages/CollaborationMessageBroker.js +5 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.commons",
3
- "version": "1.136.3",
3
+ "version": "1.139.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.136.3</version>
10
+ <version>1.139.0</version>
11
11
 
12
12
  <documentation>SAP UI library: sap.suite.ui.commons</documentation>
13
13
 
@@ -54,14 +54,6 @@
54
54
  <jscoverage xmlns="http://www.sap.com/ui5/buildext/jscoverage">
55
55
  <exclude name="sap.suite.ui.commons.thirdparty." />
56
56
  </jscoverage>
57
- <!-- Thirdparty references -->
58
- <thirdparty xmlns="http://www.sap.com/ui5/buildext/thirdparty" >
59
- <lib name="@azure/msal-browser" displayName="Microsoft Authentication Library for JavaScript" npmName="@azure/msal-browser" version="2.22.0" homepage="https://github.com/AzureAD/microsoft-authentication-library-for-js" id="73554900106100194698">
60
- <license url="https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/LICENSE" type="MIT" />
61
- <copyright>Microsoft Corporation</copyright>
62
- <pattern>sap/suite/ui/commons/thirdparty/msal-browser.js</pattern>
63
- </lib>
64
- </thirdparty>
65
57
  <!-- demokit module app -->
66
58
  <documentation xmlns="http://www.sap.com/ui5/buildext/documentation"
67
59
  indexUrl="../../../../../test-resources/sap/suite/ui/commons/demokit/docuindex.json"
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  * @extends sap.ui.core.Element
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.136.3
22
+ * @version 1.139.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.136.3
137
+ * @version 1.139.0
138
138
  * @since 1.56.0
139
139
  *
140
140
  * @constructor
@@ -132,27 +132,6 @@ sap.ui.define([
132
132
  MOUSE: "mouse"
133
133
  });
134
134
 
135
- const OperatorTooltip = Object.freeze({
136
- "+": "CALCULATION_BUILDER_ADDITION_TOOLTIP",
137
- "-": "CALCULATION_BUILDER_SUBTRACTION_TOOLTIP",
138
- "/": "CALCULATION_BUILDER_DIVISION_TOOLTIP",
139
- "*": "CALCULATION_BUILDER_MULTIPLICATION_TOOLTIP",
140
- "(": "CALCULATION_BUILDER_LEFT_BRACKET_TOOLTIP",
141
- ")": "CALCULATION_BUILDER_RIGHT_BRACKET_TOOLTIP",
142
- ",": "CALCULATION_BUILDER_COMMA_TOOLTIP",
143
- "<": "CALCULATION_BUILDER_LESS_THAN_TOOLTIP",
144
- ">": "CALCULATION_BUILDER_GREATER_THAN_TOOLTIP",
145
- "<=": "CALCULATION_BUILDER_LESS_THAN_OR_EQUALS_TO_TOOLTIP",
146
- ">=": "CALCULATION_BUILDER_GREATER_THAN_OR_EQUALS_TO_TOOLTIP",
147
- "=": "CALCULATION_BUILDER_EQUALS_TO_TOOLTIP",
148
- "!=": "CALCULATION_BUILDER_NOT_EQUALS_TO_TOOLTIP",
149
- "AND": "CALCULATION_BUILDER_LOGICAL_CONJUNCTION_TOOLTIP",
150
- "OR": "CALCULATION_BUILDER_LOGICAL_DISJUNCTION_TOOLTIP",
151
- "XOR": "CALCULATION_BUILDER_EXCLUSIVE_DISJUNCTION_TOOLTIP",
152
- "NOT": "CALCULATION_BUILDER_NEGATION_TOOLTIP"
153
- });
154
-
155
-
156
135
  var DEFAULT_GROUP_KEY = "##DEFAULT##";
157
136
 
158
137
  var oResourceBundle = CoreLib.getResourceBundleFor("sap.suite.ui.commons");
@@ -169,7 +148,7 @@ sap.ui.define([
169
148
  * @extends sap.ui.core.Control
170
149
  *
171
150
  * @author SAP SE
172
- * @version 1.136.3
151
+ * @version 1.139.0
173
152
  * @since 1.56.0
174
153
  *
175
154
  * @constructor
@@ -286,6 +265,27 @@ sap.ui.define([
286
265
  this._mVariableMap = {};
287
266
  this._mFunctionMap = {};
288
267
  this._mOperatorMap = {};
268
+
269
+ //Map of Operator Tooltips
270
+ this._operatorTooltip = Object.freeze({
271
+ "+": "CALCULATION_BUILDER_ADDITION_TOOLTIP",
272
+ "-": "CALCULATION_BUILDER_SUBTRACTION_TOOLTIP",
273
+ "/": "CALCULATION_BUILDER_DIVISION_TOOLTIP",
274
+ "*": "CALCULATION_BUILDER_MULTIPLICATION_TOOLTIP",
275
+ "(": "CALCULATION_BUILDER_LEFT_BRACKET_TOOLTIP",
276
+ ")": "CALCULATION_BUILDER_RIGHT_BRACKET_TOOLTIP",
277
+ ",": "CALCULATION_BUILDER_COMMA_TOOLTIP",
278
+ "<": "CALCULATION_BUILDER_LESS_THAN_TOOLTIP",
279
+ ">": "CALCULATION_BUILDER_GREATER_THAN_TOOLTIP",
280
+ "<=": "CALCULATION_BUILDER_LESS_THAN_OR_EQUALS_TO_TOOLTIP",
281
+ ">=": "CALCULATION_BUILDER_GREATER_THAN_OR_EQUALS_TO_TOOLTIP",
282
+ "=": "CALCULATION_BUILDER_EQUALS_TO_TOOLTIP",
283
+ "!=": "CALCULATION_BUILDER_NOT_EQUALS_TO_TOOLTIP",
284
+ "AND": "CALCULATION_BUILDER_LOGICAL_CONJUNCTION_TOOLTIP",
285
+ "OR": "CALCULATION_BUILDER_LOGICAL_DISJUNCTION_TOOLTIP",
286
+ "XOR": "CALCULATION_BUILDER_EXCLUSIVE_DISJUNCTION_TOOLTIP",
287
+ "NOT": "CALCULATION_BUILDER_NEGATION_TOOLTIP"
288
+ });
289
289
  };
290
290
 
291
291
  CalculationBuilderExpression.prototype._renderDelimiter = function (oRm, iIndex) {
@@ -454,7 +454,7 @@ sap.ui.define([
454
454
  var fnCreateButton = function (sLabel) {
455
455
  return new Button({
456
456
  text: sLabel,
457
- tooltip: OperatorTooltip[sLabel] ? oResourceBundle.getText(OperatorTooltip[sLabel]) : OperatorTooltip[sLabel],
457
+ tooltip: this._operatorTooltip[sLabel] ? oResourceBundle.getText(this._operatorTooltip[sLabel]) : this._operatorTooltip[sLabel],
458
458
  press: this._updateOrCreateItem.bind(this, {
459
459
  type: ItemType.Operator,
460
460
  key: sLabel
@@ -665,7 +665,7 @@ sap.ui.define([
665
665
 
666
666
  var oButton = new Button({
667
667
  text: sText,
668
- tooltip: OperatorTooltip[sText] ? oResourceBundle.getText(OperatorTooltip[sText]) : sText,
668
+ tooltip: this._operatorTooltip[sText] ? oResourceBundle.getText(this._operatorTooltip[sText]) : sText,
669
669
  press: this._updateOrCreateItem.bind(this, {
670
670
  type: sType,
671
671
  key: sItemKey
@@ -2150,21 +2150,21 @@ sap.ui.define([
2150
2150
 
2151
2151
  CalculationBuilderExpression.prototype._setVariables = function () {
2152
2152
  var aVariables = this["getVariables"]();
2153
- aVariables.forEach((oVariable)=> {
2153
+ aVariables.forEach((oVariable) => {
2154
2154
  this._mVariableMap[oVariable.getKey().toLowerCase()] = oVariable;
2155
2155
  });
2156
2156
  };
2157
2157
 
2158
2158
  CalculationBuilderExpression.prototype._setFunctions = function () {
2159
2159
  var aFunctions = this["getFunctions"]();
2160
- aFunctions.forEach((oFunction)=> {
2160
+ aFunctions.forEach((oFunction) => {
2161
2161
  this._mFunctionMap[oFunction.getKey().toLowerCase()] = oFunction;
2162
2162
  });
2163
2163
  };
2164
2164
 
2165
2165
  CalculationBuilderExpression.prototype._setOperators = function () {
2166
2166
  var aOperators = this["getOperators"]();
2167
- aOperators.forEach((oOperator)=> {
2167
+ aOperators.forEach((oOperator) => {
2168
2168
  this._mOperatorMap[oOperator.getKey().toLowerCase()] = oOperator;
2169
2169
  });
2170
2170
  };
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.core.Control
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.136.3
29
+ * @version 1.139.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.136.3
25
+ * @version 1.139.0
26
26
  * @since 1.60.0
27
27
  *
28
28
  * @constructor
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  * @extends sap.ui.core.Control
40
40
  *
41
41
  * @author SAP SE
42
- * @version 1.136.3
42
+ * @version 1.139.0
43
43
  * @since 1.56.0
44
44
  *
45
45
  * @constructor
@@ -144,6 +144,7 @@ sap.ui.define([
144
144
  oRm.openStart("div");
145
145
  oRm.attr("id",this.getId() + "-content");
146
146
  oRm.class("sapCalculationBuilderItemContent");
147
+ oRm.attr("title", this.getParent()._operatorTooltip[sLabel] ? oResourceBundle.getText(this.getParent()._operatorTooltip[sLabel]) : "");
147
148
  if (this._bIsNew || this._isEmpty()) {
148
149
  oRm.attr("title",oResourceBundle.getText("CALCULATION_BUILDER_NEW_ITEM_TITLE"));
149
150
  } else if (oItemsWithAriaLabel[sLabel]) {
@@ -186,9 +187,8 @@ sap.ui.define([
186
187
  fnRenderExpandButton(oRm);
187
188
  }
188
189
  if (item) {
189
-
190
190
  oRm.flush(item);
191
- }
191
+ }
192
192
  };
193
193
 
194
194
  CalculationBuilderItem.prototype._getClass = function (bHasError, oRm, bCreateExpression) {
@@ -249,9 +249,9 @@ sap.ui.define([
249
249
  oRm.openStart("div");
250
250
  this._getClass(!!oError, oRm);
251
251
  oRm.attr("id",this.getId());
252
- oRm.attr("tabindex",sTabIndexAttr);
253
- oRm.attr("title",sTooltipAttr);
254
- oRm.attr("role",sRoleAttr);
252
+ oRm.attr("tabindex", sTabIndexAttr);
253
+ oRm.attr("title", sTooltipAttr);
254
+ oRm.attr("role", sRoleAttr);
255
255
  oRm.openEnd();
256
256
  // for now we can't add data-sap-ui as it collide with dragging selected items (for unknown reason)
257
257
  //sHtml += "<div " + " class=\"" + this._getClass(!!oError) + "\" data-sap-ui=\"" + this.getId() + "\" id=\"" + this.getId() + "\" tabindex=\"" + (bIsItemInBuilder ? "-1" : "0") + "\"" + sTooltipAttr + ">";
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @extends sap.ui.base.ManagedObject
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.136.3
24
+ * @version 1.139.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.136.3
26
+ * @version 1.139.0
27
27
  * @since 1.56.0
28
28
  *
29
29
  * @constructor
@@ -118,7 +118,7 @@ sap.ui.define([
118
118
  * @class
119
119
  * @public
120
120
  * @internal
121
- * @version 1.136.3
121
+ * @version 1.139.0
122
122
  */
123
123
  var CloudFilePicker = Dialog.extend("sap.suite.ui.commons.CloudFilePicker", {
124
124
  metadata: {
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  * @extends sap.ui.core.Control
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.136.3
50
+ * @version 1.139.0
51
51
  *
52
52
  * @constructor
53
53
  * @public
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @extends sap.ui.core.Control
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.136.3
41
+ * @version 1.139.0
42
42
  *
43
43
  * @constructor
44
44
  * @public
@@ -404,6 +404,10 @@ sap.ui.define([
404
404
  ResizeHandler.deregister(this._resizeRegId);
405
405
  }
406
406
 
407
+ if(this._oInvisibleText) {
408
+ this._oInvisibleText.destroy();
409
+ }
410
+
407
411
  if (this._internalCalcMatrix) {
408
412
  delete this._internalCalcMatrix;
409
413
  this._internalCalcMatrix = null;
@@ -13,8 +13,9 @@ sap.ui.define([
13
13
  "sap/base/security/encodeXML",
14
14
  "sap/ui/core/Element",
15
15
  "sap/ui/core/Core",
16
- "sap/ui/core/Lib"
17
- ], function (jQuery, library, ProcessFlowLaneHeader, AriaProperties, Device, encodeXML, Element, Core, CoreLib) {
16
+ "sap/ui/core/Lib",
17
+ "sap/ui/core/InvisibleText"
18
+ ], function (jQuery, library, ProcessFlowLaneHeader, AriaProperties, Device, encodeXML, Element, Core, CoreLib, InvisibleText) {
18
19
  "use strict";
19
20
 
20
21
  // shortcut for sap.suite.ui.commons.ProcessFlowZoomLevel
@@ -54,6 +55,13 @@ sap.ui.define([
54
55
  if (!this._oResBundle) {
55
56
  this._oResBundle = CoreLib.getResourceBundleFor("sap.suite.ui.commons");
56
57
  }
58
+ //Setting invisible text
59
+ if (!oControl._oInvisibleText) {
60
+ oControl._oInvisibleText = new InvisibleText();
61
+ oControl._oInvisibleText.toStatic();
62
+ oControl._oInvisibleText.setText(this._oResBundle.getText("PF_ARIA_PROCESS_FLOW_NODE_DESC"));
63
+ }
64
+
57
65
  oClosedElement = oProcessFlowRenderer._renderBasicStructure(oRm, oControl);
58
66
  if (oClosedElement) {
59
67
  return;
@@ -157,7 +165,7 @@ sap.ui.define([
157
165
  var oCustomContent = node._getCurrentZoomLevelContent();
158
166
  oRm.attr("id", sNodeId);
159
167
  oRm.attr("tabindex", 0);
160
- oRm.attr("aria-description", this._oResBundle.getText("PF_ARIA_PROCESS_FLOW_NODE_DESC"));
168
+ oRm.attr("aria-describedby", oControl._oInvisibleText.getId());
161
169
  var oAriaDefaultProperties = {};
162
170
  oAriaDefaultProperties.label = node._getAriaText();
163
171
  if (oCustomContent) {
@@ -296,7 +296,14 @@ sap.ui.define([
296
296
 
297
297
  eBarWrapper.addChild(eText);
298
298
  eText.addClass("sapSuiteUiCommonsTimelineGroupHeaderSpan");
299
- eText.addChildEscaped(" " + oTimelineItem.getTitle());
299
+
300
+ // Use the new _getGroupTypeLabel method
301
+ var sGroupTypeLabel = this._getGroupTypeLabel(oTimelineItem);
302
+ if (sGroupTypeLabel) {
303
+ eText.addChildEscaped(" " + sGroupTypeLabel + ": " + oTimelineItem.getTitle());
304
+ } else {
305
+ eText.addChildEscaped(" " + oTimelineItem.getTitle());
306
+ }
300
307
 
301
308
  if (oTimelineItem._orientation === "V") {
302
309
  eTimelineItem.addChild(eIconBarWrapper);
@@ -576,14 +583,50 @@ sap.ui.define([
576
583
  eTimelineItem.setAttribute("aria-setsize", oTimelineItem._callParentFn("_getItemsCount"));
577
584
  }
578
585
  if (bIsGroupHeader) {
586
+ var sGroupTypeLabel = this._getGroupTypeLabel(oTimelineItem);
579
587
  if (!oTimelineItem._isGroupCollapsed()) {
580
- sGroupHeader = oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_HEADER") + ": " + oTimelineItem.getTitle() + " " + oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_EXPAND");
588
+ if (sGroupTypeLabel) {
589
+ sGroupHeader = oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_HEADER") + ": " + sGroupTypeLabel + " " + oTimelineItem.getTitle() + " " + oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_EXPAND");
590
+ } else {
591
+ sGroupHeader = oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_HEADER") + ": " + oTimelineItem.getTitle() + " " + oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_EXPAND");
592
+ }
581
593
  } else {
582
- sGroupHeader = oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_HEADER") + ": " + oTimelineItem.getTitle() + " " + oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_COLLAPSE");
594
+ if (sGroupTypeLabel) {
595
+ sGroupHeader = oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_HEADER") + ": " + sGroupTypeLabel + " " + oTimelineItem.getTitle() + " " + oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_COLLAPSE");
596
+ } else {
597
+ sGroupHeader = oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_HEADER") + ": " + oTimelineItem.getTitle() + " " + oResBundle.getText("TIMELINE_ACCESSIBILITY_GROUP_COLLAPSE");
598
+ }
583
599
  }
584
600
  eTimelineItem.setAttribute("aria-label", sGroupHeader, false);
585
601
  }
586
602
  };
587
603
 
604
+ /**
605
+ * Returns the localized label for the current Timeline grouping type (Year, Month, Quarter, Week, Day).
606
+ * Looks up the value of the GroupByType property from the parent Timeline control and returns the corresponding
607
+ * localized string from the resource bundle. If the type is not recognized, returns undefined.
608
+ * @param {sap.suite.ui.commons.TimelineItem} oTimelineItem The item to be rendered
609
+ * @returns {string|undefined} The localized label for the group type, or undefined if not found.
610
+ * @private
611
+ */
612
+ TimelineItemRenderer._getGroupTypeLabel = function (oTimelineItem) {
613
+ var oTimeline = oTimelineItem.getParent();
614
+ var sType = oTimeline.getGroupByType();
615
+
616
+ // Compare against enum values from library
617
+ var mTypeToKey = {};
618
+ mTypeToKey[library.TimelineGroupType.Year] = "TIMELINE_YEAR";
619
+ mTypeToKey[library.TimelineGroupType.Month] = "TIMELINE_MONTH";
620
+ mTypeToKey[library.TimelineGroupType.Quarter] = "TIMELINE_QUARTER";
621
+ mTypeToKey[library.TimelineGroupType.Week] = "TIMELINE_WEEK";
622
+ mTypeToKey[library.TimelineGroupType.Day] = "TIMELINE_DAY";
623
+
624
+ var sKey = mTypeToKey[sType];
625
+ if (sKey && oResBundle.hasText(sKey)) {
626
+ return oResBundle.getText(sKey);
627
+ }
628
+ return undefined;
629
+ };
630
+
588
631
  return TimelineItemRenderer;
589
632
  }, true);
@@ -1117,7 +1117,7 @@ sap.ui.define([
1117
1117
  that._filterDialogRangePage.setFilterCount(0);
1118
1118
  that._objects.getTimestampFilterPicker().clearDates();
1119
1119
  if (that._rangeFilterType == "None") {
1120
- that.toggleGroupTypeSelector();
1120
+ that.toggleGroupTypeSelector(that._rangeFilterType);
1121
1121
  }
1122
1122
  },
1123
1123
  filterDetailPageOpened: function (oItem) {
@@ -13,6 +13,7 @@ sap.ui.define(
13
13
  var PARAM_SAP_STAGEVIEW_HASH = "&sap-stageview-hash";
14
14
  var PARAM_SAP_CARD_ID = "&sap-ui-cardId";
15
15
  var PARAM_SAP_XX_CARD_ID = "&sap-ui-xx-cardId";
16
+ var PARAM_SAP_CARD_INFO = "&info=";
16
17
  var TRANSIENT_KEY = "transient";
17
18
  var oLogger = Log.getLogger("sap.suite.ui.commons.collaboration.CollaborationHelper");
18
19
 
@@ -107,8 +108,9 @@ sap.ui.define(
107
108
  * @return {Promise} Return the resolved promise when the redirection of the URL is done.
108
109
  * @public
109
110
  */
110
- CollaborationHelper.processAndExpandHash = function () {
111
- this._hideAvatarFromShellbar();
111
+ CollaborationHelper.processAndExpandHash = async function () {
112
+ const bTeamsModeActive = await this.isTeamsModeActive();
113
+ this._hideAvatarFromShellbar(bTeamsModeActive);
112
114
  return this._getCurrentUrl().then(async function (sCurrentUrl) {
113
115
  //if the current url has url param, sap-url-hash, then we have to redirect to an actual url.
114
116
  if (sCurrentUrl.indexOf(URL_KEY) > -1) {
@@ -116,7 +118,7 @@ sap.ui.define(
116
118
  if (sCurrentUrl.indexOf(PARAM_SAP_STAGEVIEW_HASH) > 0) {
117
119
  sHash = sHash.split(PARAM_SAP_STAGEVIEW_HASH)[0];
118
120
  } else if (sCurrentUrl.includes("info=")) {
119
- sHash = sHash.includes(",") ? sHash.split(",")[0] : sHash.split("&")[0];
121
+ sHash = sHash.includes(",") ? sHash.split(",")[0] : sHash.split("&")[0];
120
122
  } else if (sCurrentUrl.indexOf(PARAM_SAP_CARD_ID) > 0 || sCurrentUrl.indexOf(PARAM_SAP_XX_CARD_ID) > 0) {
121
123
  if (sCurrentUrl.indexOf(PARAM_SAP_CARD_ID) > 0){
122
124
  sHash = sHash.split(PARAM_SAP_CARD_ID)[0];
@@ -128,46 +130,132 @@ sap.ui.define(
128
130
  }
129
131
  return this._retrieveURL(sHash).then(function (oAppState) {
130
132
  if (oAppState.getData()) {
131
- window.location.replace(oAppState.getData());
133
+ this._redirectToUrl(oAppState.getData());
132
134
  } else {
133
135
  // In case AppState couldn't found value for the hash, so removing it and redirecting to LR
134
136
  const sUrl = sCurrentUrl.split(URL_KEY)[0];
135
- window.location.replace(sUrl);
137
+ this._redirectToUrl(sUrl);
136
138
  }
137
139
  return Promise.resolve();
138
- });
140
+ }.bind(this));
139
141
  } else if (sCurrentUrl.indexOf(PARAM_SAP_CARD_ID) > -1) {
140
142
  const sUrl = sCurrentUrl.split(PARAM_SAP_CARD_ID)[0];
141
- window.location.replace(sUrl);
143
+ this._redirectToUrl(sUrl);
142
144
  } else if (sCurrentUrl.indexOf(PARAM_SAP_CARD_TITLE) > -1) {
143
- const UshellContainer = sap.ui.require("sap/ushell/Container");
144
145
  const sUrl = sCurrentUrl.split(PARAM_SAP_CARD_TITLE)[0];
145
- // Get indication is if we are in AppRuntime (for special use cases handling, e.g. BTP Fiori App in S/Cube)
146
- if (UshellContainer?.inAppRuntime()){
147
- await CollaborationMessageConsumer.updateTopLevelURLforAppRuntime(sUrl);
148
- } else {
149
- window.location.replace(sUrl);
150
- }
146
+ await this._redirectBasedOnRuntime(sUrl);
147
+ } else if (bTeamsModeActive && sCurrentUrl.includes(PARAM_SAP_CARD_INFO)) {
148
+ const sUrl = sCurrentUrl.split(PARAM_SAP_CARD_INFO)[0];
149
+ await this._redirectBasedOnRuntime(sUrl);
151
150
  }
152
151
  return Promise.resolve();
153
152
  }.bind(this));
154
153
  };
155
154
 
155
+ /**
156
+ * Handles URL redirection according to the runtime environment.
157
+ *
158
+ * - In AppRuntime (e.g., BTP Fiori App in S/Cube), updates the top-level URL.
159
+ * - Otherwise, performs a standard window location redirect.
160
+ *
161
+ * @param {string} sUrl - The target URL for redirection.
162
+ * @private
163
+ */
164
+ CollaborationHelper._redirectBasedOnRuntime = async function (sUrl) {
165
+ const UshellContainer = sap.ui.require("sap/ushell/Container");
166
+
167
+ // Get indication is if we are in AppRuntime (for special use cases handling, e.g. BTP Fiori App in S/Cube)
168
+ if (UshellContainer && UshellContainer.inAppRuntime()) {
169
+ await CollaborationMessageConsumer.updateTopLevelURLforAppRuntime(sUrl);
170
+ } else {
171
+ const targetUrl = this._stripTeamsParams(sUrl);
172
+ this._redirectToUrl(targetUrl);
173
+ }
174
+ };
175
+
176
+ /**
177
+ * Removes 'sap-ushell-config' and 'sap-collaboration-teams' query parameters
178
+ * from the given URL while preserving the hash fragment.
179
+ *
180
+ * @param {string} sUrl - The original full URL
181
+ * @returns {string} - The cleaned URL
182
+ * @private
183
+ */
184
+ CollaborationHelper._removeTeamsParams = function (sUrl) {
185
+ try {
186
+ const urlParts = sUrl.split("#");
187
+ const baseUrl = urlParts[0];
188
+ const hashPart = urlParts[1] ? "#" + urlParts[1] : "";
189
+
190
+ const [path, queryString] = baseUrl.split("?");
191
+ if (!queryString) {
192
+ return sUrl;
193
+ }
194
+
195
+ const params = new URLSearchParams(queryString);
196
+ params.delete("sap-ushell-config");
197
+ params.delete("sap-collaboration-teams");
198
+
199
+ const newBaseUrl = params.toString()
200
+ ? `${path}?${params.toString()}`
201
+ : path;
202
+
203
+ return newBaseUrl + hashPart;
204
+ } catch (e) {
205
+ return sUrl;
206
+ }
207
+ };
208
+
209
+ /**
210
+ * If the current window is the top window, we assume it's not running inside an iframe, e.g. Microsoft Teams.
211
+ * In this case, we remove the Teams parameters from the URL.
212
+ *
213
+ * @param {string} sUrl The URL to be cleaned of Teams parameters.
214
+ * @returns {string} - The cleaned URL
215
+ * @private
216
+ */
217
+ CollaborationHelper._stripTeamsParams = function (sUrl) {
218
+ if (this._isTopWindow()) {
219
+ return this._removeTeamsParams(sUrl);
220
+ }
221
+ return sUrl;
222
+ };
223
+
224
+ /**
225
+ * Determines whether the current window is the top-level window.
226
+ * This is typically used to detect if the application is running inside an iframe (e.g., in Microsoft Teams).
227
+ *
228
+ * @returns {boolean} - Returns true if the current window is not inside an iframe, false otherwise.
229
+ * @private
230
+ */
231
+ CollaborationHelper._isTopWindow = function () {
232
+ return window.self === window.top;
233
+ };
234
+
235
+ /**
236
+ * Redirects the browser to a specified URL.
237
+ *
238
+ * @private
239
+ * @param {string} sUrl - The target URL to redirect to
240
+ */
241
+ CollaborationHelper._redirectToUrl = function(sUrl) {
242
+ window.location.replace(sUrl);
243
+ };
244
+
156
245
  /**
157
246
  * Hides the avatar of the user if the app is running in the Microsoft Teams application.
247
+ * @param {boolean} bTeamsModeActive Indicates if Teams mode is active
158
248
  * @private
159
249
  * @ui5-restricted sap.suite.suite-ui-commons
160
250
  * @experimental since 1.108
161
251
  */
162
- CollaborationHelper._hideAvatarFromShellbar = function () {
163
- this.isTeamsModeActive().then(function (bIsActive) {
164
- if (bIsActive) {
165
- var oAvatar = Element.getElementById('userActionsMenuHeaderButton');
166
- if (oAvatar) {
167
- oAvatar.setVisible(false);
168
- }
252
+ CollaborationHelper._hideAvatarFromShellbar = function (bTeamsModeActive) {
253
+ if (bTeamsModeActive) {
254
+ var oAvatar = Element.getElementById('userActionsMenuHeaderButton');
255
+ if (oAvatar) {
256
+ oAvatar.setVisible(false);
169
257
  }
170
- });
258
+ }
171
259
  };
172
260
 
173
261
  /**