@openui5/sap.ui.mdc 1.102.2 → 1.104.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 (256) hide show
  1. package/.reuse/dep5 +17 -0
  2. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
  3. package/THIRDPARTY.txt +35 -2
  4. package/package.json +4 -4
  5. package/src/sap/ui/mdc/.library +1 -1
  6. package/src/sap/ui/mdc/ActionToolbar.js +1 -1
  7. package/src/sap/ui/mdc/AggregationBaseDelegate.js +11 -0
  8. package/src/sap/ui/mdc/Chart.js +141 -57
  9. package/src/sap/ui/mdc/ChartDelegate.js +97 -92
  10. package/src/sap/ui/mdc/Control.js +1 -1
  11. package/src/sap/ui/mdc/Element.js +1 -1
  12. package/src/sap/ui/mdc/Field.js +2 -2
  13. package/src/sap/ui/mdc/FilterBar.js +1 -1
  14. package/src/sap/ui/mdc/FilterField.js +2 -2
  15. package/src/sap/ui/mdc/Link.js +77 -12
  16. package/src/sap/ui/mdc/LinkDelegate.js +81 -76
  17. package/src/sap/ui/mdc/MultiValueField.js +1 -1
  18. package/src/sap/ui/mdc/Table.js +7 -1
  19. package/src/sap/ui/mdc/ValueHelp.js +1 -19
  20. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +2 -1
  21. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarActionRenderer.js +1 -2
  22. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -2
  23. package/src/sap/ui/mdc/chart/ChartToolbar.js +43 -5
  24. package/src/sap/ui/mdc/chart/DrillBreadcrumbs.js +6 -2
  25. package/src/sap/ui/mdc/chart/Item.js +6 -11
  26. package/src/sap/ui/mdc/chart/PropertyHelper.js +7 -8
  27. package/src/sap/ui/mdc/chart/SelectionDetailsActions.js +2 -3
  28. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  29. package/src/sap/ui/mdc/condition/ConditionConverter.js +16 -131
  30. package/src/sap/ui/mdc/condition/ConditionModel.js +50 -21
  31. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  32. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +3 -3
  33. package/src/sap/ui/mdc/condition/Operator.js +1 -1
  34. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +1 -1
  35. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  36. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbar.designtime.js +18 -4
  37. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbarAction.designtime.js +53 -0
  38. package/src/sap/ui/mdc/designtime/chart/Chart.designtime.js +3 -0
  39. package/src/sap/ui/mdc/designtime/field/Field.designtime.js +9 -4
  40. package/src/sap/ui/mdc/designtime/table/Table.designtime.js +3 -1
  41. package/src/sap/ui/mdc/field/BoolFieldHelp.js +1 -1
  42. package/src/sap/ui/mdc/field/ConditionFieldHelp.js +1 -1
  43. package/src/sap/ui/mdc/field/ConditionType.js +135 -39
  44. package/src/sap/ui/mdc/field/ConditionsType.js +71 -10
  45. package/src/sap/ui/mdc/field/CustomFieldHelp.js +1 -2
  46. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  47. package/src/sap/ui/mdc/field/DefineConditionPanel.js +93 -81
  48. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +1 -1
  49. package/src/sap/ui/mdc/field/FieldBase.js +94 -74
  50. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +20 -1
  51. package/src/sap/ui/mdc/field/FieldHelpBase.js +1 -39
  52. package/src/sap/ui/mdc/field/FieldInfoBase.js +23 -21
  53. package/src/sap/ui/mdc/field/FieldInput.js +2 -2
  54. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  55. package/src/sap/ui/mdc/field/FieldMultiInput.js +2 -2
  56. package/src/sap/ui/mdc/field/FieldValueHelp.js +1 -1
  57. package/src/sap/ui/mdc/field/FieldValueHelpContentWrapperBase.js +1 -19
  58. package/src/sap/ui/mdc/field/FieldValueHelpMTableWrapper.js +1 -1
  59. package/src/sap/ui/mdc/field/FieldValueHelpMdcTableWrapper.js +1 -1
  60. package/src/sap/ui/mdc/field/FieldValueHelpTableWrapperBase.js +1 -1
  61. package/src/sap/ui/mdc/field/FieldValueHelpUITableWrapper.js +1 -1
  62. package/src/sap/ui/mdc/field/InParameter.js +1 -4
  63. package/src/sap/ui/mdc/field/ListFieldHelp.js +1 -1
  64. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  65. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  66. package/src/sap/ui/mdc/field/OutParameter.js +1 -1
  67. package/src/sap/ui/mdc/field/TokenDisplay.js +2 -2
  68. package/src/sap/ui/mdc/field/TokenizerDisplay.js +2 -2
  69. package/src/sap/ui/mdc/field/ValueHelpPanel.js +1 -5
  70. package/src/sap/ui/mdc/field/content/DateTimeContent.js +1 -1
  71. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +4 -4
  72. package/src/sap/ui/mdc/filterbar/IFilterContainer.js +1 -1
  73. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  74. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
  75. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  76. package/src/sap/ui/mdc/flexibility/ActionToolbar.flexibility.js +80 -4
  77. package/src/sap/ui/mdc/flexibility/AggregateFlex.js +19 -38
  78. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  79. package/src/sap/ui/mdc/flexibility/ChartTypeFlex.js +23 -41
  80. package/src/sap/ui/mdc/flexibility/ConditionFlex.js +43 -58
  81. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  82. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  83. package/src/sap/ui/mdc/flexibility/GroupFlex.js +25 -55
  84. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +38 -57
  85. package/src/sap/ui/mdc/flexibility/SortFlex.js +23 -52
  86. package/src/sap/ui/mdc/flexibility/Table.flexibility.js +3 -3
  87. package/src/sap/ui/mdc/flexibility/Util.js +82 -0
  88. package/src/sap/ui/mdc/flexibility/xConfigFlex.js +137 -0
  89. package/src/sap/ui/mdc/flp/FlpLinkDelegate.js +3 -1
  90. package/src/sap/ui/mdc/library.js +4 -15
  91. package/src/sap/ui/mdc/link/ContactDetails.js +1 -1
  92. package/src/sap/ui/mdc/link/ContactDetailsAddressItem.js +1 -1
  93. package/src/sap/ui/mdc/link/ContactDetailsEmailItem.js +1 -1
  94. package/src/sap/ui/mdc/link/ContactDetailsItem.js +1 -1
  95. package/src/sap/ui/mdc/link/ContactDetailsPhoneItem.js +1 -1
  96. package/src/sap/ui/mdc/link/Factory.js +1 -1
  97. package/src/sap/ui/mdc/link/FakeFlpConnector.js +1 -1
  98. package/src/sap/ui/mdc/link/LinkItem.js +9 -1
  99. package/src/sap/ui/mdc/link/Panel.js +26 -11
  100. package/src/sap/ui/mdc/link/PanelItem.js +10 -1
  101. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  102. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  103. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  104. package/src/sap/ui/mdc/messagebundle.properties +16 -2
  105. package/src/sap/ui/mdc/messagebundle_ar.properties +12 -2
  106. package/src/sap/ui/mdc/messagebundle_bg.properties +12 -2
  107. package/src/sap/ui/mdc/messagebundle_ca.properties +12 -2
  108. package/src/sap/ui/mdc/messagebundle_cs.properties +15 -5
  109. package/src/sap/ui/mdc/messagebundle_cy.properties +12 -2
  110. package/src/sap/ui/mdc/messagebundle_da.properties +12 -2
  111. package/src/sap/ui/mdc/messagebundle_de.properties +12 -2
  112. package/src/sap/ui/mdc/messagebundle_el.properties +24 -14
  113. package/src/sap/ui/mdc/messagebundle_en.properties +12 -2
  114. package/src/sap/ui/mdc/messagebundle_en_GB.properties +12 -2
  115. package/src/sap/ui/mdc/messagebundle_en_US_sappsd.properties +12 -2
  116. package/src/sap/ui/mdc/messagebundle_en_US_saprigi.properties +12 -2
  117. package/src/sap/ui/mdc/messagebundle_en_US_saptrc.properties +12 -2
  118. package/src/sap/ui/mdc/messagebundle_es.properties +18 -8
  119. package/src/sap/ui/mdc/messagebundle_es_MX.properties +12 -2
  120. package/src/sap/ui/mdc/messagebundle_et.properties +12 -2
  121. package/src/sap/ui/mdc/messagebundle_fi.properties +12 -2
  122. package/src/sap/ui/mdc/messagebundle_fr.properties +14 -4
  123. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +12 -2
  124. package/src/sap/ui/mdc/messagebundle_hi.properties +12 -2
  125. package/src/sap/ui/mdc/messagebundle_hr.properties +15 -5
  126. package/src/sap/ui/mdc/messagebundle_hu.properties +13 -3
  127. package/src/sap/ui/mdc/messagebundle_id.properties +12 -2
  128. package/src/sap/ui/mdc/messagebundle_it.properties +57 -47
  129. package/src/sap/ui/mdc/messagebundle_iw.properties +12 -2
  130. package/src/sap/ui/mdc/messagebundle_ja.properties +12 -2
  131. package/src/sap/ui/mdc/messagebundle_kk.properties +12 -2
  132. package/src/sap/ui/mdc/messagebundle_ko.properties +14 -4
  133. package/src/sap/ui/mdc/messagebundle_lt.properties +12 -2
  134. package/src/sap/ui/mdc/messagebundle_lv.properties +12 -2
  135. package/src/sap/ui/mdc/messagebundle_ms.properties +12 -2
  136. package/src/sap/ui/mdc/messagebundle_nl.properties +26 -16
  137. package/src/sap/ui/mdc/messagebundle_no.properties +12 -2
  138. package/src/sap/ui/mdc/messagebundle_pl.properties +12 -2
  139. package/src/sap/ui/mdc/messagebundle_pt.properties +16 -6
  140. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +12 -2
  141. package/src/sap/ui/mdc/messagebundle_ro.properties +12 -2
  142. package/src/sap/ui/mdc/messagebundle_ru.properties +12 -2
  143. package/src/sap/ui/mdc/messagebundle_sh.properties +13 -3
  144. package/src/sap/ui/mdc/messagebundle_sk.properties +12 -2
  145. package/src/sap/ui/mdc/messagebundle_sl.properties +12 -2
  146. package/src/sap/ui/mdc/messagebundle_sv.properties +12 -2
  147. package/src/sap/ui/mdc/messagebundle_th.properties +17 -7
  148. package/src/sap/ui/mdc/messagebundle_tr.properties +12 -2
  149. package/src/sap/ui/mdc/messagebundle_uk.properties +12 -2
  150. package/src/sap/ui/mdc/messagebundle_vi.properties +12 -2
  151. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +12 -2
  152. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +13 -3
  153. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  154. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  155. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  156. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  157. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
  158. package/src/sap/ui/mdc/odata/TypeUtil.js +24 -2
  159. package/src/sap/ui/mdc/odata/v4/ChartPropertyHelper.js +5 -5
  160. package/src/sap/ui/mdc/odata/v4/FieldBaseDelegate.js +6 -0
  161. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +15 -28
  162. package/src/sap/ui/mdc/odata/v4/TypeUtil.js +6 -6
  163. package/src/sap/ui/mdc/odata/v4/ValueHelpDelegate.js +0 -33
  164. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +360 -152
  165. package/src/sap/ui/mdc/p13n/Engine.js +1 -1
  166. package/src/sap/ui/mdc/p13n/PersistenceProvider.js +1 -0
  167. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  168. package/src/sap/ui/mdc/p13n/StateUtil.js +1 -1
  169. package/src/sap/ui/mdc/p13n/UIManager.js +1 -1
  170. package/src/sap/ui/mdc/p13n/modules/DefaultProviderRegistry.js +1 -1
  171. package/src/sap/ui/mdc/p13n/panels/ActionToolbarPanel.js +133 -0
  172. package/src/sap/ui/mdc/p13n/panels/AdaptFiltersPanel.js +1 -7
  173. package/src/sap/ui/mdc/p13n/panels/ChartItemPanel.js +31 -6
  174. package/src/sap/ui/mdc/p13n/panels/FilterPanel.js +7 -32
  175. package/src/sap/ui/mdc/p13n/panels/LinkSelectionPanel.js +12 -4
  176. package/src/sap/ui/mdc/p13n/subcontroller/ActionToolbarController.js +1 -1
  177. package/src/sap/ui/mdc/p13n/subcontroller/BaseController.js +1 -1
  178. package/src/sap/ui/mdc/p13n/subcontroller/LinkPanelController.js +24 -28
  179. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  180. package/src/sap/ui/mdc/table/PropertyHelper.js +30 -32
  181. package/src/sap/ui/mdc/table/ResponsiveTableType.js +2 -1
  182. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  183. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  184. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +2 -7
  185. package/src/sap/ui/mdc/table/menu/Item.js +3 -3
  186. package/src/sap/ui/mdc/table/menu/QuickActionContainer.js +34 -0
  187. package/src/sap/ui/mdc/themes/base/ValueHelpDialog.less +5 -0
  188. package/src/sap/ui/mdc/util/FilterUtil.js +2 -2
  189. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  190. package/src/sap/ui/mdc/util/PropertyHelper.js +49 -51
  191. package/src/sap/ui/mdc/util/TypeUtil.js +105 -17
  192. package/src/sap/ui/mdc/valuehelp/Dialog.js +97 -30
  193. package/src/sap/ui/mdc/valuehelp/Popover.js +48 -7
  194. package/src/sap/ui/mdc/valuehelp/base/Container.js +37 -28
  195. package/src/sap/ui/mdc/valuehelp/base/Content.js +39 -21
  196. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +5 -5
  197. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +41 -34
  198. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
  199. package/src/sap/ui/mdc/valuehelp/content/Bool.js +4 -4
  200. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +11 -3
  201. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +1 -1
  202. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +25 -3
  203. package/src/sap/ui/mdc/valuehelp/content/MTable.js +3 -3
  204. package/test/sap/ui/mdc/testutils/opa/JSDocGeneration.md +18 -0
  205. package/test/sap/ui/mdc/testutils/opa/TestLibrary.js +4 -1
  206. package/test/sap/ui/mdc/testutils/opa/Util.js +42 -0
  207. package/test/sap/ui/mdc/testutils/opa/Utils.js +22 -0
  208. package/test/sap/ui/mdc/testutils/opa/chart/ActionsBase.js +1 -1
  209. package/test/sap/ui/mdc/testutils/opa/chart/JSDoc.md +413 -0
  210. package/test/sap/ui/mdc/testutils/opa/chart/TestObjects.js +320 -264
  211. package/test/sap/ui/mdc/testutils/opa/field/Actions.js +50 -0
  212. package/test/sap/ui/mdc/testutils/opa/field/Assertions.js +40 -0
  213. package/test/sap/ui/mdc/testutils/opa/field/JSDoc.md +37 -0
  214. package/test/sap/ui/mdc/testutils/opa/field/TestObjects.js +52 -0
  215. package/test/sap/ui/mdc/testutils/opa/field/waitForField.js +36 -0
  216. package/test/sap/ui/mdc/testutils/opa/field/waitForFieldValueHelpButton.js +42 -0
  217. package/test/sap/ui/mdc/testutils/opa/filterbar/Actions.js +31 -7
  218. package/test/sap/ui/mdc/testutils/opa/filterbar/Assertions.js +53 -7
  219. package/test/sap/ui/mdc/testutils/opa/filterbar/JSDoc.md +188 -0
  220. package/test/sap/ui/mdc/testutils/opa/filterbar/TestObjects.js +79 -13
  221. package/test/sap/ui/mdc/testutils/opa/filterbar/waitForAdaptFiltersButton.js +47 -0
  222. package/test/sap/ui/mdc/testutils/opa/filterbar/waitForFilterBar.js +28 -0
  223. package/test/sap/ui/mdc/testutils/opa/filterfield/Actions.js +70 -0
  224. package/test/sap/ui/mdc/testutils/opa/filterfield/Assertions.js +87 -0
  225. package/test/sap/ui/mdc/testutils/opa/filterfield/JSDoc.md +63 -0
  226. package/test/sap/ui/mdc/testutils/opa/filterfield/TestObjects.js +71 -0
  227. package/test/sap/ui/mdc/testutils/opa/filterfield/waitForFilterField.js +36 -0
  228. package/test/sap/ui/mdc/testutils/opa/filterfield/waitForFilterFieldValueHelpButton.js +42 -0
  229. package/test/sap/ui/mdc/testutils/opa/link/JSDoc.md +136 -0
  230. package/test/sap/ui/mdc/testutils/opa/link/TestObjects.js +108 -91
  231. package/test/sap/ui/mdc/testutils/opa/p13n/Actions.js +34 -82
  232. package/test/sap/ui/mdc/testutils/opa/table/Actions.js +190 -6
  233. package/test/sap/ui/mdc/testutils/opa/table/Assertions.js +210 -0
  234. package/test/sap/ui/mdc/testutils/opa/table/JSDoc.md +205 -0
  235. package/test/sap/ui/mdc/testutils/opa/table/TestObjects.js +138 -9
  236. package/test/sap/ui/mdc/testutils/opa/table/Util.js +20 -0
  237. package/test/sap/ui/mdc/testutils/opa/table/waitForColumnHeader.js +44 -0
  238. package/test/sap/ui/mdc/testutils/opa/table/waitForListItemInDialogWithLabel.js +55 -0
  239. package/test/sap/ui/mdc/testutils/opa/table/waitForP13nButtonWithParentAndIcon.js +42 -0
  240. package/test/sap/ui/mdc/testutils/opa/table/waitForTable.js +26 -0
  241. package/test/sap/ui/mdc/testutils/opa/valueHelp/JSDoc.md +35 -0
  242. package/test/sap/ui/mdc/testutils/opa/valueHelp/TestObjects.js +7 -0
  243. package/test/sap/ui/mdc/testutils/opa/variant/Actions.js +124 -0
  244. package/test/sap/ui/mdc/testutils/opa/variant/Assertions.js +48 -0
  245. package/test/sap/ui/mdc/testutils/opa/variant/JSDoc.md +84 -0
  246. package/test/sap/ui/mdc/testutils/opa/variant/TestObjects.js +95 -0
  247. package/test/sap/ui/mdc/testutils/opa/variant/waitForVariantManager.js +43 -0
  248. package/test/sap/ui/mdc/testutils/opa/variant/waitForVariantManagerButton.js +45 -0
  249. package/test/sap/ui/mdc/testutils/opa/variant/waitForVariantManagerItem.js +54 -0
  250. package/test/sap/ui/mdc/testutils/opa/variant/waitForVariantManagerOverlay.js +44 -0
  251. package/ui5.yaml +4 -1
  252. package/src/sap/ui/mdc/flexibility/AggregationConfigFlex.js +0 -139
  253. package/src/sap/ui/mdc/odata/json/FilterBarDelegate.js +0 -155
  254. package/src/sap/ui/mdc/odata/v4/FilterBarDelegate.js +0 -750
  255. package/test/sap/ui/mdc/testutils/opa/chart/ChartNew.js +0 -24
  256. package/test/sap/ui/mdc/testutils/opa/chartNew/TestObjects.js +0 -288
@@ -16,7 +16,7 @@ sap.ui.define([
16
16
  * @param {object} [mSettings] Initial settings for the new control
17
17
  * @class A field help used in the <code>FieldInfo</code> aggregation in <code>FieldBase</code> controls that allows you to add custom content.
18
18
  * @extends sap.ui.mdc.field.FieldInfoBase
19
- * @version 1.102.2
19
+ * @version 1.104.0
20
20
  * @constructor
21
21
  * @private
22
22
  * @ui5-restricted sap.fe
@@ -17,7 +17,9 @@ sap.ui.define([
17
17
  'sap/ui/mdc/enum/BaseType',
18
18
  'sap/ui/mdc/enum/ConditionValidated',
19
19
  'sap/ui/mdc/Field',
20
- 'sap/ui/mdc/field/ListFieldHelp',
20
+ 'sap/ui/mdc/ValueHelp',
21
+ 'sap/ui/mdc/valuehelp/Popover',
22
+ 'sap/ui/mdc/valuehelp/content/FixedList',
21
23
  'sap/ui/mdc/field/ListFieldHelpItem',
22
24
  'sap/ui/model/base/ManagedObjectModel',
23
25
  'sap/ui/model/json/JSONModel',
@@ -25,7 +27,6 @@ sap.ui.define([
25
27
  'sap/ui/model/type/String',
26
28
  'sap/ui/core/library',
27
29
  'sap/ui/core/InvisibleText',
28
- 'sap/ui/core/ListItem',
29
30
  'sap/ui/layout/Grid',
30
31
  'sap/ui/layout/GridData',
31
32
  'sap/m/library',
@@ -48,7 +49,9 @@ sap.ui.define([
48
49
  BaseType,
49
50
  ConditionValidated,
50
51
  Field,
51
- ListFieldHelp,
52
+ ValueHelp,
53
+ Popover,
54
+ FixedList,
52
55
  ListFieldHelpItem,
53
56
  ManagedObjectModel,
54
57
  JSONModel,
@@ -56,7 +59,6 @@ sap.ui.define([
56
59
  StringType,
57
60
  coreLibrary,
58
61
  InvisibleText,
59
- ListItem,
60
62
  Grid,
61
63
  GridData,
62
64
  mLibrary,
@@ -91,7 +93,7 @@ sap.ui.define([
91
93
  * @extends sap.ui.core.Control
92
94
  *
93
95
  * @author SAP SE
94
- * @version 1.102.2
96
+ * @version 1.104.0
95
97
  *
96
98
  * @constructor
97
99
  * @alias sap.ui.mdc.field.DefineConditionPanel
@@ -371,90 +373,95 @@ sap.ui.define([
371
373
 
372
374
  onSelectChange: function(oEvent) {
373
375
  var oField = oEvent.getSource();
374
- var oCondition = oField.getBindingContext("$this").getObject();
375
- var aConditions = this.getConditions();
376
- var iIndex = FilterOperatorUtil.indexOfCondition(oCondition, aConditions);
377
- if (iIndex >= 0) {
378
- oCondition = aConditions[iIndex]; // to get right instance
379
- }
380
-
381
- if (!oEvent.getParameter("valid")) { // if Operator in error state -> don't update values
382
- oCondition.invalid = true;
383
- this.setProperty("conditions", aConditions, true); // do not invalidate whole DefineConditionPanel
384
- oField._sOldKey = oField.getValue();
385
- _checkInvalidInput.call(this, true); // set imediately, not only if row left
386
- return;
387
- }
388
-
389
- var sKey = oField.getValue();
390
- var sOldKey = oField._sOldKey;
391
- var oOperator = FilterOperatorUtil.getOperator(sKey); // operator must exist as List is created from valid operators
392
- var oOperatorOld = sOldKey && FilterOperatorUtil.getOperator(sOldKey);
376
+ var oPromise = oEvent.getParameter("promise"); // as with FixedList direct user input is parsed async wait for the promise
393
377
 
394
- if (oOperator && oOperatorOld) {
395
- var bUpdate = false;
378
+ oPromise.then(function (sKey) {
379
+ var sOldKey = oField._sOldKey;
380
+ var oOperator = FilterOperatorUtil.getOperator(sKey); // operator must exist as List is created from valid operators
381
+ var oOperatorOld = sOldKey && FilterOperatorUtil.getOperator(sOldKey);
382
+ var oCondition = oField.getBindingContext("$this").getObject();
383
+ var aConditions = this.getConditions();
384
+ var iIndex = FilterOperatorUtil.indexOfCondition(oCondition, aConditions);
385
+ if (iIndex >= 0) {
386
+ oCondition = aConditions[iIndex]; // to get right instance
387
+ }
396
388
 
397
- if (!deepEqual(oOperator.valueTypes[0], oOperatorOld.valueTypes[0]) && oOperator.valueTypes[0] !== Operator.ValueType.Static ) {
398
- // type changed -> remove entered value (only if changed by user in Select)
399
- // As Static text updated on condition change, don't delete it here.
400
- if (iIndex >= 0) {
401
- oCondition.values.forEach(function(value, index) {
402
- if (value !== null) {
403
- if ((oOperator.valueTypes[index] === Operator.ValueType.Self && oOperatorOld.valueTypes[index] === Operator.ValueType.SelfNoParse) ||
404
- (oOperator.valueTypes[index] === Operator.ValueType.SelfNoParse && oOperatorOld.valueTypes[index] === Operator.ValueType.Self)) {
405
- // as for Decimal values the type might change we need to format and parse again
406
- var oType = _getFieldType.call(this, oOperator.name, index);
407
- var oTypeOld = _getFieldType.call(this, oOperatorOld.name, index);
408
- var sValue = oTypeOld.formatValue(oCondition.values[index], "string");
409
- var vValue = oType.parseValue(sValue, "string");
410
- if (vValue !== oCondition.values[index]) {
411
- oCondition.values[index] = oType.parseValue(sValue, "string");
389
+ if (oOperator && oOperatorOld) {
390
+ var bUpdate = false;
391
+
392
+ if (!deepEqual(oOperator.valueTypes[0], oOperatorOld.valueTypes[0]) && oOperator.valueTypes[0] !== Operator.ValueType.Static ) {
393
+ // type changed -> remove entered value (only if changed by user in Select)
394
+ // As Static text updated on condition change, don't delete it here.
395
+ if (iIndex >= 0) {
396
+ oCondition.values.forEach(function(value, index) {
397
+ if (value !== null) {
398
+ if ((oOperator.valueTypes[index] === Operator.ValueType.Self && oOperatorOld.valueTypes[index] === Operator.ValueType.SelfNoParse) ||
399
+ (oOperator.valueTypes[index] === Operator.ValueType.SelfNoParse && oOperatorOld.valueTypes[index] === Operator.ValueType.Self)) {
400
+ // as for Decimal values the type might change we need to format and parse again
401
+ var oType = _getFieldType.call(this, oOperator.name, index);
402
+ var oTypeOld = _getFieldType.call(this, oOperatorOld.name, index);
403
+ var sValue = oTypeOld.formatValue(oCondition.values[index], "string");
404
+ var vValue = oType.parseValue(sValue, "string");
405
+ if (vValue !== oCondition.values[index]) {
406
+ oCondition.values[index] = oType.parseValue(sValue, "string");
407
+ bUpdate = true;
408
+ }
409
+ } else {
410
+ oCondition.values[index] = null;
412
411
  bUpdate = true;
413
412
  }
414
- } else {
415
- oCondition.values[index] = null;
416
- bUpdate = true;
417
413
  }
414
+ }.bind(this));
415
+ }
416
+ }
417
+
418
+ if (iIndex >= 0 && oOperator.valueDefaults) {
419
+ // sets the default values for the operator back to default, if the condition is inital or the value is null
420
+ oCondition.values.forEach(function(value, index) {
421
+ if ((oCondition.isInitial && value !== oOperator.valueDefaults[index]) || (value === null)) {
422
+ // set the default value and mark the condition as initial
423
+ oCondition.values[index] = oOperator.valueDefaults[index];
424
+ oCondition.isInitial = true;
425
+ bUpdate = true;
418
426
  }
419
- }.bind(this));
427
+ });
420
428
  }
421
- }
422
429
 
423
- if (iIndex >= 0 && oOperator.valueDefaults) {
424
- // sets the default values for the operator back to default, if the condition is inital or the value is null
425
- oCondition.values.forEach(function(value, index) {
426
- if ((oCondition.isInitial && value !== oOperator.valueDefaults[index]) || (value === null)) {
427
- // set the default value and mark the condition as initial
428
- oCondition.values[index] = oOperator.valueDefaults[index];
429
- oCondition.isInitial = true;
430
- bUpdate = true;
430
+ if (!oOperator.valueTypes[1] && oOperatorOld.valueTypes[1]) {
431
+ // switch from BT to EQ -> remove second value even if filled
432
+ if (iIndex >= 0) {
433
+ if (oCondition.values.length > 1 && oCondition.values[1]) {
434
+ oCondition.values = oCondition.values.slice(0, 1);
435
+ bUpdate = true;
436
+ }
431
437
  }
432
- });
433
- }
434
-
438
+ }
435
439
 
436
- if (!oOperator.valueTypes[1] && oOperatorOld.valueTypes[1]) {
437
- // switch from BT to EQ -> remove second value even if filled
438
- if (iIndex >= 0) {
439
- if (oCondition.values.length > 1 && oCondition.values[1]) {
440
- oCondition.values = oCondition.values.slice(0, 1);
441
- bUpdate = true;
442
- }
440
+ if (oCondition.invalid) {
441
+ delete oCondition.invalid;
442
+ bUpdate = true;
443
+ }
444
+ if (bUpdate) {
445
+ FilterOperatorUtil.checkConditionsEmpty(oCondition, _getOperators.call(this));
446
+ this.setProperty("conditions", aConditions, true); // do not invalidate whole DefineConditionPanel
447
+ _checkInvalidInput.call(this, false); // set imediately, not only if row left
443
448
  }
444
449
  }
445
450
 
446
- if (oCondition.invalid) {
447
- delete oCondition.invalid;
448
- bUpdate = true;
449
- }
450
- if (bUpdate) {
451
- FilterOperatorUtil.checkConditionsEmpty(oCondition, _getOperators.call(this));
452
- this.setProperty("conditions", aConditions, true); // do not invalidate whole DefineConditionPanel
453
- _checkInvalidInput.call(this, false); // set imediately, not only if row left
451
+ delete oField._sOldKey;
452
+ }.bind(this)).catch(function (oException) { // if Operator in error state -> don't update values
453
+ var oCondition = oField.getBindingContext("$this").getObject();
454
+ var aConditions = this.getConditions();
455
+ var iIndex = FilterOperatorUtil.indexOfCondition(oCondition, aConditions);
456
+ if (iIndex >= 0) {
457
+ oCondition = aConditions[iIndex]; // to get right instance
454
458
  }
455
- }
459
+ oCondition.invalid = true;
460
+ this.setProperty("conditions", aConditions, true); // do not invalidate whole DefineConditionPanel
461
+ oField._sOldKey = oField.getValue();
462
+ _checkInvalidInput.call(this, true); // set imediately, not only if row left
463
+ }.bind(this));
456
464
 
457
- delete oField._sOldKey;
458
465
  },
459
466
 
460
467
  onPaste: function(oEvent) {
@@ -880,16 +887,17 @@ sap.ui.define([
880
887
 
881
888
  var bHasMultipleGroups = _hasMultipleOperatorGroups.call(this);
882
889
 
883
- var sFieldHelpId = this.getId() + "--rowSelect-help";
884
- var oListFieldHelp = sap.ui.getCore().byId(sFieldHelpId);
890
+ var sFixedListId = this.getId() + "--rowSelect-help-pop-fl";
891
+ var oFixedList = sap.ui.getCore().byId(sFixedListId);
885
892
 
886
893
  var oTemplate;
887
894
  if (bHasMultipleGroups) {
888
895
  oTemplate = new ListFieldHelpItem({key: "{om>key}", text: "{om>text}", additionalText: "{om>additionalText}", groupKey: "{om>groupId}", groupText: "{om>groupText}"});
889
896
  } else {
890
- oTemplate = new ListItem({key: "{om>key}", text: "{om>text}", additionalText: "{om>additionalText}"});
897
+ oTemplate = new ListFieldHelpItem({key: "{om>key}", text: "{om>text}", additionalText: "{om>additionalText}"});
891
898
  }
892
- oListFieldHelp.bindAggregation("items", { path: 'om>/', templateShareable: false, template: oTemplate});
899
+ oFixedList.bindAggregation("items", { path: 'om>/', templateShareable: false, template: oTemplate});
900
+ oFixedList.setGroupable(bHasMultipleGroups);
893
901
 
894
902
  for (var i = 0; i < aOperators.length; i++) {
895
903
  var sOperator = aOperators[i];
@@ -1016,9 +1024,13 @@ sap.ui.define([
1016
1024
  ).addStyleClass("sapMdcDefineconditionPanel");
1017
1025
 
1018
1026
  oPanel.addDependent(
1019
- new ListFieldHelp(this.getId() + "--rowSelect-help", {
1020
- filterList: false,
1021
- useFirstMatch: true
1027
+ new ValueHelp(this.getId() + "--rowSelect-help", {
1028
+ typeahead: new Popover(this.getId() + "--rowSelect-help-pop", {
1029
+ content: [new FixedList(this.getId() + "--rowSelect-help-pop-fl", {
1030
+ filterList: false,
1031
+ useFirstMatch: true
1032
+ })]
1033
+ })
1022
1034
  })
1023
1035
  );
1024
1036
 
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  * @extends sap.ui.mdc.field.ConditionsType
47
47
  *
48
48
  * @author SAP SE
49
- * @version 1.102.2
49
+ * @version 1.104.0
50
50
  *
51
51
  * @since 1.96.0
52
52
  * @private
@@ -4,7 +4,6 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
7
- 'sap/ui/thirdparty/jquery',
8
7
  'sap/ui/Device',
9
8
  'sap/ui/mdc/enum/EditMode',
10
9
  'sap/ui/mdc/enum/FieldDisplay',
@@ -17,6 +16,7 @@ sap.ui.define([
17
16
  'sap/ui/mdc/enum/BaseType',
18
17
  'sap/ui/mdc/field/content/ContentFactory',
19
18
  'sap/ui/mdc/Control',
19
+ "sap/ui/mdc/util/loadModules",
20
20
  'sap/ui/core/library',
21
21
  'sap/ui/core/LabelEnablement',
22
22
  'sap/ui/core/message/MessageMixin',
@@ -34,7 +34,6 @@ sap.ui.define([
34
34
  'sap/base/util/restricted/_debounce',
35
35
  'sap/ui/events/KeyCodes'
36
36
  ], function(
37
- jQuery,
38
37
  Device,
39
38
  EditMode,
40
39
  FieldDisplay,
@@ -47,6 +46,7 @@ sap.ui.define([
47
46
  BaseType,
48
47
  ContentFactory,
49
48
  Control,
49
+ loadModules,
50
50
  coreLibrary,
51
51
  LabelEnablement,
52
52
  MessageMixin,
@@ -84,7 +84,7 @@ sap.ui.define([
84
84
  * @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent
85
85
  *
86
86
  * @author SAP SE
87
- * @version 1.102.2
87
+ * @version 1.104.0
88
88
  *
89
89
  * @constructor
90
90
  * @alias sap.ui.mdc.field.FieldBase
@@ -542,18 +542,27 @@ sap.ui.define([
542
542
 
543
543
  mDefaultHelps = {
544
544
  bool: {
545
- name: "sap/ui/mdc/field/BoolFieldHelp",
545
+ modules: ["sap/ui/mdc/ValueHelp", "sap/ui/mdc/valuehelp/Popover", "sap/ui/mdc/valuehelp/content/Bool"],
546
546
  id: "BoolDefaultHelp",
547
- getDelegate: "getDefaultFieldHelpBaseDelegate",
548
- properties: {},
549
- control: undefined
547
+ getDelegate: "getDefaultValueHelpDelegate",
548
+ contentProperties: {},
549
+ dialog: false,
550
+ control: undefined,
551
+ updateTitle: function (oValueHelp, sTitle) {
552
+ // no title needed for boolean help (just dropdown)
553
+ }
550
554
  },
551
555
  defineConditions: {
552
- name: "sap/ui/mdc/field/FieldValueHelp",
556
+ modules: ["sap/ui/mdc/ValueHelp", "sap/ui/mdc/valuehelp/Dialog", "sap/ui/mdc/valuehelp/content/Conditions"],
553
557
  id: "Field-DefineConditions-Help",
554
- getDelegate: "getDefaultFieldValueHelpDelegate",
555
- properties: { showConditionPanel: true },
556
- control: undefined
558
+ getDelegate: "getDefaultValueHelpDelegate",
559
+ contentProperties: {},
560
+ dialog: true,
561
+ control: undefined,
562
+ updateTitle: function (oValueHelp, sTitle) {
563
+ oValueHelp.getDialog().setTitle(sTitle);
564
+ oValueHelp.getDialog().getContent()[0].setLabel(sTitle);
565
+ }
557
566
  }
558
567
  };
559
568
 
@@ -632,7 +641,7 @@ sap.ui.define([
632
641
  if (oFieldHelp) {
633
642
  oFieldHelp.detachEvent("dataUpdate", _handleHelpDataUpdate, this);
634
643
  if (this._bConnected) {
635
- _handleDisconnect.call(this); // remove event listeners
644
+ _disconnectFieldhelp.call(this, oFieldHelp); // remove event listeners
636
645
  oFieldHelp.connect(); // disconnect FieldHelp to remove callbacks
637
646
  }
638
647
  }
@@ -1400,7 +1409,6 @@ sap.ui.define([
1400
1409
  * @MDC_PUBLIC_CANDIDATE
1401
1410
  * @experimental As of version 1.62.0
1402
1411
  * @since 1.62.0 Disclaimer: this function is in a beta state - incompatible API changes may be done before its official public release. Use at your own discretion.
1403
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
1404
1412
  */
1405
1413
  FieldBase.prototype.connectLabel = function(oLabel) {
1406
1414
 
@@ -1584,7 +1592,7 @@ sap.ui.define([
1584
1592
 
1585
1593
  if (this._oCreateContentPromise) {
1586
1594
  this._oCreateContentPromise.then(function() {
1587
- fnCreateInternalContent.call(this);
1595
+ _createInternalContentWrapper.call(this); // as already a Promise might be pending
1588
1596
  }.bind(this));
1589
1597
  } else {
1590
1598
  fnCreateInternalContent.call(this);
@@ -1596,7 +1604,7 @@ sap.ui.define([
1596
1604
  */
1597
1605
  FieldBase.prototype._checkCreateInternalContent = function() {
1598
1606
 
1599
- if (this.getVisible() && this._oContentFactory.getDataType()) {
1607
+ if (!this.bIsDestroyed && this.getVisible() && this._oContentFactory.getDataType()) {
1600
1608
  _createInternalContentWrapper.call(this);
1601
1609
  }
1602
1610
 
@@ -1864,45 +1872,45 @@ sap.ui.define([
1864
1872
 
1865
1873
  function _createDefaultFieldHelp(sType) {
1866
1874
 
1867
- this.setProperty("_fieldHelpEnabled", true, true);
1868
1875
  this._sDefaultFieldHelp = mDefaultHelps[sType].id;
1869
1876
 
1870
- var oFieldHelp = mDefaultHelps[sType].control;
1877
+ var oValueHelp = mDefaultHelps[sType].control;
1871
1878
 
1872
- if (oFieldHelp && oFieldHelp.bIsDestroyed) {
1879
+ if (oValueHelp && oValueHelp.bIsDestroyed) {
1873
1880
  // someone destroyed FieldHelp -> initialize
1874
1881
  mDefaultHelps[sType].control = undefined;
1875
- oFieldHelp = undefined;
1882
+ oValueHelp = undefined;
1876
1883
  }
1877
1884
 
1878
- if (!oFieldHelp) {
1885
+ if (!oValueHelp) {
1879
1886
  if (mDefaultHelps[sType].promise) {
1880
1887
  mDefaultHelps[sType].promise.then(_defaultFieldHelpUpdate.bind(this, mDefaultHelps[sType].id));
1881
- }
1882
- var FieldHelp = sap.ui.require(mDefaultHelps[sType].name);
1883
- if (!FieldHelp && !mDefaultHelps[sType].promise) {
1884
- mDefaultHelps[sType].promise = new Promise(function(fResolve) {
1885
- mDefaultHelps[sType].resolve = fResolve;
1886
- sap.ui.require([mDefaultHelps[sType].name], function(fnControl) {
1887
- _createDefaultFieldHelp.call(this, sType);
1888
- }.bind(this));
1889
- }.bind(this)).then(_defaultFieldHelpUpdate.bind(this, mDefaultHelps[sType].id));
1890
- }
1891
- if (FieldHelp) {
1892
- var oDelegate = this.bDelegateInitialized && this.getControlDelegate()[mDefaultHelps[sType].getDelegate]();
1893
- var oProperties = merge({ delegate: oDelegate }, mDefaultHelps[sType].properties);
1894
- oFieldHelp = new FieldHelp(mDefaultHelps[sType].id, oProperties);
1895
- oFieldHelp._bIsDefaultHelp = true;
1896
- mDefaultHelps[sType].control = oFieldHelp;
1897
- // this.addDependent(oFieldHelp); // TODO: where to add to control tree
1898
- oFieldHelp.connect(this); // to forward dataType
1899
- if (mDefaultHelps[sType].resolve) {
1900
- mDefaultHelps[sType].resolve();
1901
- delete mDefaultHelps[sType].resolve;
1902
- }
1903
- if (!mDefaultHelps[sType].promise) {
1888
+ } else {
1889
+ mDefaultHelps[sType].promise = loadModules(mDefaultHelps[sType].modules).catch(function(oError) {
1890
+ throw new Error("loadModules promise rejected in sap.ui.mdc.field.FieldBase:_createDefaultFieldHelp function call - could not load controls " + JSON.stringify(mDefaultHelps[sType].modules));
1891
+ }).then(function(aModules) {
1892
+ var ValueHelp = aModules[0];
1893
+ var Container = aModules[1];
1894
+ var Content = aModules[2];
1895
+ var oDelegate = this.bDelegateInitialized && this.getControlDelegate()[mDefaultHelps[sType].getDelegate]();
1896
+ oValueHelp = new ValueHelp(mDefaultHelps[sType].id, {
1897
+ delegate: oDelegate
1898
+ });
1899
+ var oContainer = new Container(mDefaultHelps[sType].id + "-container", {
1900
+ content: [new Content(mDefaultHelps[sType].id + "-content", mDefaultHelps[sType].contentProperties)]
1901
+ });
1902
+ oValueHelp._bIsDefaultHelp = true;
1903
+ oValueHelp._sDefaultHelpType = sType;
1904
+ mDefaultHelps[sType].control = oValueHelp;
1905
+ if (mDefaultHelps[sType].dialog) {
1906
+ oValueHelp.setDialog(oContainer);
1907
+ } else {
1908
+ oValueHelp.setTypeahead(oContainer);
1909
+ }
1910
+ // this.addDependent(oValueHelp); // TODO: where to add to control tree
1911
+ oValueHelp.connect(this); // to forward dataType
1904
1912
  _defaultFieldHelpUpdate.call(this, mDefaultHelps[sType].id);
1905
- }
1913
+ }.bind(this)).unwrap();
1906
1914
  }
1907
1915
  } else {
1908
1916
  _defaultFieldHelpUpdate.call(this, mDefaultHelps[sType].id);
@@ -2169,6 +2177,7 @@ sap.ui.define([
2169
2177
 
2170
2178
  }
2171
2179
 
2180
+ // Please note: This method may update aConditions!
2172
2181
  function _updateConditionsFromChange(oCondition, aConditions, oConditionType, bValid, vValue, oSource, oChange) {
2173
2182
 
2174
2183
  var iMaxConditions = this.getMaxConditions();
@@ -2189,7 +2198,7 @@ sap.ui.define([
2189
2198
  if (oCondition) {
2190
2199
  if (this._oContentFactory.isMeasure() && aConditions.length === 1 && aConditions[0].values[0][0] === undefined) {
2191
2200
  // remove empty condition
2192
- aConditions = [];
2201
+ aConditions.length = 0;
2193
2202
  }
2194
2203
  if (iMaxConditions !== 1 && FilterOperatorUtil.indexOfCondition(oCondition, aConditions) >= 0) {
2195
2204
  // condition already exist (only error if tokens, in SearchField it is OK)
@@ -2202,7 +2211,7 @@ sap.ui.define([
2202
2211
  aConditions.push(oCondition);
2203
2212
  }
2204
2213
  } else if (iMaxConditions === 1) {
2205
- aConditions = [];
2214
+ aConditions.length = 0;
2206
2215
  }
2207
2216
 
2208
2217
  if (!deepEqual(aConditions, this.getConditions())) {
@@ -2410,34 +2419,36 @@ sap.ui.define([
2410
2419
 
2411
2420
  function _fieldHelpChanged(sId, sMutation) {
2412
2421
 
2422
+ var oFieldHelp;
2423
+
2413
2424
  if (sMutation === "remove") {
2414
- var oFieldHelp = sap.ui.getCore().byId(sId);
2425
+ oFieldHelp = sap.ui.getCore().byId(sId);
2415
2426
  if (oFieldHelp) {
2416
- oFieldHelp.detachEvent("select", _handleFieldHelpSelect, this);
2417
- oFieldHelp.detachEvent("navigated", _handleFieldHelpNavigated, this);
2427
+ _disconnectFieldhelp.call(this, oFieldHelp);
2418
2428
  oFieldHelp.detachEvent("dataUpdate", _handleHelpDataUpdate, this);
2419
- oFieldHelp.detachEvent("disconnect", _handleDisconnect, this);
2420
- oFieldHelp.detachEvent("afterClose", _handleFieldHelpAfterClose, this);
2421
- oFieldHelp.detachEvent("switchToValueHelp", _handleFieldSwitchToValueHelp, this);
2422
2429
  }
2423
- this.setProperty("_fieldHelpEnabled", false, true);
2424
- this._bConnected = false;
2430
+ this.resetProperty("_fieldHelpEnabled");
2425
2431
  } else if (sMutation === "insert") {
2432
+ if (this._sDefaultFieldHelp && sId !== this._sDefaultFieldHelp) { // remove default help
2433
+ _fieldHelpChanged.call(this, this._sDefaultFieldHelp, "remove");
2434
+ delete this._sDefaultFieldHelp; // do not destroy as might used on other Fields too
2435
+ }
2426
2436
  _checkFieldHelpExist.call(this, sId);
2427
- }
2428
2437
 
2429
- // update icon
2430
- var oControl = this._getContent()[0];
2431
- if (oControl && oControl.setValueHelpIconSrc) {
2432
- oControl.setValueHelpIconSrc(this._getFieldHelpIcon());
2438
+ // update icon (on remove not necessary as hidden)
2439
+ var oControl = this._getContent()[0];
2440
+ if (oControl && oControl.setValueHelpIconSrc) {
2441
+ oControl.setValueHelpIconSrc(this._getFieldHelpIcon());
2442
+ }
2433
2443
  }
2444
+
2434
2445
  _handleConditionsChange.call(this, this.getConditions()); // to update descriptions
2435
2446
 
2436
2447
  }
2437
2448
 
2438
2449
  function _checkFieldHelpExist(sId) {
2439
2450
 
2440
- if (sId && !this.getProperty("_fieldHelpEnabled")) {
2451
+ if (sId && this.isPropertyInitial("_fieldHelpEnabled")) {
2441
2452
  var oFieldHelp = sap.ui.getCore().byId(sId);
2442
2453
  if (oFieldHelp) {
2443
2454
  oFieldHelp.attachEvent("dataUpdate", _handleHelpDataUpdate, this);
@@ -2574,12 +2585,12 @@ sap.ui.define([
2574
2585
  }
2575
2586
 
2576
2587
  // take what ever comes from field help as valid - even if it is an empty key
2577
- var iIndex = bAdd ? -1 : FilterOperatorUtil.indexOfCondition(oCondition, aConditions); // Why?
2578
- if (iIndex === -1) { // check if already exist
2588
+ var iIndex = FilterOperatorUtil.indexOfCondition(oCondition, aConditions); // check if already exist
2589
+ if (iIndex === -1) { // new -> add
2579
2590
  aConditions.push(oCondition);
2580
- } else if (oCondition.values[1] !== aConditions[iIndex].values[1] && aConditions[iIndex].values[1]) {
2591
+ } else if (oCondition.validated === ConditionValidated.Validated && oCondition.values.length > 1 && (aConditions[iIndex].values.length === 1 || oCondition.values[1] !== aConditions[iIndex].values[1])) {
2581
2592
  // description changed -> use the current description
2582
- aConditions[iIndex].values[1] = oCondition.values[1];
2593
+ aConditions[iIndex].values = oCondition.values;
2583
2594
  }
2584
2595
  }
2585
2596
  }
@@ -2803,13 +2814,21 @@ sap.ui.define([
2803
2814
  function _handleDisconnect(oEvent) {
2804
2815
 
2805
2816
  var oFieldHelp = _getFieldHelp.call(this);
2806
- oFieldHelp.detachEvent("select", _handleFieldHelpSelect, this);
2807
- oFieldHelp.detachEvent("navigated", _handleFieldHelpNavigated, this);
2808
- oFieldHelp.detachEvent("disconnect", _handleDisconnect, this);
2809
- oFieldHelp.detachEvent("afterClose", _handleFieldHelpAfterClose, this); // TODO: remove
2810
- oFieldHelp.detachEvent("switchToValueHelp", _handleFieldSwitchToValueHelp, this);
2811
- oFieldHelp.detachEvent("closed", _handleFieldHelpAfterClose, this);
2812
- this._bConnected = false;
2817
+ _disconnectFieldhelp.call(this, oFieldHelp);
2818
+
2819
+ }
2820
+
2821
+ function _disconnectFieldhelp(oFieldHelp) {
2822
+
2823
+ if (this._bConnected) {
2824
+ oFieldHelp.detachEvent("select", _handleFieldHelpSelect, this);
2825
+ oFieldHelp.detachEvent("navigated", _handleFieldHelpNavigated, this);
2826
+ oFieldHelp.detachEvent("disconnect", _handleDisconnect, this);
2827
+ oFieldHelp.detachEvent("afterClose", _handleFieldHelpAfterClose, this); // TODO: remove
2828
+ oFieldHelp.detachEvent("switchToValueHelp", _handleFieldSwitchToValueHelp, this);
2829
+ oFieldHelp.detachEvent("closed", _handleFieldHelpAfterClose, this);
2830
+ this._bConnected = false;
2831
+ }
2813
2832
 
2814
2833
  }
2815
2834
 
@@ -2855,9 +2874,10 @@ sap.ui.define([
2855
2874
 
2856
2875
  var oContent = this.getControlForSuggestion();
2857
2876
  _setFocusHandlingForFieldHelp.call(this, oContent);
2858
- if (oFieldHelp._bIsDefaultHelp && oFieldHelp.setTitle) {
2859
- oFieldHelp.setTitle(this.getLabel()); // use label as default title for FilterField
2860
- }
2877
+ if (oFieldHelp._bIsDefaultHelp) {
2878
+ // use label as default title for FilterField
2879
+ mDefaultHelps[oFieldHelp._sDefaultHelpType].updateTitle(oFieldHelp, this.getLabel());
2880
+ }
2861
2881
  }
2862
2882
 
2863
2883
  }
@@ -227,6 +227,7 @@ sap.ui.define([
227
227
  * @param {string} [sConditionModelName] Name of the <code>ConditionModel</code>, if bound to one
228
228
  * @param {object} oConditionPayload Additional context information for this key
229
229
  * @param {sap.ui.core.Control} [oControl] Instance if the calling control
230
+ * @param {sap.ui.model.Type} oType Type of the value
230
231
  * @returns {string|object|Promise} Description for key or object containing description, key, in and out parameters. If it is not available right away (must be requested), a <code>Promise</code> is returned.
231
232
  * @throws {sap.ui.model.FormatException} if the description cannot be determined
232
233
  * @since: 1.78.0
@@ -234,11 +235,12 @@ sap.ui.define([
234
235
  * @ui5-restricted sap.fe
235
236
  * @MDC_PUBLIC_CANDIDATE
236
237
  */
237
- FieldBaseDelegate.getDescription = function(oPayload, oFieldHelp, vKey, oInParameters, oOutParameters, oBindingContext, oConditionModel, sConditionModelName, oConditionPayload, oControl) {
238
+ FieldBaseDelegate.getDescription = function(oPayload, oFieldHelp, vKey, oInParameters, oOutParameters, oBindingContext, oConditionModel, sConditionModelName, oConditionPayload, oControl, oType) {
238
239
  if (oFieldHelp && oFieldHelp.isA("sap.ui.mdc.ValueHelp")) {
239
240
  var oConfig = {
240
241
  value: vKey,
241
242
  parsedValue: vKey,
243
+ dataType: oType,
242
244
  context: {inParameters: oInParameters, outParameters: oOutParameters, payload: oConditionPayload},
243
245
  bindingContext: oBindingContext,
244
246
  conditionModel: oConditionModel,
@@ -289,6 +291,23 @@ sap.ui.define([
289
291
 
290
292
  };
291
293
 
294
+ /**
295
+ * This function returns which <code>ValueHelpDelegate</code> is used
296
+ * if a default field help (for example, for defining conditions in </code>FilterField</code>)
297
+ * is created.
298
+ *
299
+ * @param {object} oPayload Payload for delegate
300
+ * @returns {object} Delegate object with <code>name</code and <code>payload</code>
301
+ * @private
302
+ * @ui5-restricted sap.ui.mdc.field.FieldBase
303
+ * @since 1.99.0
304
+ */
305
+ FieldBaseDelegate.getDefaultValueHelpDelegate = function(oPayload) {
306
+
307
+ return {name: "sap/ui/mdc/ValueHelpDelegate", payload: {}};
308
+
309
+ };
310
+
292
311
  FieldBaseDelegate.getTypeUtil = function (oPayload) {
293
312
  return TypeUtil;
294
313
  };