@openui5/sap.ui.mdc 1.121.0 → 1.122.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 (165) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +4 -4
  3. package/src/sap/ui/mdc/.library +1 -1
  4. package/src/sap/ui/mdc/ActionToolbar.js +1 -1
  5. package/src/sap/ui/mdc/Chart.js +36 -48
  6. package/src/sap/ui/mdc/Control.js +1 -1
  7. package/src/sap/ui/mdc/DefaultTypeMap.js +1 -1
  8. package/src/sap/ui/mdc/Element.js +1 -1
  9. package/src/sap/ui/mdc/Field.js +2 -2
  10. package/src/sap/ui/mdc/FilterBar.js +1 -1
  11. package/src/sap/ui/mdc/FilterField.js +2 -2
  12. package/src/sap/ui/mdc/Link.js +12 -27
  13. package/src/sap/ui/mdc/MultiValueField.js +1 -1
  14. package/src/sap/ui/mdc/Table.js +3 -1
  15. package/src/sap/ui/mdc/ValueHelp.js +2 -1
  16. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -1
  17. package/src/sap/ui/mdc/chart/ChartImplementationContainer.js +1 -1
  18. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  19. package/src/sap/ui/mdc/chart/ChartToolbar.js +128 -10
  20. package/src/sap/ui/mdc/chart/DrillBreadcrumbs.js +50 -87
  21. package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
  22. package/src/sap/ui/mdc/chart/SelectionButton.js +404 -0
  23. package/src/sap/ui/mdc/chart/SelectionButtonItem.js +60 -0
  24. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  25. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  26. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  27. package/src/sap/ui/mdc/condition/FilterConverter.js +17 -11
  28. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +72 -61
  29. package/src/sap/ui/mdc/condition/Operator.js +51 -26
  30. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +2 -2
  31. package/src/sap/ui/mdc/condition/RangeOperator.js +7 -2
  32. package/src/sap/ui/mdc/designtime/field/Field.designtime.js +8 -8
  33. package/src/sap/ui/mdc/enums/ChartToolbarActionType.js +1 -1
  34. package/src/sap/ui/mdc/enums/ConditionValidated.js +1 -1
  35. package/src/sap/ui/mdc/enums/TableGrowingMode.js +1 -1
  36. package/src/sap/ui/mdc/field/ConditionType.js +32 -23
  37. package/src/sap/ui/mdc/field/ConditionTypeMixin.js +18 -1
  38. package/src/sap/ui/mdc/field/ConditionsType.js +1 -1
  39. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  40. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +1 -1
  41. package/src/sap/ui/mdc/field/FieldBase.js +26 -11
  42. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +1 -0
  43. package/src/sap/ui/mdc/field/FieldInfoBase.js +68 -43
  44. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  45. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  46. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  47. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  48. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  49. package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
  50. package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
  51. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +1 -1
  52. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  53. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
  54. package/src/sap/ui/mdc/filterbar/vh/CollectiveSearchSelect.js +3 -0
  55. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  56. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  57. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  58. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  59. package/src/sap/ui/mdc/library.js +5 -4
  60. package/src/sap/ui/mdc/link/Factory.js +1 -1
  61. package/src/sap/ui/mdc/link/LinkItem.js +25 -8
  62. package/src/sap/ui/mdc/link/Panel.js +19 -26
  63. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  64. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  65. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  66. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  67. package/src/sap/ui/mdc/messagebundle.properties +2 -0
  68. package/src/sap/ui/mdc/messagebundle_ar.properties +1 -0
  69. package/src/sap/ui/mdc/messagebundle_bg.properties +1 -0
  70. package/src/sap/ui/mdc/messagebundle_ca.properties +1 -0
  71. package/src/sap/ui/mdc/messagebundle_cnr.properties +1 -0
  72. package/src/sap/ui/mdc/messagebundle_cs.properties +1 -0
  73. package/src/sap/ui/mdc/messagebundle_cy.properties +1 -0
  74. package/src/sap/ui/mdc/messagebundle_da.properties +1 -0
  75. package/src/sap/ui/mdc/messagebundle_de.properties +1 -0
  76. package/src/sap/ui/mdc/messagebundle_el.properties +1 -0
  77. package/src/sap/ui/mdc/messagebundle_en.properties +1 -349
  78. package/src/sap/ui/mdc/messagebundle_en_GB.properties +1 -0
  79. package/src/sap/ui/mdc/messagebundle_es.properties +1 -0
  80. package/src/sap/ui/mdc/messagebundle_es_MX.properties +1 -0
  81. package/src/sap/ui/mdc/messagebundle_et.properties +1 -0
  82. package/src/sap/ui/mdc/messagebundle_fi.properties +1 -0
  83. package/src/sap/ui/mdc/messagebundle_fr.properties +3 -2
  84. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +1 -0
  85. package/src/sap/ui/mdc/messagebundle_hi.properties +1 -0
  86. package/src/sap/ui/mdc/messagebundle_hr.properties +1 -0
  87. package/src/sap/ui/mdc/messagebundle_hu.properties +1 -0
  88. package/src/sap/ui/mdc/messagebundle_id.properties +1 -0
  89. package/src/sap/ui/mdc/messagebundle_it.properties +1 -0
  90. package/src/sap/ui/mdc/messagebundle_iw.properties +1 -0
  91. package/src/sap/ui/mdc/messagebundle_ja.properties +2 -1
  92. package/src/sap/ui/mdc/messagebundle_kk.properties +1 -0
  93. package/src/sap/ui/mdc/messagebundle_ko.properties +1 -0
  94. package/src/sap/ui/mdc/messagebundle_lt.properties +1 -0
  95. package/src/sap/ui/mdc/messagebundle_lv.properties +1 -0
  96. package/src/sap/ui/mdc/messagebundle_mk.properties +2 -1
  97. package/src/sap/ui/mdc/messagebundle_ms.properties +1 -0
  98. package/src/sap/ui/mdc/messagebundle_nl.properties +1 -0
  99. package/src/sap/ui/mdc/messagebundle_no.properties +1 -0
  100. package/src/sap/ui/mdc/messagebundle_pl.properties +1 -0
  101. package/src/sap/ui/mdc/messagebundle_pt.properties +1 -0
  102. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +1 -0
  103. package/src/sap/ui/mdc/messagebundle_ro.properties +1 -0
  104. package/src/sap/ui/mdc/messagebundle_ru.properties +1 -0
  105. package/src/sap/ui/mdc/messagebundle_sh.properties +1 -0
  106. package/src/sap/ui/mdc/messagebundle_sk.properties +1 -0
  107. package/src/sap/ui/mdc/messagebundle_sl.properties +1 -0
  108. package/src/sap/ui/mdc/messagebundle_sr.properties +1 -0
  109. package/src/sap/ui/mdc/messagebundle_sv.properties +1 -0
  110. package/src/sap/ui/mdc/messagebundle_th.properties +1 -0
  111. package/src/sap/ui/mdc/messagebundle_tr.properties +1 -0
  112. package/src/sap/ui/mdc/messagebundle_uk.properties +4 -3
  113. package/src/sap/ui/mdc/messagebundle_vi.properties +1 -0
  114. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +1 -0
  115. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +1 -0
  116. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  117. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  118. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  119. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  120. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
  121. package/src/sap/ui/mdc/odata/TypeMap.js +1 -1
  122. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +110 -41
  123. package/src/sap/ui/mdc/odata/v4/TypeMap.js +1 -1
  124. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +37 -4
  125. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  126. package/src/sap/ui/mdc/p13n/panels/LinkSelectionPanel.js +25 -27
  127. package/src/sap/ui/mdc/p13n/subcontroller/LinkPanelController.js +6 -31
  128. package/src/sap/ui/mdc/table/Column.js +13 -3
  129. package/src/sap/ui/mdc/table/ColumnSettings.js +1 -1
  130. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  131. package/src/sap/ui/mdc/table/DragDropConfig.js +1 -1
  132. package/src/sap/ui/mdc/table/PropertyHelper.js +1 -1
  133. package/src/sap/ui/mdc/table/ResponsiveColumnSettings.js +5 -13
  134. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  135. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  136. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +1 -1
  137. package/src/sap/ui/mdc/table/utils/Personalization.js +1 -1
  138. package/src/sap/ui/mdc/themes/base/Chart.less +5 -0
  139. package/src/sap/ui/mdc/ushell/SemanticObjectMapping.js +1 -1
  140. package/src/sap/ui/mdc/ushell/SemanticObjectMappingItem.js +1 -1
  141. package/src/sap/ui/mdc/ushell/SemanticObjectUnavailableAction.js +1 -1
  142. package/src/sap/ui/mdc/util/InfoBar.js +1 -1
  143. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  144. package/src/sap/ui/mdc/util/PropertyHelper.js +1 -1
  145. package/src/sap/ui/mdc/valuehelp/Dialog.js +1 -1
  146. package/src/sap/ui/mdc/valuehelp/Popover.js +1 -1
  147. package/src/sap/ui/mdc/valuehelp/base/Container.js +1 -1
  148. package/src/sap/ui/mdc/valuehelp/base/Content.js +1 -1
  149. package/src/sap/ui/mdc/valuehelp/base/DefineConditionPanel.js +82 -5
  150. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
  151. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +1 -1
  152. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
  153. package/src/sap/ui/mdc/valuehelp/content/Bool.js +1 -1
  154. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +1 -1
  155. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +2 -2
  156. package/src/sap/ui/mdc/valuehelp/content/FixedListItem.js +1 -1
  157. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +1 -1
  158. package/src/sap/ui/mdc/valuehelp/content/MTable.js +116 -44
  159. package/test/sap/ui/mdc/testutils/opa/chart/ActionsBase.js +2 -2
  160. package/test/sap/ui/mdc/testutils/opa/chart/AssertionsBase.js +2 -2
  161. package/test/sap/ui/mdc/testutils/opa/matchers/DateValue.js +2 -2
  162. package/test/sap/ui/mdc/testutils/opa/table/waitForTable.js +0 -2
  163. package/src/sap/ui/mdc/chart/ChartTypeButton.js +0 -348
  164. package/src/sap/ui/mdc/chart/DrillStackHandler.js +0 -209
  165. package/src/sap/ui/mdc/odata/v4/FieldBaseDelegate.js +0 -41
package/THIRDPARTY.txt CHANGED
@@ -461,7 +461,7 @@ License: Apache-2.0
461
461
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
462
462
  Contained in: lib/jsdoc/ui5/plugin.js
463
463
 
464
- Component: SAP Theming Base Content, version: 11.10.0
464
+ Component: SAP Theming Base Content, version: 11.12.0
465
465
  Copyright: SAP SE or an SAP affiliate company and Theming Base Content contributors
466
466
  License: Apache-2.0
467
467
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.mdc",
3
- "version": "1.121.0",
3
+ "version": "1.122.0",
4
4
  "description": "OpenUI5 UI Library sap.ui.mdc",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,8 +14,8 @@
14
14
  "url": "https://github.com/SAP/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.m": "1.121.0",
18
- "@openui5/sap.ui.core": "1.121.0",
19
- "@openui5/sap.ui.layout": "1.121.0"
17
+ "@openui5/sap.m": "1.122.0",
18
+ "@openui5/sap.ui.core": "1.122.0",
19
+ "@openui5/sap.ui.layout": "1.122.0"
20
20
  }
21
21
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.121.0</version>
9
+ <version>1.122.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.ui.mdc</documentation>
12
12
 
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * The content aggregation of the control must not be used.
34
34
  * @extends sap.m.OverflowToolbar
35
35
  * @author SAP SE
36
- * @version 1.121.0
36
+ * @version 1.122.0
37
37
  * @constructor
38
38
  * @since 1.58
39
39
  * @public
@@ -41,7 +41,7 @@ sap.ui.define([
41
41
  SortController,
42
42
  ChartTypeController,
43
43
  ManagedObjectObserver,
44
- Breadcrumbs,
44
+ DrillBreadcrumbs,
45
45
  ActionToolbarAction,
46
46
  coreLibrary,
47
47
  KeyCodes,
@@ -52,7 +52,6 @@ sap.ui.define([
52
52
  ) => {
53
53
  "use strict";
54
54
 
55
- let DrillStackHandler;
56
55
  const { TitleLevel } = coreLibrary;
57
56
 
58
57
  /**
@@ -65,7 +64,7 @@ sap.ui.define([
65
64
  * <b>Note:</b> The inner chart needs to be assigned <code>ChartDelegate</code>.
66
65
  * @extends sap.ui.mdc.Control
67
66
  * @author SAP SE
68
- * @version 1.121.0
67
+ * @version 1.122.0
69
68
  * @constructor
70
69
  *
71
70
  * @public
@@ -770,8 +769,30 @@ sap.ui.define([
770
769
  Chart.prototype._createBreadcrumbs = function() {
771
770
  let _oBreadcrumbs = this.getAggregation("_breadcrumbs");
772
771
  if (!_oBreadcrumbs && !this._bIsDestroyed) {
773
- _oBreadcrumbs = new Breadcrumbs(this.getId() + "--breadcrumbs");
774
- _oBreadcrumbs.updateDrillBreadcrumbs(this, this.getControlDelegate().getDrillableItems(this));
772
+ _oBreadcrumbs = new DrillBreadcrumbs(this.getId() + "--breadcrumbs", {
773
+ linkPressed: function(oEvent) {
774
+ const index = oEvent.getParameter("index");
775
+
776
+ // get drill-path which was drilled-up and needs to be removed from mdc chart
777
+ const aCurrentDrillStack = this.getControlDelegate().getDrillableItems(this);
778
+ const aDrilledItems = aCurrentDrillStack.slice(index + 1);
779
+ const aFlexItemChanges = aDrilledItems.map((oDrillItem) => {
780
+ return {
781
+ name: oDrillItem.getPropertyKey(),
782
+ visible: false
783
+ };
784
+ });
785
+
786
+ this.getEngine().createChanges({
787
+ control: this,
788
+ key: "Item",
789
+ state: aFlexItemChanges
790
+ });
791
+
792
+ }.bind(this)
793
+ });
794
+ const aItems = this.getControlDelegate().getDrillableItems(this).map(function(oItem) { return { key: oItem.getPropertyKey(), text: oItem.getLabel() }; });
795
+ _oBreadcrumbs.update(aItems);
775
796
  this.setAggregation("_breadcrumbs", _oBreadcrumbs);
776
797
  }
777
798
  };
@@ -854,7 +875,8 @@ sap.ui.define([
854
875
  this._rebind();
855
876
 
856
877
  //Update the breadcrumbs after an MDC Item change
857
- this.getAggregation("_breadcrumbs").updateDrillBreadcrumbs(this, this.getControlDelegate().getDrillableItems(this));
878
+ const aItems = this.getControlDelegate().getDrillableItems(this).map(function(oItem) { return { key: oItem.getPropertyKey(), text: oItem.getLabel() }; });
879
+ this.getAggregation("_breadcrumbs").update(aItems);
858
880
  };
859
881
 
860
882
  /**
@@ -1072,48 +1094,6 @@ sap.ui.define([
1072
1094
  Control.prototype.destroy.apply(this, arguments);
1073
1095
  };
1074
1096
 
1075
- /**
1076
- * Shows the drill-down popover for selection a dimension to drill down to.
1077
- *
1078
- * @param {sap.m.Button} oDrillBtn reference to the drill down button for loacation of the popover
1079
- * @returns {Promise} show dril stack promise
1080
- *
1081
- * @private
1082
- */
1083
- Chart.prototype._showDrillDown = function(oDrillBtn) {
1084
- if (!this.oDrillPopover) {
1085
- if (DrillStackHandler) {
1086
-
1087
- this.oDrillPopover = DrillStackHandler.createDrillDownPopover(this);
1088
- this.oDrillPopover.attachAfterClose(() => {
1089
- delete this.oDrillPopover;
1090
- });
1091
-
1092
- return DrillStackHandler.showDrillDownPopover(this, oDrillBtn);
1093
- }
1094
-
1095
- return new Promise((resolve, reject) => {
1096
- sap.ui.require([
1097
- "sap/ui/mdc/chart/DrillStackHandler"
1098
- ], (DrillStackHandlerLoaded) => {
1099
- DrillStackHandler = DrillStackHandlerLoaded;
1100
-
1101
- this.oDrillPopover = DrillStackHandler.createDrillDownPopover(this);
1102
- this.oDrillPopover.attachAfterClose(() => {
1103
- delete this.oDrillPopover;
1104
- });
1105
-
1106
- DrillStackHandler.showDrillDownPopover(this, oDrillBtn)
1107
- .then((oDrillDownPopover) => {
1108
- resolve(oDrillDownPopover);
1109
- });
1110
- });
1111
- });
1112
- } else if (this.oDrillPopover) {
1113
- this.oDrillPopover.close();
1114
- }
1115
- };
1116
-
1117
1097
  /**
1118
1098
  * If some properties are set on the MDC chart while the inner chart is not yet initialized, they need to eb set after initialaization.
1119
1099
  * This methods gets called after inner chart is ready and takes care of that
@@ -1160,6 +1140,14 @@ sap.ui.define([
1160
1140
  Chart.prototype.setChartType = function(sChartType) {
1161
1141
  this.setProperty("chartType", sChartType);
1162
1142
 
1143
+ const oToolbar = this.getAggregation("_toolbar");
1144
+ if (oToolbar?._oChartTypeBtn) {
1145
+ oToolbar._oChartTypeBtn.setSelectedItemKey(sChartType);
1146
+ const oChartTypeInfo = this.getChartTypeInfo();
1147
+ oToolbar._oChartTypeBtn.setTooltip(oChartTypeInfo.text);
1148
+ oToolbar._oChartTypeBtn.setIcon(oChartTypeInfo.icon);
1149
+ }
1150
+
1163
1151
  try {
1164
1152
  this.getControlDelegate().setChartType(this, sChartType);
1165
1153
  } catch (e) {
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.core.Control
24
24
  * @abstract
25
25
  * @author SAP SE
26
- * @version 1.121.0
26
+ * @version 1.122.0
27
27
  * @alias sap.ui.mdc.Control
28
28
  *
29
29
  * @borrows sap.ui.mdc.mixin.DelegateMixin.awaitControlDelegate as #awaitControlDelegate
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * </ul>
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.121.0
31
+ * @version 1.122.0
32
32
  * @public
33
33
  * @since 1.114.0
34
34
  * @namespace
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.core.Element
24
24
  * @abstract
25
25
  * @author SAP SE
26
- * @version 1.121.0
26
+ * @version 1.122.0
27
27
  * @alias sap.ui.mdc.Element
28
28
  *
29
29
  * @borrows sap.ui.mdc.mixin.DelegateMixin.awaitControlDelegate as #awaitControlDelegate
@@ -54,11 +54,11 @@ sap.ui.define([
54
54
  * @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent, sap.m.IOverflowToolbarContent
55
55
  *
56
56
  * @author SAP SE
57
- * @version 1.121.0
57
+ * @version 1.122.0
58
58
  *
59
59
  * @constructor
60
60
  * @alias sap.ui.mdc.Field
61
- * @version 1.121.0
61
+ * @version 1.122.0
62
62
  * @since 1.54.0
63
63
  *
64
64
  * @public
@@ -45,7 +45,7 @@ sap.ui.define([
45
45
  * The metadata information is provided via the {@link module:sap/ui/mdc/FilterBarDelegate FilterBarDelegate} implementation. This implementation has to be provided by the application.
46
46
  * @extends sap.ui.mdc.filterbar.FilterBarBase
47
47
  * @author SAP SE
48
- * @version 1.121.0
48
+ * @version 1.122.0
49
49
  * @constructor
50
50
  * @public
51
51
  * @since 1.61.0
@@ -53,11 +53,11 @@ sap.ui.define([
53
53
  * @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent, sap.m.IOverflowToolbarContent
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.121.0
56
+ * @version 1.122.0
57
57
  *
58
58
  * @constructor
59
59
  * @alias sap.ui.mdc.FilterField
60
- * @version 1.121.0
60
+ * @version 1.122.0
61
61
  * @since 1.48.0
62
62
  *
63
63
  * @public
@@ -71,7 +71,7 @@ sap.ui.define([
71
71
  * @extends sap.ui.mdc.field.FieldInfoBase
72
72
  *
73
73
  * @author SAP SE
74
- * @version 1.121.0
74
+ * @version 1.122.0
75
75
  *
76
76
  * @constructor
77
77
  * @alias sap.ui.mdc.Link
@@ -155,17 +155,21 @@ sap.ui.define([
155
155
  this._oUseDelegateItemsPromise = undefined;
156
156
  this._oUseDelegateAdditionalContentPromise = undefined;
157
157
 
158
+ const fnDestroy = (vElement) => {
159
+ if (Array.isArray(vElement)) {
160
+ vElement.forEach(fnDestroy);
161
+ } else {
162
+ vElement.destroy();
163
+ }
164
+ };
165
+
158
166
  if (this._aLinkItems) {
159
- this._aLinkItems.forEach((oLinkItem) => {
160
- oLinkItem.destroy();
161
- });
167
+ this._aLinkItems.forEach(fnDestroy);
162
168
  this._aLinkItems = undefined;
163
169
  }
164
170
 
165
171
  if (this._aAdditionalContent) {
166
- this._aAdditionalContent.forEach((oLinkItem) => {
167
- oLinkItem.destroy();
168
- });
172
+ this._aAdditionalContent.forEach(fnDestroy);
169
173
  this._aAdditionalContent = undefined;
170
174
  }
171
175
 
@@ -312,8 +316,7 @@ sap.ui.define([
312
316
  }
313
317
  },
314
318
  beforeNavigationCallback: this._beforeNavigationCallback.bind(this),
315
- metadataHelperPath: "sap/ui/mdc/Link",
316
- onNavigationCallback: this._onNavigationCallback.bind(this)
319
+ metadataHelperPath: "sap/ui/mdc/Link"
317
320
  });
318
321
  oPanel.setModel(new JSONModel({
319
322
  metadata: jQuery.extend(true, [], this._getInternalModel().getProperty("/linkItems")),
@@ -336,7 +339,6 @@ sap.ui.define([
336
339
  if (aMLinkItems.length === 1 && !aAdditionalContent.length) {
337
340
  const bNavigate = await this._beforeNavigationCallback(oEvent);
338
341
  if (bNavigate) {
339
- this._onNavigationCallback(aMLinkItems[0]);
340
342
  Panel.navigate(aMLinkItems[0].href);
341
343
  }
342
344
  return bNavigate;
@@ -635,23 +637,6 @@ sap.ui.define([
635
637
  return Promise.resolve();
636
638
  };
637
639
 
638
- /**
639
- * Proxy function for the <code>onNavigationCallback</code> of the panel.
640
- * @private
641
- * @param {sap.m.Link|sap.ui.mdc.LinkItem} oLink <code>Link</code> control that is clicked or corresponding <code>LinkItem</code>
642
- */
643
- Link.prototype._onNavigationCallback = async function(oLink) {
644
- try {
645
- const oDelegate = await this.awaitControlDelegate();
646
- if (oDelegate.onNavigationCallback) { // currently only available on SmartLinkDelegate
647
- // don't return anything as we just want to call event handlings in the <code>SmartLink</code>
648
- oDelegate.onNavigationCallback(this, oLink);
649
- }
650
- } catch (e) {
651
- SapBaseLog.error("mdc.Link _onNavigationCallback: control delegate is not set - could not load onNavigationCallback from delegate.");
652
- }
653
- };
654
-
655
640
  // ------------------------------------- General internal methods ----------------------------------------------
656
641
 
657
642
  /**
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * @constructor
45
45
  * @alias sap.ui.mdc.MultiValueField
46
46
  * @author SAP SE
47
- * @version 1.121.0
47
+ * @version 1.122.0
48
48
  * @since 1.93.0
49
49
  *
50
50
  * @public
@@ -613,7 +613,7 @@ sap.ui.define([
613
613
  * @since 1.111
614
614
  */
615
615
  propertyInfo: {
616
- type: "object[]",
616
+ type: "object",
617
617
  defaultValue: []
618
618
  },
619
619
 
@@ -2599,6 +2599,8 @@ sap.ui.define([
2599
2599
  if (this._oQuickActionContainer.hasQuickActions() || this._oItemContainer.hasItems()) {
2600
2600
  this._oColumnHeaderMenu.openBy(oInnerColumn, true);
2601
2601
  PersonalizationUtils.detectUserPersonalizationCompletion(this, this._oColumnHeaderMenu);
2602
+ } else {
2603
+ MTableUtil.announceEmptyColumnMenu();
2602
2604
  }
2603
2605
  });
2604
2606
  });
@@ -65,7 +65,7 @@ sap.ui.define([
65
65
  * and {@link sap.ui.mdc.FilterField FilterField} controls using the <code>valueHelp</code> association. One <code>ValueHelp</code> element instance can be
66
66
  * assigned to multiple fields (like in different table rows). It should be placed in the control tree on the container holding the fields.
67
67
  * @extends sap.ui.mdc.Element
68
- * @version 1.121.0
68
+ * @version 1.122.0
69
69
  * @constructor
70
70
  * @abstract
71
71
  * @public
@@ -821,6 +821,7 @@ sap.ui.define([
821
821
  * @property {boolean} checkKey If set, the value help checks only if there is an item with the given key. This is set to <code>false</code> if the value cannot be a valid key because of type validation.
822
822
  * @property {boolean} checkDescription If set, the value help checks only if there is an item with the given description. This is set to <code>false</code> if only the key is used in the field.
823
823
  * @property {boolean} [caseSensitive] If set, the check is done case-sensitively
824
+ * @property {boolean} [exactMatch] If set, only exact matches are requested and no suggestions
824
825
  * @property {sap.ui.core.Control} control Instance of the calling control
825
826
  * @public
826
827
  */
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * chart/table).
24
24
  * @extends sap.ui.core.Control
25
25
  * @author SAP SE
26
- * @version 1.121.0
26
+ * @version 1.122.0
27
27
  * @constructor
28
28
  * @since 1.58
29
29
  * @public
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @class The <code>ChartImplementationContainer</code> creates a container for the <code>content</code> (chart) and <code>noDataContent</code>. Based on the <code>showNoDataStruct</code> the <code>content</code> or <code>noDataContent</code> will be shown.
22
22
  * @extends sap.ui.core.Control
23
23
  * @author SAP SE
24
- * @version 1.121.0
24
+ * @version 1.122.0
25
25
  * @constructor
26
26
  *
27
27
  * @public
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @class The <code>ChartSelectionDetails</code> control creates a <code>sap.m.SelectionDetails</code> popover based on metadata and the configuration specified.
27
27
  * @extends sap.m.SelectionDetails
28
28
  * @author SAP SE
29
- * @version 1.121.0
29
+ * @version 1.122.0
30
30
  * @constructor
31
31
  * @public
32
32
  * @since 1.88
@@ -11,7 +11,9 @@ sap.ui.define([
11
11
  "sap/m/OverflowToolbarButton",
12
12
  "sap/m/OverflowToolbarToggleButton",
13
13
  "sap/m/Title",
14
- "sap/ui/mdc/chart/ChartTypeButton",
14
+ "sap/m/IllustratedMessageType",
15
+ "sap/ui/mdc/chart/SelectionButton",
16
+ "sap/ui/mdc/chart/SelectionButtonItem",
15
17
  "./ChartSelectionDetails",
16
18
  "sap/ui/core/InvisibleText",
17
19
  "sap/m/OverflowToolbarLayoutData",
@@ -27,7 +29,9 @@ sap.ui.define([
27
29
  OverflowButton,
28
30
  OverflowToggleButton,
29
31
  Title,
30
- ChartTypeButton,
32
+ IllustratedMessageType,
33
+ SelectionButton,
34
+ SelectionButtonItem,
31
35
  ChartSelectionDetails,
32
36
  InvisibleText,
33
37
  OverflowToolbarLayoutData,
@@ -49,7 +53,7 @@ sap.ui.define([
49
53
  * @class The ChartToolbar control is a sap.m.OverflowToolbar based on metadata and the configuration specified.
50
54
  * @extends sap.ui.mdc.ActionToolbar
51
55
  * @author SAP SE
52
- * @version 1.121.0
56
+ * @version 1.122.0
53
57
  * @constructor
54
58
  * @experimental As of version 1.88
55
59
  * @private
@@ -128,19 +132,76 @@ sap.ui.define([
128
132
  const aP13nMode = oChart.getP13nMode() || [];
129
133
 
130
134
  if (aP13nMode.indexOf("Item") > -1 && (!oChart.getIgnoreToolbarActions().length || oChart.getIgnoreToolbarActions().indexOf(ChartToolbarActionType.DrillDownUp) < 0)) {
131
- this._oDrillDownBtn = new OverflowButton(oChart.getId() + "-drillDown", {
135
+ this._oDrillDownBtn = new SelectionButton(this.getId() + "-drillDown", {
132
136
  icon: "sap-icon://drill-down",
133
137
  tooltip: MDCRb.getText("chart.CHART_DRILLDOWN_TITLE"),
134
138
  text: MDCRb.getText("chart.CHART_DRILLDOWN_TITLE"),
139
+ title: MDCRb.getText("chart.CHART_DRILLDOWN_TITLE"),
140
+
141
+ noDataTitle: MDCRb.getText("chart.NO_DRILLABLE_DIMENSION"),
142
+ noDataDescription: MDCRb.getText("chart.NO_DRILLABLE_DIMENSION_DESC"),
143
+ noDataType: IllustratedMessageType.NoDimensionsSet,
144
+ searchPlaceholder: MDCRb.getText("chart.CHART_DRILLDOWN_SEARCH"),
145
+ searchEnabled: true,
146
+ sortEnabled: false,
147
+ sorted: "ascending",
148
+
135
149
  enabled: false,
150
+ type: "Transparent",
136
151
  ariaHasPopup: AriaHasPopup.ListBox,
137
152
  layoutData: new OverflowToolbarLayoutData({
138
153
  closeOverflowOnInteraction: false
139
154
  }),
140
- press: function(oEvent) {
141
- oChart._showDrillDown(this._oDrillDownBtn);
142
- }.bind(this)
155
+ beforeOpen: function(oEvent) {
156
+ const oViewByBtn = oEvent.getSource();
157
+ oViewByBtn.removeAllItems();
158
+ oViewByBtn.setSelectedItemKey("");
159
+
160
+ const fnGetDrillStackDimensions = function(oChart) {
161
+ const aDrillStack = oChart.getControlDelegate().getDrillStack(oChart);
162
+ const aStackDimensions = [];
163
+
164
+ aDrillStack.forEach((oStackEntry) => {
165
+ // loop over nested dimension arrays
166
+ oStackEntry.dimension.forEach((sDimension) => {
167
+ if (sDimension != null && sDimension != "" && aStackDimensions.indexOf(sDimension) == -1) {
168
+ aStackDimensions.push(sDimension);
169
+ }
170
+ });
171
+ });
172
+
173
+ return aStackDimensions;
174
+ };
175
+
176
+ const pSortedDimensionsPromise = oChart.getControlDelegate().getSortedDimensions(oChart);
177
+ return pSortedDimensionsPromise.then((aSortedDimensions) => {
178
+ // Ignore currently applied dimensions from drill-stack for selection
179
+ const aIgnoreDimensions = fnGetDrillStackDimensions(oChart);
180
+ aSortedDimensions = aSortedDimensions.filter((oDimension) => { return aIgnoreDimensions.indexOf(oDimension.name) < 0; });
181
+
182
+ aSortedDimensions.forEach((oDimension) => {
183
+ // oData.items.push({ text: oDimension.label, id: oDimension.name });
184
+ this._oDrillDownBtn.addItem(new SelectionButtonItem({key: oDimension.name, text: oDimension.label}));
185
+ });
186
+ oViewByBtn.setSearchEnabled(aSortedDimensions.length >= 7);
187
+ oViewByBtn._openPopover(); // in this case the beforeOpen is not able to provide all item syncron
188
+ });
189
+ }.bind(this),
190
+ itemSelected: function(oEvent) {
191
+ const sDimensionName = oEvent.getParameter("item").key;
192
+
193
+ //Call flex to capture current state before adding an item to the chart aggregation
194
+ oChart.getEngine().createChanges({
195
+ control: oChart,
196
+ key: "Item",
197
+ state: [{
198
+ name: sDimensionName,
199
+ position: oChart.getItems().length
200
+ }]
201
+ });
202
+ }
143
203
  });
204
+
144
205
  this.addEnd(this._oDrillDownBtn);
145
206
  this._chartInternalButtonsToEnable.push(this._oDrillDownBtn);
146
207
  }
@@ -219,14 +280,69 @@ sap.ui.define([
219
280
  }
220
281
 
221
282
  if (oChart._getTypeBtnActive()) {
222
- this._oChartTypeBtn = new ChartTypeButton(this.getId() + "-btnChartType", {
223
- type: "Transparent",
283
+ const sChartType = oChart.getChartType();
284
+
285
+ this._oChartTypeBtn = new SelectionButton(this.getId() + "-btnChartType", {
286
+ chartType: sChartType,
287
+
288
+ text: MDCRb.getText("chart.CHART_TYPELIST_TEXT"),
289
+ title: MDCRb.getText("chart.CHART_TYPELIST_TEXT"),
290
+ noDataTitle: MDCRb.getText("chart.NO_CHART_TYPES_AVAILABLE"),
291
+ noDataDescription: MDCRb.getText("chart.NO_CHART_TYPES_AVAILABLE_ACTION"),
292
+ noDataType: IllustratedMessageType.AddDimensions,
293
+ searchPlaceholder: MDCRb.getText("chart.CHART_TYPE_SEARCH"),
294
+ searchEnabled: true,
295
+ sortEnabled: false,
296
+
224
297
  enabled: false,
298
+ type: "Transparent",
225
299
  ariaHasPopup: AriaHasPopup.ListBox,
226
300
  layoutData: new OverflowToolbarLayoutData({
227
301
  closeOverflowOnInteraction: false
228
302
  }),
229
- chart: oChart
303
+ beforeOpen: function(oEvent) {
304
+ const oChartTypeBtn = oEvent.getSource();
305
+ // use this to update the available ChartTypes
306
+ const aAvailableChartTypes = oChart.getAvailableChartTypes();
307
+ oChartTypeBtn.removeAllItems();
308
+ aAvailableChartTypes.forEach((oChartType) => {
309
+ oChartTypeBtn.addItem(
310
+ new SelectionButtonItem({key: oChartType.key, text: oChartType.text, icon: oChartType.icon})
311
+ );
312
+ });
313
+ oChartTypeBtn.setSearchEnabled(aAvailableChartTypes.length >= 7);
314
+ },
315
+ itemSelected: function(oEvent) {
316
+ const oChartTypeBtn = oEvent.getSource();
317
+ const sChartType = oEvent.getParameter("item").key;
318
+
319
+ const oChartTypeInfo = oChart.getChartTypeInfo();
320
+ const aAvailableChartTypes = oChart.getAvailableChartTypes();
321
+ const oChartType = aAvailableChartTypes.filter((o) => {return o.key === sChartType; })[0];
322
+
323
+ oChartTypeBtn.setText(oChartType.text);
324
+ oChartTypeBtn.setTooltip(oChartTypeInfo.text);
325
+ oChartTypeBtn.setIcon(oChartType.icon);
326
+
327
+ //TODO should be done in the chart, the control should only raise an event
328
+ sap.ui.require([
329
+ "sap/ui/mdc/flexibility/Chart.flexibility"
330
+ ], (ChartFlex) => {
331
+
332
+ oChart.getEngine().createChanges({
333
+ control: oChart,
334
+ key: "Type",
335
+ state: {
336
+ properties: {
337
+ chartType: sChartType
338
+ }
339
+ }
340
+ }).then((vResult) => {
341
+ oChart.getControlDelegate().requestToolbarUpdate(oChart);
342
+ });
343
+
344
+ });
345
+ }
230
346
  });
231
347
  this.addEnd(this._oChartTypeBtn);
232
348
  this._chartInternalButtonsToEnable.push(this._oChartTypeBtn);
@@ -311,10 +427,12 @@ sap.ui.define([
311
427
  this._chartInternalButtonsToEnable.forEach((oBtn) => {
312
428
  oBtn.setEnabled(true);
313
429
  });
430
+ delete this._chartInternalButtonsToEnable;
314
431
 
315
432
  this._toolbarInitialUpdated = true;
316
433
  }
317
434
 
435
+ //TODO do we have to attach the SelectionHandler in every call or only once?
318
436
  const oSelectionHandler = oChart.getSelectionHandler();
319
437
  if (oSelectionHandler && oChart.getShowSelectionDetails()) {
320
438
  this._oChartSelectionDetails.attachSelectionHandler(oSelectionHandler.eventId, oSelectionHandler.listener);