@openui5/sap.ui.mdc 1.94.0 → 1.95.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 (178) hide show
  1. package/.reuse/dep5 +1 -6
  2. package/THIRDPARTY.txt +3 -9
  3. package/package.json +4 -4
  4. package/src/sap/ui/mdc/.library +1 -1
  5. package/src/sap/ui/mdc/ActionToolbar.js +1 -1
  6. package/src/sap/ui/mdc/Chart.js +12 -5
  7. package/src/sap/ui/mdc/ChartNew.js +1 -1
  8. package/src/sap/ui/mdc/Control.js +1 -1
  9. package/src/sap/ui/mdc/Element.js +2 -2
  10. package/src/sap/ui/mdc/Field.js +2 -2
  11. package/src/sap/ui/mdc/FilterBar.js +1 -1
  12. package/src/sap/ui/mdc/FilterField.js +28 -4
  13. package/src/sap/ui/mdc/Link.js +1 -1
  14. package/src/sap/ui/mdc/MultiValueField.js +1 -1
  15. package/src/sap/ui/mdc/Table.js +44 -29
  16. package/src/sap/ui/mdc/ValueHelp.js +1459 -0
  17. package/src/sap/ui/mdc/ValueHelpDelegate.js +41 -0
  18. package/src/sap/ui/mdc/chart/ToolbarHandler.js +233 -224
  19. package/src/sap/ui/mdc/chartNew/ChartSelectionDetailsNew.js +1 -1
  20. package/src/sap/ui/mdc/chartNew/ChartToolbarNew.js +1 -1
  21. package/src/sap/ui/mdc/chartNew/ChartTypeButtonNew.js +1 -1
  22. package/src/sap/ui/mdc/chartNew/PropertyHelperNew.js +1 -1
  23. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  24. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  25. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  26. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  27. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +1 -1
  28. package/src/sap/ui/mdc/condition/Operator.js +1 -1
  29. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  30. package/src/sap/ui/mdc/enum/SelectType.js +43 -0
  31. package/src/sap/ui/mdc/field/BoolFieldHelp.js +1 -1
  32. package/src/sap/ui/mdc/field/ConditionFieldHelp.js +1 -1
  33. package/src/sap/ui/mdc/field/ConditionType.js +61 -29
  34. package/src/sap/ui/mdc/field/ConditionsType.js +2 -1
  35. package/src/sap/ui/mdc/field/CustomFieldHelp.js +1 -1
  36. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  37. package/src/sap/ui/mdc/field/DefineConditionPanel.js +13 -2
  38. package/src/sap/ui/mdc/field/FieldBase.js +81 -35
  39. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +9 -2
  40. package/src/sap/ui/mdc/field/FieldHelpBase.js +64 -4
  41. package/src/sap/ui/mdc/field/FieldInfoBase.js +1 -1
  42. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  43. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  44. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  45. package/src/sap/ui/mdc/field/FieldValueHelp.js +7 -1
  46. package/src/sap/ui/mdc/field/FieldValueHelpContentWrapperBase.js +1 -1
  47. package/src/sap/ui/mdc/field/FieldValueHelpMTableWrapper.js +1 -1
  48. package/src/sap/ui/mdc/field/FieldValueHelpMdcTableWrapper.js +1 -1
  49. package/src/sap/ui/mdc/field/FieldValueHelpTableWrapperBase.js +1 -1
  50. package/src/sap/ui/mdc/field/FieldValueHelpUITableWrapper.js +1 -1
  51. package/src/sap/ui/mdc/field/InParameter.js +1 -1
  52. package/src/sap/ui/mdc/field/ListFieldHelp.js +1 -1
  53. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  54. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  55. package/src/sap/ui/mdc/field/OutParameter.js +1 -1
  56. package/src/sap/ui/mdc/field/ValueHelpPanel.js +1 -1
  57. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +17 -9
  58. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  59. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
  60. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  61. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  62. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  63. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  64. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +203 -197
  65. package/src/sap/ui/mdc/library.js +576 -4
  66. package/src/sap/ui/mdc/link/ContactDetails.js +1 -1
  67. package/src/sap/ui/mdc/link/ContactDetailsAddressItem.js +1 -1
  68. package/src/sap/ui/mdc/link/ContactDetailsEmailItem.js +1 -1
  69. package/src/sap/ui/mdc/link/ContactDetailsItem.js +1 -1
  70. package/src/sap/ui/mdc/link/ContactDetailsPhoneItem.js +1 -1
  71. package/src/sap/ui/mdc/link/Factory.js +1 -1
  72. package/src/sap/ui/mdc/link/FakeFlpConnector.js +1 -1
  73. package/src/sap/ui/mdc/link/LinkItem.js +1 -1
  74. package/src/sap/ui/mdc/link/Panel.js +1 -1
  75. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  76. package/src/sap/ui/mdc/link/PanelListItem.js +1 -1
  77. package/src/sap/ui/mdc/link/SelectionDialog.js +1 -1
  78. package/src/sap/ui/mdc/link/SelectionDialogItem.js +1 -1
  79. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  80. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  81. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  82. package/src/sap/ui/mdc/messagebundle.properties +10 -3
  83. package/src/sap/ui/mdc/messagebundle_ar.properties +10 -3
  84. package/src/sap/ui/mdc/messagebundle_bg.properties +9 -2
  85. package/src/sap/ui/mdc/messagebundle_ca.properties +9 -2
  86. package/src/sap/ui/mdc/messagebundle_cs.properties +11 -4
  87. package/src/sap/ui/mdc/messagebundle_cy.properties +9 -2
  88. package/src/sap/ui/mdc/messagebundle_da.properties +9 -2
  89. package/src/sap/ui/mdc/messagebundle_de.properties +9 -2
  90. package/src/sap/ui/mdc/messagebundle_el.properties +10 -3
  91. package/src/sap/ui/mdc/messagebundle_en.properties +9 -2
  92. package/src/sap/ui/mdc/messagebundle_en_GB.properties +9 -2
  93. package/src/sap/ui/mdc/messagebundle_en_US_sappsd.properties +7 -2
  94. package/src/sap/ui/mdc/messagebundle_en_US_saptrc.properties +7 -2
  95. package/src/sap/ui/mdc/messagebundle_es.properties +33 -26
  96. package/src/sap/ui/mdc/messagebundle_es_MX.properties +9 -2
  97. package/src/sap/ui/mdc/messagebundle_et.properties +9 -2
  98. package/src/sap/ui/mdc/messagebundle_fi.properties +10 -3
  99. package/src/sap/ui/mdc/messagebundle_fr.properties +16 -9
  100. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +9 -2
  101. package/src/sap/ui/mdc/messagebundle_hi.properties +9 -2
  102. package/src/sap/ui/mdc/messagebundle_hr.properties +9 -2
  103. package/src/sap/ui/mdc/messagebundle_hu.properties +10 -3
  104. package/src/sap/ui/mdc/messagebundle_id.properties +9 -2
  105. package/src/sap/ui/mdc/messagebundle_it.properties +32 -25
  106. package/src/sap/ui/mdc/messagebundle_iw.properties +9 -2
  107. package/src/sap/ui/mdc/messagebundle_ja.properties +9 -2
  108. package/src/sap/ui/mdc/messagebundle_kk.properties +9 -2
  109. package/src/sap/ui/mdc/messagebundle_ko.properties +9 -2
  110. package/src/sap/ui/mdc/messagebundle_lt.properties +9 -2
  111. package/src/sap/ui/mdc/messagebundle_lv.properties +9 -2
  112. package/src/sap/ui/mdc/messagebundle_ms.properties +9 -2
  113. package/src/sap/ui/mdc/messagebundle_nl.properties +10 -3
  114. package/src/sap/ui/mdc/messagebundle_no.properties +16 -9
  115. package/src/sap/ui/mdc/messagebundle_pl.properties +13 -6
  116. package/src/sap/ui/mdc/messagebundle_pt.properties +9 -2
  117. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +9 -2
  118. package/src/sap/ui/mdc/messagebundle_ro.properties +12 -5
  119. package/src/sap/ui/mdc/messagebundle_ru.properties +9 -2
  120. package/src/sap/ui/mdc/messagebundle_sh.properties +9 -2
  121. package/src/sap/ui/mdc/messagebundle_sk.properties +10 -3
  122. package/src/sap/ui/mdc/messagebundle_sl.properties +9 -2
  123. package/src/sap/ui/mdc/messagebundle_sv.properties +10 -3
  124. package/src/sap/ui/mdc/messagebundle_th.properties +15 -8
  125. package/src/sap/ui/mdc/messagebundle_tr.properties +9 -2
  126. package/src/sap/ui/mdc/messagebundle_uk.properties +9 -2
  127. package/src/sap/ui/mdc/messagebundle_vi.properties +9 -2
  128. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +9 -2
  129. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +9 -2
  130. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  131. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  132. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  133. package/src/sap/ui/mdc/mixin/PromiseMixin.js +94 -0
  134. package/src/sap/ui/mdc/odata/v4/ChartPropertyHelperNew.js +1 -1
  135. package/src/sap/ui/mdc/odata/v4/ValueHelpDelegate.js +94 -0
  136. package/src/sap/ui/mdc/p13n/DefaultProviderRegistry.js +1 -1
  137. package/src/sap/ui/mdc/p13n/Engine.js +1 -1
  138. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  139. package/src/sap/ui/mdc/p13n/UIManager.js +1 -1
  140. package/src/sap/ui/mdc/p13n/panels/BasePanel.js +2 -2
  141. package/src/sap/ui/mdc/p13n/panels/GroupPanel.js +1 -1
  142. package/src/sap/ui/mdc/p13n/panels/ListView.js +1 -1
  143. package/src/sap/ui/mdc/p13n/panels/QueryPanel.js +1 -1
  144. package/src/sap/ui/mdc/p13n/panels/SortQueryPanel.js +1 -1
  145. package/src/sap/ui/mdc/p13n/panels/Wrapper.js +1 -1
  146. package/src/sap/ui/mdc/p13n/subcontroller/BaseController.js +1 -1
  147. package/src/sap/ui/mdc/table/Column.js +20 -4
  148. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  149. package/src/sap/ui/mdc/table/PropertyHelper.js +176 -4
  150. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  151. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +1 -1
  152. package/src/sap/ui/mdc/themes/base/ValueHelpDialog.less +51 -21
  153. package/src/sap/ui/mdc/ui/Container.js +2 -2
  154. package/src/sap/ui/mdc/ui/ContainerItem.js +2 -2
  155. package/src/sap/ui/mdc/util/Common.js +26 -0
  156. package/src/sap/ui/mdc/util/PromiseCache.js +266 -0
  157. package/src/sap/ui/mdc/util/PropertyHelper.js +19 -1
  158. package/src/sap/ui/mdc/valuehelp/Dialog.js +475 -0
  159. package/src/sap/ui/mdc/valuehelp/Popover.js +346 -0
  160. package/src/sap/ui/mdc/valuehelp/base/Container.js +440 -0
  161. package/src/sap/ui/mdc/valuehelp/base/Content.js +442 -0
  162. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +96 -0
  163. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +537 -0
  164. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +105 -0
  165. package/src/sap/ui/mdc/valuehelp/content/Bool.js +232 -0
  166. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +250 -0
  167. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +504 -0
  168. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +619 -0
  169. package/src/sap/ui/mdc/valuehelp/content/MTable.js +881 -0
  170. package/test/sap/ui/mdc/testutils/opa/TestLibrary.js +2 -2
  171. package/test/sap/ui/mdc/testutils/opa/filterbar/Actions.js +250 -0
  172. package/test/sap/ui/mdc/testutils/opa/filterbar/Assertions.js +91 -0
  173. package/test/sap/ui/mdc/testutils/opa/filterbar/TestObjects.js +137 -0
  174. package/test/sap/ui/mdc/testutils/opa/filterbar/Util.js +25 -0
  175. package/test/sap/ui/mdc/testutils/opa/p13n/Actions.js +239 -77
  176. package/test/sap/ui/mdc/testutils/opa/p13n/Util.js +2 -1
  177. package/test/sap/ui/mdc/testutils/opa/p13n/{waitForP13nButtonWithParentAndIcon.js → waitForP13nButtonWithMatchers.js} +5 -18
  178. package/test/sap/ui/mdc/testutils/opa/table/TestObjects.js +0 -1
@@ -88,10 +88,13 @@
88
88
  }
89
89
 
90
90
  // makes the IconTab Header hidden when only one tabs exist
91
- .sapMdcValueHelpPanel .sapMdcNoHeader .sapMITH {
92
- visibility: hidden;
93
- height: 0px;
94
- }
91
+ // .sapMdcValueHelpPanel .sapMdcNoHeader .sapMITH {
92
+ // display: none;
93
+ // }
94
+
95
+ .sapMdcNoHeader > div:first-child {
96
+ display: none;
97
+ }
95
98
 
96
99
  .sapUiMdcDefineConditionPanel .sapUiMdcDefineConditionGrid {
97
100
  margin-bottom: 0.5rem;
@@ -99,8 +102,8 @@
99
102
 
100
103
  // give the Filterbar the required padding and max height
101
104
  .sapMdcValueHelpPanelFilterbar {
102
- margin-left: 2rem;
103
- margin-right: 1rem;
105
+ margin-left: 2rem;
106
+ margin-right: 1rem;
104
107
  }
105
108
 
106
109
  // allign static text
@@ -139,12 +142,12 @@
139
142
  // hide the toolbar border and give some more top margin
140
143
  .sapMdcValueHelpPanel .sapMTBStandard {
141
144
  margin-top: 0.5rem;
142
- border-bottom: solid 1px transparent;
145
+ border-bottom: solid 1px transparent;
143
146
  }
144
147
 
145
148
  // hide the panel bottom border
146
149
  .sapMdcValueHelpPanel .sapMPanelContent:not(.sapMPanelBGTransparent) {
147
- border-bottom: none;
150
+ border-bottom: none;
148
151
  }
149
152
 
150
153
 
@@ -160,29 +163,56 @@
160
163
  font-size: @sapMFontHeader5Size
161
164
  }
162
165
 
163
- // scrollbar for Table if FixFlex is fix
164
- .sapMdcValueHelpPanel .sapUiFixFlexScrolling .sapMdcTablePanel {
165
- height: 200px !important;
166
- }
167
-
168
166
  // make the title shadows transparent
169
- .sapMdcValueHelpTitle.sapMDialog:not(.sapMDialogWithSubHeader) > header:first-of-type .sapMIBar {
170
- box-shadow: inset 0 -0.0625rem transparent;
167
+ .sapMdcValueHelpTitleShadow.sapMDialog:not(.sapMDialogWithSubHeader) > header:first-of-type .sapMIBar {
168
+ box-shadow: inset 0 -0.0625rem transparent;
171
169
  }
172
170
 
173
- .sapMdcValueHelpTitle.sapMBar {
174
- box-shadow: inset 0 -0.0625rem transparent;
171
+ .sapMdcValueHelpTitleShadow.sapMBar {
172
+ box-shadow: inset 0 -0.0625rem transparent;
175
173
  }
176
174
 
177
175
  // remove some borders around the IconTabBar content
178
176
  .sapMdcValueHelpPanel .sapMITBContent {
179
- border-left: none;
180
- border-right: none;
181
- border-bottom: none;
177
+ border-left: none;
178
+ border-right: none;
179
+ border-bottom: none;
182
180
  }
183
181
 
184
182
  // set the 2rem padding also on the OK and Cancel buttons in the footer
185
183
  .sapMdcValueHelpTitle.sapMDialog footer .sapMTB {
186
- padding: 0 2rem;
184
+ padding: 0 2rem;
185
+ }
186
+
187
+
188
+ .sapMdcValueHelpPanelTableBox {
189
+ padding: 0 2rem;
190
+ }
191
+
192
+ .sapMdcValueHelpPanelTableBox > .sapMFlexItem {
193
+ //min-height: 200px !important;
194
+ height: 100%;
195
+ }
196
+
197
+ .sapMdcValueHelpPanelTableBox .sapUiMdcTable .sapMTBStandard {
198
+ margin-top: 0;
199
+ }
200
+
201
+ .sapMdcValueHelpPanel .sapUiFixFlexScrolling .sapMdcValueHelpPanelTableBox {
202
+ height: 200px !important;
203
+ }
204
+
205
+ .sapMdcValueHelpPanelTableBox .sapUiMdcTable .sapMTitleTB {
206
+ font-size: 1rem;
207
+ }
208
+
209
+ .sapMdcValueHelpPopover.sapMdcValueHelpMultiSelect .sapUiMdcDefineConditionPanel {
210
+ margin-left: 1rem;
211
+ margin-top: 1rem;
187
212
  }
188
213
 
214
+ .sapMdcValueHelpPopover.sapMdcValueHelpSingleSelect .sapUiMdcDefineConditionPanel {
215
+ margin-left: 0rem;
216
+ margin-right: 0.75rem;
217
+ margin-top: 1rem;
218
+ }
@@ -22,12 +22,12 @@ sap.ui.define([
22
22
  * @extends sap.ui.core.Control
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.94.0
25
+ * @version 1.95.0
26
26
  *
27
27
  * @constructor
28
28
  * @alias sap.ui.mdc.ui.Container
29
29
  * @author SAP SE
30
- * @version 1.94.0
30
+ * @version 1.95.0
31
31
  * @since 1.85.0
32
32
  *
33
33
  * @private
@@ -20,12 +20,12 @@ sap.ui.define(['sap/ui/core/Element'],
20
20
  * @extends sap.ui.core.Element
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.94.0
23
+ * @version 1.95.0
24
24
  *
25
25
  * @constructor
26
26
  * @alias sap.ui.mdc.ui.ContainerItem
27
27
  * @author SAP SE
28
- * @version 1.94.0
28
+ * @version 1.95.0
29
29
  * @since 1.85.0
30
30
  *
31
31
  * @private
@@ -0,0 +1,26 @@
1
+ /*
2
+ * ! OpenUI5
3
+ * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ sap.ui.define([], function() {
8
+ "use strict";
9
+
10
+ var Common = {
11
+ cleanup: function (oTarget, aFields) {
12
+ aFields.forEach(function (sField) {
13
+ var oRemovable = oTarget[sField];
14
+ if (oRemovable) {
15
+ if (oRemovable.destroy && !oRemovable.bIsDestroyed) {
16
+ oRemovable.destroy();
17
+ }
18
+ oTarget[sField] = null;
19
+ }
20
+ });
21
+ }
22
+ };
23
+
24
+ return Common;
25
+
26
+ }, /* bExport= */true);
@@ -0,0 +1,266 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+ sap.ui.define(
7
+ ["sap/ui/base/Object"],
8
+ function (BaseObject) {
9
+ "use strict";
10
+
11
+ var _checkAndPrepareAdd = function (sName) {
12
+ if (!sName) {
13
+ throw new Error("PromiseCache: Please provide an identifier!");
14
+ }
15
+ if (this._oCache && this._oCache[sName]) {
16
+ this.remove.call(this, sName);
17
+ }
18
+ };
19
+
20
+ var _findKeyForPromise = function (oPromise) {
21
+ if (typeof oPromise === "object" && this._oCache) {
22
+ for (var sKey in this._oCache) {
23
+ if (this._oCache[sKey].promise === oPromise) {
24
+ return sKey;
25
+ }
26
+ }
27
+ }
28
+ };
29
+
30
+ var _findConfigByKeyOrPromise = function (vPromise, bThrow) {
31
+ var sKey = typeof vPromise === "string" ? vPromise : _findKeyForPromise.call(this, vPromise);
32
+ var oConfig = sKey && this._oCache && this._oCache[sKey];
33
+
34
+ if (bThrow && !oConfig) {
35
+ throw new Error("PromiseCache: Promise not found!");
36
+ }
37
+
38
+ return oConfig;
39
+ };
40
+
41
+ /**
42
+ * Provides a caching mechanism for promises.
43
+ * This API features Promise cancellation: resolve or reject handlers won't be called after removal of the promise, cache destruction or manual cancellation.
44
+ * Destroying the cache will cancel all registered promises and delete references. Convenience methods for promise creation, wrapping and replacement are offered.
45
+ *
46
+ * @author SAP SE
47
+ * @version 1.95.0
48
+ * @alias sap.ui.mdc.util.PromiseCache
49
+ * @namespace
50
+ * @since 1.85.0
51
+ * @private
52
+ * @experimental
53
+ * @ui5-restricted sap.ui.mdc
54
+ */
55
+ var PromiseCache = BaseObject.extend("sap.ui.mdc.util.PromiseCache", {
56
+ /**
57
+ * Constructor.
58
+ */
59
+ constructor: function () {
60
+ this._oCache = {};
61
+ },
62
+ /**
63
+ * Adds a promise to the promise cache using a string identifier and a creation method or given <code>Promise</code>.
64
+ * Calling add using an already existing identifier will cancel and replace the existing promise.
65
+ *
66
+ * Note: All unsettled promises will be cancelled on removal or cache destruction
67
+ * A given creation method will receive the following arguments on execution:
68
+ * <ul>
69
+ * <li><code>oPromise</code> ­- The newly created Promise</li>
70
+ * <li><code>fnResolve</code> ­- Resolve method for the newly created Promise</li>
71
+ * <li><code>fnReject</code> ­- Reject method for the newly created Promise</li>
72
+ * <li><code>fnRemove</code> ­- Remove method for the newly created Promise</li>
73
+ * </ul>
74
+ *
75
+ * @protected
76
+ * @param {string} [sName] Promise identifier
77
+ * @param {function(oPromise,fnResolve,fnReject,fnRemove)|Promise} [fnCreate] creation method or pre-created promise
78
+ * @returns {Promise} Returns the newly created <code>Promise</code>
79
+ */
80
+ add: function (sName, fnCreate) {
81
+ _checkAndPrepareAdd.call(this, sName);
82
+ var oPromiseConfig = {};
83
+ this._oCache[sName] = oPromiseConfig;
84
+
85
+ oPromiseConfig.promise = new Promise(function (resolve, reject) {
86
+ oPromiseConfig.resolve = function (oResult) {
87
+ if (!oPromiseConfig._isCanceled) {
88
+ oPromiseConfig._isSettled = true;
89
+ resolve(oResult);
90
+ }
91
+ };
92
+ oPromiseConfig.reject = function (oErr) {
93
+ if (!oPromiseConfig._isCanceled) {
94
+ oPromiseConfig._isSettled = true;
95
+ reject(oErr);
96
+ }
97
+ };
98
+ });
99
+
100
+ oPromiseConfig.promise.isSettled = function () {
101
+ return !!oPromiseConfig._isSettled;
102
+ };
103
+
104
+ oPromiseConfig.promise.isCanceled = function () {
105
+ return !!oPromiseConfig._isCanceled;
106
+ };
107
+
108
+ oPromiseConfig.promise.getInternalPromise = function () {
109
+ return oPromiseConfig._promise;
110
+ };
111
+
112
+ if (fnCreate) {
113
+ var bIsCreateFunction = typeof fnCreate === "function";
114
+ var bIsCreatePromise = !bIsCreateFunction && typeof fnCreate.then === "function";
115
+
116
+ if (!bIsCreateFunction && !bIsCreatePromise) {
117
+ throw new Error("PromiseCache: fnCreate must be a promise or function");
118
+ }
119
+
120
+ var oCreateResult = bIsCreateFunction ? fnCreate() : fnCreate;
121
+ var bIsCreateResultPromise = oCreateResult && typeof oCreateResult.then === "function";
122
+
123
+ if (bIsCreateResultPromise) { // handle internal promise
124
+ oPromiseConfig._promise = oCreateResult;
125
+ oPromiseConfig._promise.then(function (vResult) {
126
+ if (!oPromiseConfig._isCanceled) {
127
+ oPromiseConfig._isSettled = true;
128
+ oPromiseConfig.resolve(vResult);
129
+ }
130
+ return vResult;
131
+ }, function (vErr) {
132
+ if (!oPromiseConfig._isCanceled) {
133
+ oPromiseConfig._isSettled = true;
134
+ oPromiseConfig.reject(vErr);
135
+ }
136
+ });
137
+ } else { // handle non-promise results
138
+ oPromiseConfig.resolve(oCreateResult);
139
+ }
140
+ }
141
+
142
+ return this._oCache[sName].promise;
143
+ },
144
+ /**
145
+ * Cancels an unsettled promise from the promise cache.
146
+ * Calling cancel twice is a no-op.
147
+ *
148
+ * @protected
149
+ * @param {string|Promise} vPromise Promise or identifier
150
+ * @returns {Promise} Returns the canceled <code>Promise</code>
151
+ */
152
+ cancel: function (vPromise) {
153
+ var oPromiseConfig = _findConfigByKeyOrPromise.call(this, vPromise, true);
154
+ if (!oPromiseConfig._isSettled) {
155
+ oPromiseConfig._isCanceled = true;
156
+ }
157
+ return oPromiseConfig.promise;
158
+ },
159
+ /**
160
+ * Retrieves an existing promise from the promise cache.
161
+ * Automatically creates and returns a new promise if <code>fnCreate</code> is given.
162
+ *
163
+ * A given creation method will receive the following arguments on execution:
164
+ * <ul>
165
+ * <li><code>oPromise</code> ­- The newly created Promise</li>
166
+ * <li><code>fnResolve</code> ­- Resolve method for the newly created Promise</li>
167
+ * <li><code>fnReject</code> ­- Reject method for the newly created Promise</li>
168
+ * <li><code>fnRemove</code> ­- Remove method for the newly created Promise</li>
169
+ * </ul>
170
+ *
171
+ * @protected
172
+ * @param {string} sName Promise identifier
173
+ * @param {function(oPromise,fnResolve,fnReject,fnRemove)|Promise} [fnCreate] creation method or pre-created promise
174
+ * @returns {Promise} Returns the newly created <code>Promise</code>
175
+ */
176
+ retrieve: function (sName, fnCreate) {
177
+ var oPromiseConfig = this._oCache && this._oCache[sName];
178
+ if (!oPromiseConfig && fnCreate) {
179
+ return this.add.apply(this, [sName, fnCreate]);
180
+ }
181
+ return oPromiseConfig && oPromiseConfig.promise;
182
+ },
183
+
184
+ /**
185
+ * Retrieves multiple promises from the promise cache
186
+ * Will return all cached promises if no arguments are given
187
+ *
188
+ * @protected
189
+ * @param {...string} sName Promise identifier(s)
190
+ * @returns {Array} Returns the retrieved promises
191
+ */
192
+ retrieveMany: function () {
193
+ var aResults = [];
194
+ var aKeys = arguments.length
195
+ ? [].slice.call(arguments)
196
+ : Object.keys(this._oCache);
197
+ for (var i = 0; i < aKeys.length; i++) {
198
+ aResults.push(this.retrieve(aKeys[i].toString()));
199
+ }
200
+ return aResults;
201
+ },
202
+ /**
203
+ * Removes an existing promise from the promise cache
204
+ *
205
+ * @protected
206
+ * @param {string|Promise} vPromise Promise or identifier
207
+ */
208
+ remove: function (vPromise) {
209
+ var sKey = typeof vPromise === "string" ? vPromise : _findKeyForPromise.call(this, vPromise);
210
+ var oConfig = sKey && this._oCache && this._oCache[sKey];
211
+ if (oConfig) {
212
+ oConfig._isCanceled = true;
213
+ delete this._oCache[sKey];
214
+ }
215
+ },
216
+ /**
217
+ * Resolves an existing promise from the promise cache
218
+ *
219
+ * @protected
220
+ * @param {string|Promise} vPromise Promise or identifier
221
+ * @param {string} [oValue] Promise result
222
+ * @returns {Promise} Returns the resolved <code>Promise</code>
223
+ */
224
+ resolve: function (vPromise, oValue) {
225
+ var oConfig = _findConfigByKeyOrPromise.call(this, vPromise, true);
226
+ oConfig.resolve(oValue);
227
+ return oConfig.promise;
228
+ },
229
+ /**
230
+ * Rejects an existing promise from the promise cache
231
+ *
232
+ * @protected
233
+ * @param {string|Promise} vPromise Promise or identifier
234
+ * @param {string} [oValue] Promise error
235
+ * @returns {Promise} Returns the rejected <code>Promise</code>
236
+ */
237
+ reject: function (vPromise, oValue) {
238
+ var oConfig = _findConfigByKeyOrPromise.call(this, vPromise, true);
239
+ oConfig.reject(oValue);
240
+ return oConfig.promise;
241
+ },
242
+ /**
243
+ * Provides cleanup functionality for the promise cache
244
+ *
245
+ * @protected
246
+ */
247
+ clear: function () {
248
+ Object.keys(this._oCache).forEach(
249
+ function (sKey) {
250
+ this.remove(sKey);
251
+ }.bind(this)
252
+ );
253
+ },
254
+ /**
255
+ * Provides cleanup functionality for the promise cache
256
+ *
257
+ * @protected
258
+ */
259
+ destroy: function () {
260
+ this.clear();
261
+ this._oCache = null;
262
+ }
263
+ });
264
+ return PromiseCache;
265
+ }
266
+ );
@@ -137,6 +137,9 @@ sap.ui.define([
137
137
  type: "object",
138
138
  allowedForComplexProperty: true
139
139
  },
140
+ visualSettings: { // This object contains all relevant properties for visual adjustments
141
+ type: "object"
142
+ },
140
143
 
141
144
  // Chart
142
145
 
@@ -409,7 +412,7 @@ sap.ui.define([
409
412
  * @extends sap.ui.base.Object
410
413
  *
411
414
  * @author SAP SE
412
- * @version 1.94.0
415
+ * @version 1.95.0
413
416
  *
414
417
  * @private
415
418
  * @experimental
@@ -983,6 +986,21 @@ sap.ui.define([
983
986
  };
984
987
  aPropertyMethods.push("getExportSettings");
985
988
 
989
+ /**
990
+ * Gets the visual settings.
991
+ *
992
+ * @function
993
+ * @name getVisualSettings
994
+ * @param {string} sName Name of a property
995
+ * @returns {object|false|null} The visual settings
996
+ * @public
997
+ */
998
+ PropertyHelper.prototype.getVisualSettings = function(sName) {
999
+ var oProperty = this.getProperty(sName);
1000
+ return oProperty ? oProperty.visualSettings : null;
1001
+ };
1002
+ aPropertyMethods.push("getVisualSettings");
1003
+
986
1004
  /**
987
1005
  * Gets the unique name (key) of a property.
988
1006
  *