@openui5/sap.ui.mdc 1.101.0 → 1.102.2

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 (186) hide show
  1. package/.eslintrc.json +19 -0
  2. package/THIRDPARTY.txt +1 -1
  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 +1 -1
  7. package/src/sap/ui/mdc/Control.js +1 -1
  8. package/src/sap/ui/mdc/Element.js +1 -1
  9. package/src/sap/ui/mdc/Field.js +9 -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 +1 -1
  13. package/src/sap/ui/mdc/MultiValueField.js +1 -1
  14. package/src/sap/ui/mdc/Table.js +114 -160
  15. package/src/sap/ui/mdc/TableDelegate.js +28 -32
  16. package/src/sap/ui/mdc/ValueHelp.js +20 -14
  17. package/src/sap/ui/mdc/ValueHelpDelegate.js +9 -3
  18. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -1
  19. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  20. package/src/sap/ui/mdc/chart/ChartToolbar.js +5 -2
  21. package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
  22. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  23. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  24. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  25. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  26. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +9 -9
  27. package/src/sap/ui/mdc/condition/Operator.js +85 -15
  28. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +5 -3
  29. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  30. package/src/sap/ui/mdc/designtime/chart/Chart.designtime.js +13 -1
  31. package/src/sap/ui/mdc/enum/PropagationReason.js +2 -2
  32. package/src/sap/ui/mdc/enum/SelectType.js +3 -0
  33. package/src/sap/ui/mdc/field/BoolFieldHelp.js +1 -1
  34. package/src/sap/ui/mdc/field/ConditionFieldHelp.js +1 -1
  35. package/src/sap/ui/mdc/field/ConditionType.js +32 -14
  36. package/src/sap/ui/mdc/field/ConditionsType.js +6 -2
  37. package/src/sap/ui/mdc/field/CustomFieldHelp.js +1 -1
  38. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  39. package/src/sap/ui/mdc/field/DefineConditionPanel.js +15 -19
  40. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +9 -62
  41. package/src/sap/ui/mdc/field/FieldBase.js +18 -4
  42. package/src/sap/ui/mdc/field/FieldHelpBase.js +1 -1
  43. package/src/sap/ui/mdc/field/FieldInfoBase.js +1 -1
  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/FieldValueHelp.js +1 -1
  48. package/src/sap/ui/mdc/field/FieldValueHelpContentWrapperBase.js +1 -1
  49. package/src/sap/ui/mdc/field/FieldValueHelpMTableWrapper.js +3 -1
  50. package/src/sap/ui/mdc/field/FieldValueHelpMdcTableWrapper.js +13 -1
  51. package/src/sap/ui/mdc/field/FieldValueHelpTableWrapperBase.js +3 -3
  52. package/src/sap/ui/mdc/field/FieldValueHelpUITableWrapper.js +28 -29
  53. package/src/sap/ui/mdc/field/InParameter.js +1 -1
  54. package/src/sap/ui/mdc/field/ListFieldHelp.js +1 -1
  55. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  56. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  57. package/src/sap/ui/mdc/field/OutParameter.js +1 -1
  58. package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
  59. package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
  60. package/src/sap/ui/mdc/field/ValueHelpPanel.js +1 -1
  61. package/src/sap/ui/mdc/field/content/ContentFactory.js +8 -0
  62. package/src/sap/ui/mdc/field/content/DateContent.js +3 -3
  63. package/src/sap/ui/mdc/field/content/DateTimeContent.js +43 -2
  64. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +1 -1
  65. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  66. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +21 -1
  67. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  68. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  69. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  70. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  71. package/src/sap/ui/mdc/library.js +4 -4
  72. package/src/sap/ui/mdc/link/ContactDetails.js +1 -1
  73. package/src/sap/ui/mdc/link/ContactDetailsAddressItem.js +1 -1
  74. package/src/sap/ui/mdc/link/ContactDetailsEmailItem.js +1 -1
  75. package/src/sap/ui/mdc/link/ContactDetailsItem.js +1 -1
  76. package/src/sap/ui/mdc/link/ContactDetailsPhoneItem.js +1 -1
  77. package/src/sap/ui/mdc/link/ContactDetailsRenderer.js +1 -1
  78. package/src/sap/ui/mdc/link/Factory.js +1 -1
  79. package/src/sap/ui/mdc/link/FakeFlpConnector.js +1 -1
  80. package/src/sap/ui/mdc/link/LinkItem.js +1 -1
  81. package/src/sap/ui/mdc/link/Panel.js +2 -4
  82. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  83. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  84. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  85. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  86. package/src/sap/ui/mdc/messagebundle.properties +4 -2
  87. package/src/sap/ui/mdc/messagebundle_ar.properties +3 -3
  88. package/src/sap/ui/mdc/messagebundle_bg.properties +1 -1
  89. package/src/sap/ui/mdc/messagebundle_ca.properties +1 -1
  90. package/src/sap/ui/mdc/messagebundle_cs.properties +1 -1
  91. package/src/sap/ui/mdc/messagebundle_cy.properties +1 -1
  92. package/src/sap/ui/mdc/messagebundle_da.properties +1 -1
  93. package/src/sap/ui/mdc/messagebundle_de.properties +1 -1
  94. package/src/sap/ui/mdc/messagebundle_el.properties +1 -1
  95. package/src/sap/ui/mdc/messagebundle_en.properties +1 -1
  96. package/src/sap/ui/mdc/messagebundle_en_GB.properties +1 -1
  97. package/src/sap/ui/mdc/messagebundle_en_US_sappsd.properties +1 -1
  98. package/src/sap/ui/mdc/messagebundle_es.properties +1 -1
  99. package/src/sap/ui/mdc/messagebundle_es_MX.properties +1 -1
  100. package/src/sap/ui/mdc/messagebundle_et.properties +1 -1
  101. package/src/sap/ui/mdc/messagebundle_fi.properties +1 -1
  102. package/src/sap/ui/mdc/messagebundle_fr.properties +1 -1
  103. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +1 -1
  104. package/src/sap/ui/mdc/messagebundle_hi.properties +1 -1
  105. package/src/sap/ui/mdc/messagebundle_hr.properties +1 -1
  106. package/src/sap/ui/mdc/messagebundle_hu.properties +1 -1
  107. package/src/sap/ui/mdc/messagebundle_id.properties +1 -1
  108. package/src/sap/ui/mdc/messagebundle_it.properties +1 -1
  109. package/src/sap/ui/mdc/messagebundle_iw.properties +1 -1
  110. package/src/sap/ui/mdc/messagebundle_ja.properties +1 -1
  111. package/src/sap/ui/mdc/messagebundle_kk.properties +1 -1
  112. package/src/sap/ui/mdc/messagebundle_ko.properties +1 -1
  113. package/src/sap/ui/mdc/messagebundle_lt.properties +1 -1
  114. package/src/sap/ui/mdc/messagebundle_lv.properties +1 -1
  115. package/src/sap/ui/mdc/messagebundle_ms.properties +1 -1
  116. package/src/sap/ui/mdc/messagebundle_nl.properties +1 -1
  117. package/src/sap/ui/mdc/messagebundle_no.properties +1 -1
  118. package/src/sap/ui/mdc/messagebundle_pl.properties +1 -1
  119. package/src/sap/ui/mdc/messagebundle_pt.properties +6 -6
  120. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +1 -1
  121. package/src/sap/ui/mdc/messagebundle_ro.properties +1 -1
  122. package/src/sap/ui/mdc/messagebundle_ru.properties +1 -1
  123. package/src/sap/ui/mdc/messagebundle_sh.properties +1 -1
  124. package/src/sap/ui/mdc/messagebundle_sk.properties +1 -1
  125. package/src/sap/ui/mdc/messagebundle_sl.properties +1 -1
  126. package/src/sap/ui/mdc/messagebundle_sv.properties +1 -1
  127. package/src/sap/ui/mdc/messagebundle_th.properties +1 -1
  128. package/src/sap/ui/mdc/messagebundle_tr.properties +3 -3
  129. package/src/sap/ui/mdc/messagebundle_uk.properties +1 -1
  130. package/src/sap/ui/mdc/messagebundle_vi.properties +1 -1
  131. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +1 -1
  132. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +1 -1
  133. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  134. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  135. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  136. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  137. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +4 -4
  138. package/src/sap/ui/mdc/odata/TypeUtil.js +1 -0
  139. package/src/sap/ui/mdc/odata/v4/ChartPropertyHelper.js +1 -1
  140. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +53 -16
  141. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +19 -3
  142. package/src/sap/ui/mdc/p13n/Engine.js +8 -4
  143. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  144. package/src/sap/ui/mdc/p13n/UIManager.js +1 -1
  145. package/src/sap/ui/mdc/p13n/modules/DefaultProviderRegistry.js +14 -11
  146. package/src/sap/ui/mdc/p13n/panels/FilterPanel.js +42 -18
  147. package/src/sap/ui/mdc/p13n/panels/GroupView.js +1 -0
  148. package/src/sap/ui/mdc/p13n/subcontroller/BaseController.js +1 -1
  149. package/src/sap/ui/mdc/table/Column.js +4 -1
  150. package/src/sap/ui/mdc/table/CreationRow.js +3 -1
  151. package/src/sap/ui/mdc/table/GridTableType.js +0 -5
  152. package/src/sap/ui/mdc/table/PropertyHelper.js +27 -74
  153. package/src/sap/ui/mdc/table/ResponsiveTableType.js +29 -17
  154. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  155. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  156. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +1 -1
  157. package/src/sap/ui/mdc/table/menu/QuickActionContainer.js +3 -3
  158. package/src/sap/ui/mdc/themes/base/Chart.less +5 -0
  159. package/src/sap/ui/mdc/util/DateUtil.js +30 -5
  160. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  161. package/src/sap/ui/mdc/util/PropertyHelper.js +1 -1
  162. package/src/sap/ui/mdc/valuehelp/Dialog.js +61 -26
  163. package/src/sap/ui/mdc/valuehelp/Popover.js +2 -2
  164. package/src/sap/ui/mdc/valuehelp/base/Container.js +9 -5
  165. package/src/sap/ui/mdc/valuehelp/base/Content.js +23 -9
  166. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
  167. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +43 -7
  168. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +3 -3
  169. package/src/sap/ui/mdc/valuehelp/content/Bool.js +1 -1
  170. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +1 -1
  171. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +1 -1
  172. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +7 -3
  173. package/src/sap/ui/mdc/valuehelp/content/MTable.js +8 -2
  174. package/test/sap/ui/mdc/testutils/opa/chart/ActionsBase.js +48 -2
  175. package/test/sap/ui/mdc/testutils/opa/chart/TestObjects.js +3 -3
  176. package/test/sap/ui/mdc/testutils/opa/chartNew/TestObjects.js +3 -3
  177. package/test/sap/ui/mdc/testutils/opa/filterbar/Actions.js +55 -4
  178. package/test/sap/ui/mdc/testutils/opa/filterbar/TestObjects.js +2 -2
  179. package/test/sap/ui/mdc/testutils/opa/link/Actions.js +53 -12
  180. package/test/sap/ui/mdc/testutils/opa/link/TestObjects.js +6 -6
  181. package/test/sap/ui/mdc/testutils/opa/p13n/Actions.js +87 -120
  182. package/test/sap/ui/mdc/testutils/opa/p13n/waitForSelectWithSelectedTextOnPanel.js +5 -2
  183. package/test/sap/ui/mdc/testutils/opa/table/Actions.js +70 -0
  184. package/test/sap/ui/mdc/testutils/opa/table/TestObjects.js +9 -7
  185. package/test/sap/ui/mdc/testutils/opa/valueHelp/Actions.js +2 -2
  186. package/src/sap/ui/mdc/valuehelp/content/ListCollection.js +0 -205
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * The <code>RowActionItem</code> control represents a action for a row.
25
25
  * This control can only be used in the context of <code>sap.ui.mdc.Table</code> control to define row actions.
26
26
  * @extends sap.ui.core.Element
27
- * @version 1.101.0
27
+ * @version 1.102.2
28
28
  *
29
29
  * @constructor
30
30
  * @experimental
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * The <code>RowSettings</code> control is used to configure a row.
22
22
  * This control can only be used in the context of the <code>sap.ui.mdc.Table</code> control to define row settings.
23
23
  * @extends sap.ui.core.Element
24
- * @version 1.101.0
24
+ * @version 1.102.2
25
25
  *
26
26
  * @constructor
27
27
  * @experimental
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @extends sap.ui.mdc.table.PropertyHelper
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.101.0
30
+ * @version 1.102.2
31
31
  *
32
32
  * @private
33
33
  * @experimental
@@ -75,7 +75,7 @@ sap.ui.define([
75
75
  }),
76
76
  change: function(oEvent) {
77
77
  var oItem = oEvent.getParameter("item");
78
- TableSettings.createSort(oTable, oItem.getKey(), oItem.getSortOrder(), false);
78
+ TableSettings.createSort(oTable, oItem.getKey(), oItem.getSortOrder(), true);
79
79
  }
80
80
  }));
81
81
  }
@@ -127,11 +127,11 @@ sap.ui.define([
127
127
  }
128
128
  }
129
129
 
130
- var bResizeButton = window.matchMedia("(hover:none)").matches && oTable._bMobileTable && oTable.getEnableColumnResize();
131
- if (bResizeButton) {
130
+ if (oTable._bMobileTable && oTable.getEnableColumnResize()) {
132
131
  var oColumnResize = ResponsiveTableType.startColumnResize(oTable._oTable, oTable._oTable.getColumns()[oTable.indexOfColumn(oColumn)], this.getMenu());
133
132
  this.addQuickAction(oColumnResize);
134
133
  }
134
+
135
135
  return pCreateContent;
136
136
  };
137
137
 
@@ -6,4 +6,9 @@
6
6
 
7
7
  .sapUiMDCChart .sapUiMDCChartBreadcrumbs {
8
8
  margin-left: 1rem;
9
+ }
10
+
11
+ .sapUiMDCChart .sapMIBar.sapMTBHeader-CTX {
12
+ border-top-right-radius: @sapUiElementBorderCornerRadius;
13
+ border-top-left-radius: @sapUiElementBorderCornerRadius;
9
14
  }
@@ -6,14 +6,14 @@
6
6
  sap.ui.define([
7
7
  'sap/ui/core/library',
8
8
  'sap/ui/core/date/UniversalDate',
9
- 'sap/base/util/merge',
10
- 'sap/ui/mdc/enum/BaseType'
9
+ 'sap/ui/mdc/enum/BaseType',
10
+ 'sap/base/util/merge'
11
11
  ],
12
12
  function(
13
13
  coreLibrary,
14
14
  UniversalDate,
15
- merge,
16
- BaseType
15
+ BaseType,
16
+ merge
17
17
  ) {
18
18
  "use strict";
19
19
 
@@ -103,7 +103,7 @@ sap.ui.define([
103
103
  *
104
104
  * @param {sap.ui.model.SimpleType} oType Data type
105
105
  * @param {string} sPattern Pattern based on Unicode LDML Date Format notation. {@link http://unicode.org/reports/tr35/#Date_Field_Symbol_Table}
106
- * @return {sap.ui.model.SimpleType} nes data type
106
+ * @return {sap.ui.model.SimpleType} new data type
107
107
  * @private
108
108
  * @ui5-restricted sap.ui.mdc
109
109
  * @since 1.74.0
@@ -120,10 +120,35 @@ sap.ui.define([
120
120
  oFormatOptions.pattern = sPattern;
121
121
  oFormatOptions.calendarType = CalendarType.Gregorian;
122
122
 
123
+ if (this.showTimezone(oType)) {
124
+ // for Date/Time part of binding hide timezone, a new binding with only TimeZone is added to TimeZone property of DateTimePicker
125
+ oFormatOptions.showTimezone = false;
126
+ }
127
+
123
128
  return new Type(oFormatOptions, oConstraints);
124
129
 
125
130
  },
126
131
 
132
+ /**
133
+ * Checks if a DateTimeWithTimezone is used and the Timezone should be shown beside Date an time
134
+ *
135
+ * @param {sap.ui.model.SimpleType} oType Data type
136
+ * @return {boolean} if set, timezine needs to be shown
137
+ * @private
138
+ * @ui5-restricted sap.ui.mdc
139
+ * @since 1.101.0
140
+ */
141
+ showTimezone: function(oType) {
142
+
143
+ var oFormatOptions = oType.getFormatOptions();
144
+ var fnCheckProperty = function(oFormatOptions, sProperty) {
145
+ return !oFormatOptions.hasOwnProperty(sProperty) || oFormatOptions[sProperty]; // if not set, showTimezone=true, showDate=true or showTime=true is default
146
+ };
147
+
148
+ return oType.isA("sap.ui.model.odata.type.DateTimeWithTimezone") && fnCheckProperty(oFormatOptions, "showTimezone") && (fnCheckProperty(oFormatOptions, "showDate") || fnCheckProperty(oFormatOptions, "showTime"));
149
+
150
+ },
151
+
127
152
  /**
128
153
  * Converts a data type specific date to a string using a given pattern.
129
154
  *
@@ -44,7 +44,7 @@ sap.ui.define(
44
44
  * Destroying the cache will cancel all registered promises and delete references. Convenience methods for promise creation, wrapping and replacement are offered.
45
45
  *
46
46
  * @author SAP SE
47
- * @version 1.101.0
47
+ * @version 1.102.2
48
48
  * @alias sap.ui.mdc.util.PromiseCache
49
49
  * @namespace
50
50
  * @since 1.85.0
@@ -659,7 +659,7 @@ sap.ui.define([
659
659
  * @extends sap.ui.base.Object
660
660
  *
661
661
  * @author SAP SE
662
- * @version 1.101.0
662
+ * @version 1.102.2
663
663
  *
664
664
  * @private
665
665
  * @experimental
@@ -37,9 +37,9 @@ sap.ui.define([
37
37
  *
38
38
  * @param {string} [sId] ID for the new control, generated automatically if no ID is given
39
39
  * @param {object} [mSettings] Initial settings for the new control
40
- * @class Container for the <code>sap.ui.mdc.ValueHelp</code> element showing a dialog.
40
+ * @class Container for the {@link sap.ui.mdc.ValueHelp ValueHelp} element showing a dialog.
41
41
  * @extends sap.ui.mdc.valuehelp.base.Container
42
- * @version 1.101.0
42
+ * @version 1.102.2
43
43
  * @constructor
44
44
  * @abstract
45
45
  * @private
@@ -71,6 +71,9 @@ sap.ui.define([
71
71
  visibility: "hidden",
72
72
  defaultValue: []
73
73
  },
74
+ /**
75
+ * Configuration for groups (collective search).
76
+ */
74
77
  groupConfig: {
75
78
  type: "object",
76
79
  defaultValue: {}
@@ -219,9 +222,9 @@ sap.ui.define([
219
222
  contentWidth: _getContentWidth(),
220
223
  horizontalScrolling: false,
221
224
  verticalScrolling: false,
222
- title: {parts: ['$help>/title', '$help>/content'], formatter:
225
+ title: {parts: ['$help>/title', '$help>/_selectableContents'], formatter:
223
226
  function(sTitle, aContent) {
224
- if (aContent.length == 1) {
227
+ if (aContent && aContent.length == 1) {
225
228
  var oContent = aContent[0];
226
229
  var sDlgTitle = oContent.getFormattedShortTitle() ? oContent.getFormattedShortTitle() : oContent.getTitle();
227
230
  if (sDlgTitle) {
@@ -254,10 +257,13 @@ sap.ui.define([
254
257
  oVBox.addStyleClass("sapMdcValueHelpPanel");
255
258
  oDialog.addContent(oVBox);
256
259
 
257
- var oIconTabBar = this._getIconTabBar(oDialog);
258
- var oTokenizer = this._getTokenizerPanel();
260
+ var aPromises = [];
261
+ aPromises.push(this._getIconTabBar(oDialog));
259
262
 
260
- return Promise.all([oIconTabBar, oTokenizer]).then(function (aControls) {
263
+ if (_isTokenizerRequired(this.getMaxConditions(), this.getContent())) {
264
+ aPromises.push(this._getTokenizerPanel());
265
+ }
266
+ return Promise.all(aPromises).then(function (aControls) {
261
267
  aControls.forEach(function (oControl) {
262
268
  oVBox.addItem(oControl);
263
269
  });
@@ -282,7 +288,7 @@ sap.ui.define([
282
288
  if (oChanges.name === "content") {
283
289
  var aContent = this.getContent();
284
290
  this.setProperty("_quickSelectEnabled", aContent && aContent.every(function (oContent) {
285
- return oContent.isQuickSelectSupported && oContent.isQuickSelectSupported();
291
+ return oContent.isQuickSelectSupported();
286
292
  }));
287
293
 
288
294
  this._updateInitialContentKey();
@@ -292,7 +298,20 @@ sap.ui.define([
292
298
  }
293
299
 
294
300
  this.setProperty("_selectableContents", this._getSelectableContents());
301
+
302
+ if (_isTokenizerRequired(this.getMaxConditions(), this.getContent())) {
303
+ // check if Tokenizer needs to be created lately
304
+ var oDialog = this.getAggregation("_container");
305
+ if (oDialog && oDialog.getContent()[0].getItems().length === 1) { // container already created but no tokenizer
306
+ Promise.all([this._getTokenizerPanel()]).then(function (aControls) {
307
+ aControls.forEach(function (oControl) {
308
+ oDialog.getContent()[0].addItem(oControl);
309
+ });
310
+ });
311
+ }
312
+ }
295
313
  }
314
+
296
315
  Container.prototype._observeChanges.apply(this, arguments);
297
316
  };
298
317
 
@@ -392,6 +411,7 @@ sap.ui.define([
392
411
  );
393
412
  this._oGroupSelect = new CollectiveSearchSelect(this.getId() + "--Select",
394
413
  {
414
+ title:"{$i18n>COL_SEARCH_SEL_TITLE}",
395
415
  items: {
396
416
  path: "$select>/entries",
397
417
  template: oItemTemplate
@@ -477,6 +497,7 @@ sap.ui.define([
477
497
  };
478
498
 
479
499
  Dialog.prototype._getTokenizerPanel = function (oDialog) {
500
+
480
501
  if (!this.oTokenizerPanel) {
481
502
  return loadModules([
482
503
  'sap/m/Panel',
@@ -501,19 +522,7 @@ sap.ui.define([
501
522
  this.oTokenizerPanel = new Panel(this.getId() + "-TokenPanel", {
502
523
  backgroundDesign: BackgroundDesign.Transparent,
503
524
  expanded: true,
504
- visible: { parts: ['$valueHelp>/_config/maxConditions', '$help>/content'], formatter:
505
- function(iMaxConditions, aContent) {
506
- var bVisible = false;
507
-
508
- if (aContent && aContent.some(function(oContent) {
509
- // make the tokenizer visible when at least one content request the tokenizer
510
- return oContent.getRequiresTokenizer();
511
- })) {
512
- bVisible = true;
513
- }
514
-
515
- return bVisible && iMaxConditions === -1;
516
- }},
525
+ visible: {parts: ['$valueHelp>/_config/maxConditions', '$help>/content'], formatter: _isTokenizerRequired},
517
526
  headerText: {parts: ['$i18n>valuehelp.TOKENIZERTITLE', '$valueHelp>/conditions'], formatter:
518
527
  function(sText, aConditions) {
519
528
  var iCount = 0;
@@ -594,12 +603,37 @@ sap.ui.define([
594
603
  return this.oTokenizerPanel;
595
604
  };
596
605
 
597
- Dialog.prototype._open = function (oContainer) {
598
- if (oContainer) {
606
+ function _isTokenizerRequired(iMaxConditions, aContent) {
607
+ var bVisible = iMaxConditions !== 1;
608
+
609
+ if (bVisible && aContent && aContent.every(function(oContent) {
610
+ // make the tokenizer visible when at least one content request the tokenizer
611
+ return !oContent.getRequiresTokenizer();
612
+ })) {
613
+ bVisible = false;
614
+ }
615
+
616
+ return bVisible;
617
+ }
618
+
619
+ Dialog.prototype._open = function (oDialog) {
620
+ if (oDialog) {
599
621
  this._updateInitialContentKey(); // Update initial key as visibilities might change during content retrieval
600
- this._renderSelectedContent(this._sInitialContentKey, function () {
601
- oContainer.open();
602
- });
622
+ if (_isTokenizerRequired(this.getMaxConditions(), this.getContent()) && oDialog.getContent()[0].getItems().length === 1) {
623
+ // Tokenizer needed but already no tokenizer
624
+ Promise.all([this._getTokenizerPanel()]).then(function (aControls) {
625
+ aControls.forEach(function (oControl) {
626
+ oDialog.getContent()[0].addItem(oControl);
627
+ });
628
+ this._renderSelectedContent(this._sInitialContentKey, function () {
629
+ oDialog.open();
630
+ });
631
+ });
632
+ } else {
633
+ this._renderSelectedContent(this._sInitialContentKey, function () {
634
+ oDialog.open();
635
+ });
636
+ }
603
637
  }
604
638
  };
605
639
 
@@ -623,6 +657,7 @@ sap.ui.define([
623
657
 
624
658
  this.setProperty("_selectedContentKey", sNextContentId);
625
659
  this.setProperty("_selectableContents", this._getSelectableContents());
660
+ this._oManagedObjectModel.checkUpdate(true, true); // force Update as bindings to $help>displayContent are not updated automatically in some cases
626
661
 
627
662
  if (oGroupSelectPromise) {
628
663
  this._updateGroupSelectModel();
@@ -24,9 +24,9 @@ sap.ui.define([
24
24
  *
25
25
  * @param {string} [sId] ID for the new control, generated automatically if no ID is given
26
26
  * @param {object} [mSettings] Initial settings for the new control
27
- * @class Container for the <code>sap.ui.mdc.ValueHelp</code> element showing a popover.
27
+ * @class Container for the {@link sap.ui.mdc.ValueHelp ValueHelp} element showing a popover.
28
28
  * @extends sap.ui.mdc.valuehelp.base.Container
29
- * @version 1.101.0
29
+ * @version 1.102.2
30
30
  * @constructor
31
31
  * @abstract
32
32
  * @private
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @param {object} [mSettings] Initial settings for the new element
25
25
  * @class Container for the {@link sap.ui.mdc.ValueHelp ValueHelp} element.
26
26
  * @extends sap.ui.core.Element
27
- * @version 1.101.0
27
+ * @version 1.102.2
28
28
  * @constructor
29
29
  * @abstract
30
30
  * @private
@@ -130,7 +130,7 @@ sap.ui.define([
130
130
  /**
131
131
  * True if the focus should be set back to the field.
132
132
  */
133
- bLeaveFocus: { type: "boolean" },
133
+ leaveFocus: { type: "boolean" },
134
134
  /**
135
135
  * Navigated condition.
136
136
  *
@@ -360,10 +360,14 @@ sap.ui.define([
360
360
  * @param {object} oConfig Configuration
361
361
  * @param {any} oConfig.value Value as entered by user
362
362
  * @param {any} [oConfig.parsedValue] Value parsed by type to fit the data type of the key
363
+ * @param {object} [oConfig.context] Contextual information provided by condition payload or inParameters/outParameters. This is only filled if the description needs to be determined for an existing condition.
364
+ * @param {object} [oConfig.context.inParameter] inParameters of the current condition
365
+ * @param {object} [oConfig.context.ouParameter] outParameters of the current condition
366
+ * @param {object} [oConfig.context.payload] payload of the current condition
363
367
  * @param {sap.ui.model.Context} [oConfig.bindingContext] <code>BindingContext</code> of the checked field. Inside a table the <code>ValueHelp</code> element might be connected to a different row.
364
- * @param {boolean} [oConfig.checkKeyFirst] If set, the container checks first if the value fits a key // TODO: not longer needed?
365
- * @param {boolean} oConfig.checkKey If set, the container 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.
366
- * @param {boolean} oConfig.checkDescription If set, the container 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.
368
+ * @param {boolean} [oConfig.checkKeyFirst] If set, the value help checks first if the value fits a key // TODO: not longer needed?
369
+ * @param {boolean} oConfig.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.
370
+ * @param {boolean} oConfig.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.
367
371
  * @param {sap.ui.mdc.condition.ConditionModel} [oConfig.conditionModel] <code>ConditionModel</code>, in case of <code>FilterField</code>
368
372
  * @param {string} [oConfig.conditionModelName] Name of the <code>ConditionModel</code>, in case of <code>FilterField</code>
369
373
  * @param {boolean} [oConfig.caseSensitive] If set, the check is done case sensitive
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @param {object} [mSettings] Initial settings for the new element
33
33
  * @class Content for the {@link sap.ui.mdc.valuehelp.base.Container Container} element.
34
34
  * @extends sap.ui.core.Element
35
- * @version 1.101.0
35
+ * @version 1.102.2
36
36
  * @constructor
37
37
  * @abstract
38
38
  * @private
@@ -165,7 +165,7 @@ sap.ui.define([
165
165
  /**
166
166
  * True if the focus should be set back to the field.
167
167
  */
168
- bLeaveFocus: { type: "boolean" },
168
+ leaveFocus: { type: "boolean" },
169
169
  /**
170
170
  * Navigated condition.
171
171
  *
@@ -291,12 +291,14 @@ sap.ui.define([
291
291
  * @param {object} oConfig Configuration
292
292
  * @param {any} oConfig.value Value as entered by user
293
293
  * @param {any} [oConfig.parsedValue] Value parsed by type to fit the data type of the key
294
- * @param {object} [oConfig.inParameters] In parameters for the key (as a key must not be unique.)
295
- * @param {object} [oConfig.outParameters] Out parameters for the key (as a key must not be unique.)
294
+ * @param {object} [oConfig.context] Contextual information provided by condition payload or inParameters/outParameters. This is only filled if the description needs to be determined for an existing condition.
295
+ * @param {object} [oConfig.context.inParameter] inParameters of the current condition
296
+ * @param {object} [oConfig.context.ouParameter] outParameters of the current condition
297
+ * @param {object} [oConfig.context.payload] payload of the current condition
296
298
  * @param {sap.ui.model.Context} [oConfig.bindingContext] <code>BindingContext</code> of the checked field. Inside a table the <code>ValueHelp</code> element might be connected to a different row.
297
- * @param {boolean} [oConfig.checkKeyFirst] If set, the content checks first if the value fits a key // TODO: not longer needed?
298
- * @param {boolean} oConfig.checkKey If set, the content 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.
299
- * @param {boolean} oConfig.checkDescription If set, the content 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.
299
+ * @param {boolean} [oConfig.checkKeyFirst] If set, the value help checks first if the value fits a key // TODO: not longer needed?
300
+ * @param {boolean} oConfig.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.
301
+ * @param {boolean} oConfig.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.
300
302
  * @param {sap.ui.mdc.condition.ConditionModel} [oConfig.conditionModel] <code>ConditionModel</code>, in case of <code>FilterField</code>
301
303
  * @param {string} [oConfig.conditionModelName] Name of the <code>ConditionModel</code>, in case of <code>FilterField</code>
302
304
  * @param {boolean} [oConfig.caseSensitive] If set, the check is done case sensitive
@@ -355,12 +357,12 @@ sap.ui.define([
355
357
  /**
356
358
  * Creates a condition based on the used operator.
357
359
  *
358
- * @param {string} vValue Value of the condition. For item conditions this must be the key.
360
+ * @param {any} vValue Value of the condition. For item conditions this must be the key.
359
361
  * @param {string} [sDescription] Description of the operator
360
362
  * @param {object} [oPayload] payload
361
363
  * @returns {sap.ui.mdc.condition.ConditionObject} The new condition object with the maintained operator along with <code>sKey</code> and <code>sDescription</code> as <code>aValues</code>
362
364
  * @private
363
- * @ui5-restricted FieldHelp subclasses
365
+ * @ui5-restricted ValueHelp subclasses
364
366
  * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
365
367
  */
366
368
  Content.prototype._createCondition = function(vValue, sDescription, oPayload) {
@@ -601,6 +603,18 @@ sap.ui.define([
601
603
 
602
604
  };
603
605
 
606
+ /**
607
+ * Determines if quick selection is supported.
608
+ *
609
+ * @returns {boolean} if true, quick-selection is supported.
610
+ *
611
+ * @private
612
+ * @ui5-restricted sap.ui.mdc.valuehelp.base.Container
613
+ * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
614
+ */
615
+ Content.prototype.isQuickSelectSupported = function() {
616
+ return false;
617
+ };
604
618
 
605
619
  /**
606
620
  * Determines if value help dialog should show the tokenizer for the content.
@@ -20,7 +20,7 @@ sap.ui.define([
20
20
  * @param {object} [mSettings] Initial settings for the new control
21
21
  * @class Content for the <code>sap.ui.mdc.valuehelp.content.Dialog</code> element.
22
22
  * @extends sap.ui.core.Control
23
- * @version 1.101.0
23
+ * @version 1.102.2
24
24
  * @constructor
25
25
  * @abstract
26
26
  * @private
@@ -9,13 +9,19 @@ sap.ui.define([
9
9
  'sap/ui/mdc/valuehelp/base/ListContent',
10
10
  'sap/ui/mdc/condition/Condition',
11
11
  'sap/ui/mdc/enum/ConditionValidated',
12
- 'sap/ui/mdc/util/Common'
12
+ 'sap/ui/mdc/util/Common',
13
+ 'sap/ui/mdc/enum/PersistenceMode',
14
+ 'sap/ui/mdc/p13n/Engine',
15
+ 'sap/base/util/merge'
13
16
  ], function(
14
17
  loadModules,
15
18
  ListContent,
16
19
  Condition,
17
20
  ConditionValidated,
18
- Common
21
+ Common,
22
+ PersistenceMode,
23
+ Engine,
24
+ merge
19
25
  ) {
20
26
  "use strict";
21
27
 
@@ -26,7 +32,7 @@ sap.ui.define([
26
32
  * @param {object} [mSettings] Initial settings for the new element
27
33
  * @class Content for the {@link sap.ui.mdc.valuehelp.base.Container Container} element.
28
34
  * @extends sap.ui.mdc.valuehelp.base.ListContent
29
- * @version 1.101.0
35
+ * @version 1.102.2
30
36
  * @constructor
31
37
  * @abstract
32
38
  * @private
@@ -86,7 +92,7 @@ sap.ui.define([
86
92
  /**
87
93
  * Items used for collective search. If none assigned, no collective search is available.
88
94
  */
89
- collectiveSearchItems: {
95
+ collectiveSearchItems: { // TODO: remove!
90
96
  type: "sap.ui.core.Item",
91
97
  multiple: true,
92
98
  singularName : "collectiveSearchItem"
@@ -125,8 +131,11 @@ sap.ui.define([
125
131
  this._oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.ui.mdc");
126
132
 
127
133
  this._oObserver.observe(this, {
134
+ properties: ["filterFields"],
128
135
  aggregations: ["_defaultFilterBar", "filterBar"]
129
136
  });
137
+
138
+ Engine.getInstance().defaultProviderRegistry.attach(this, PersistenceMode.Transient);
130
139
  };
131
140
 
132
141
  FilterableListContent.prototype._handleFilterValueUpdate = function (oChanges) {
@@ -268,7 +277,11 @@ sap.ui.define([
268
277
  }
269
278
  oFilterBar.setBasicSearchField(this._oSearchField);
270
279
  } else if (oExistingBasicSearchField) {
271
- oExistingBasicSearchField.setConditions([]);
280
+ if (sFilterFields) {
281
+ oExistingBasicSearchField.setConditions([]); // initialize search field
282
+ } else if (oExistingBasicSearchField._bCreatedByValueHelp) {
283
+ oFilterBar.setBasicSearchField(); // remove to reuse on other FilterBar
284
+ }
272
285
  }
273
286
  }
274
287
 
@@ -305,8 +318,10 @@ sap.ui.define([
305
318
  this._assignCollectiveSearch(true);
306
319
  } */
307
320
 
321
+ var oFilterBar;
322
+
308
323
  if (["_defaultFilterBar", "filterBar"].indexOf(oChanges.name) !== -1) {
309
- var oFilterBar = oChanges.child;
324
+ oFilterBar = oChanges.child;
310
325
  var oDefaultFilterBar;
311
326
  if (oChanges.mutation === "insert") {
312
327
  _setBasicSearch.call(this, oFilterBar);
@@ -338,6 +353,13 @@ sap.ui.define([
338
353
  }
339
354
  }
340
355
  }
356
+ _addFilterValueToFilterBar.call(this, this._getPriorityFilterBar(), this.getFilterValue()); // as might set before a FilterBar exist
357
+ } else if (oChanges.name === "filterFields") {
358
+ // check if search fields needs to be removed or added
359
+ oFilterBar = this._getPriorityFilterBar();
360
+ if (oFilterBar) {
361
+ _setBasicSearch.call(this, oFilterBar);
362
+ }
341
363
  }
342
364
  }
343
365
  ListContent.prototype._observeChanges.apply(this, arguments);
@@ -425,7 +447,18 @@ sap.ui.define([
425
447
  };
426
448
 
427
449
  FilterableListContent.prototype._applyInitialConditions = function (oFilterBar) {
428
- return oFilterBar && oFilterBar.setInternalConditions(this._oInitialFilterConditions);
450
+ if (oFilterBar) {
451
+ var sFilterFields = this.getFilterFields();
452
+ var oNewConditions = merge({}, this._oInitialFilterConditions);
453
+ if (!oNewConditions[sFilterFields]) { // not set from Delegate
454
+ // use existing search
455
+ var oConditions = oFilterBar.getInternalConditions();
456
+ if (oConditions[sFilterFields]) {
457
+ oNewConditions[sFilterFields] = oConditions[sFilterFields];
458
+ }
459
+ }
460
+ oFilterBar.setInternalConditions(oNewConditions);
461
+ }
429
462
  };
430
463
 
431
464
  FilterableListContent.prototype._fireSelect = function (oChange) {
@@ -439,6 +472,8 @@ sap.ui.define([
439
472
 
440
473
  FilterableListContent.prototype.exit = function () {
441
474
 
475
+ Engine.getInstance().defaultProviderRegistry.detach(this);
476
+
442
477
  Common.cleanup(this, [
443
478
  "_oCollectiveSearchSelect", "_oInitialFilterConditions"
444
479
  ]);
@@ -448,6 +483,7 @@ sap.ui.define([
448
483
  delete this._oSearchField;
449
484
  }
450
485
 
486
+
451
487
  ListContent.prototype.exit.apply(this, arguments);
452
488
  };
453
489
 
@@ -20,7 +20,7 @@ sap.ui.define([
20
20
  * @param {object} [mSettings] Initial settings for the new element
21
21
  * @class Content for the {@link sap.ui.mdc.valuehelp.base.Container Container} element.
22
22
  * @extends sap.ui.mdc.valuehelp.base.Content
23
- * @version 1.101.0
23
+ * @version 1.102.2
24
24
  * @constructor
25
25
  * @abstract
26
26
  * @private
@@ -72,7 +72,7 @@ sap.ui.define([
72
72
  *
73
73
  * If set, the field help reads the data of these entities in the model and uses it to filter in the value help.
74
74
  */
75
- inParameters: {
75
+ inParameters: { // TODO: remove!
76
76
  type: "sap.ui.mdc.field.InParameter",
77
77
  group: "Data",
78
78
  multiple: true
@@ -83,7 +83,7 @@ sap.ui.define([
83
83
  *
84
84
  * If set, the fields sets the data of these entities in the model based to the selected values.
85
85
  */
86
- outParameters: {
86
+ outParameters: { // TODO: remove!
87
87
  type: "sap.ui.mdc.field.OutParameter",
88
88
  group: "Data",
89
89
  multiple: true
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  * @param {object} [mSettings] Initial settings for the new element
23
23
  * @class Content for the {@link sap.ui.mdc.valuehelp.base.Container Container} element to provide a value help for boolean fields.
24
24
  * @extends sap.ui.mdc.valuehelp.content.FixedList
25
- * @version 1.101.0
25
+ * @version 1.102.2
26
26
  * @constructor
27
27
  * @abstract
28
28
  * @private
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @param {object} [mSettings] Initial settings for the new element
26
26
  * @class Content for the {@link sap.ui.mdc.valuehelp.base.Container Container} element showing a condition panel.
27
27
  * @extends sap.ui.mdc.valuehelp.base.Content
28
- * @version 1.101.0
28
+ * @version 1.102.2
29
29
  * @constructor
30
30
  * @abstract
31
31
  * @private
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @param {object} [mSettings] Initial settings for the new element
27
27
  * @class Content for the {@link sap.ui.mdc.valuehelp.base.Container Container} element showing a list with fix values.
28
28
  * @extends sap.ui.mdc.valuehelp.base.ListContent
29
- * @version 1.101.0
29
+ * @version 1.102.2
30
30
  * @constructor
31
31
  * @abstract
32
32
  * @private
@@ -224,8 +224,7 @@ sap.ui.define([
224
224
  oRowMode.setMinRowCount(3);
225
225
  }
226
226
  var sSelectionMode = this._isSingleSelect() ? UITableSelectionMode.Single : UITableSelectionMode.MultiToggle;
227
- var sSelectionBehavior = this._isSingleSelect() ? UITableSelectionBehavior.RowOnly : UITableSelectionBehavior.Row;
228
- oInnerTable.setSelectionBehavior(sSelectionBehavior);
227
+ oInnerTable.setSelectionBehavior(UITableSelectionBehavior.Row);
229
228
  _getUITableSelectionHandler().setSelectionMode(sSelectionMode);
230
229
  },
231
230
  handleScrolling: function (iIndex) {
@@ -277,7 +276,7 @@ sap.ui.define([
277
276
  * @param {object} [mSettings] Initial settings for the new element
278
277
  * @class Content for the {@link sap.ui.mdc.valuehelp.base.Container Container} element using a {@link sap.ui.mdc.Table}.
279
278
  * @extends sap.ui.mdc.valuehelp.base.FilterableListContent
280
- * @version 1.101.0
279
+ * @version 1.102.2
281
280
  * @constructor
282
281
  * @abstract
283
282
  * @private
@@ -578,6 +577,11 @@ sap.ui.define([
578
577
  FilterableListContent.prototype.onShow.apply(this, arguments);
579
578
  };
580
579
 
580
+ MDCTable.prototype.onHide = function () {
581
+ this._bSearchTriggered = false;
582
+ FilterableListContent.prototype.onHide.apply(this, arguments);
583
+ };
584
+
581
585
  MDCTable.prototype._createFiltersFromBarConditions = function (oConditions) {
582
586
  var oConditionTypes = this._getTypesForConditions(oConditions);
583
587
  var oCreatedFBFilters = oConditions && oConditionTypes && FilterConverter.createFilters(oConditions, oConditionTypes, undefined, this.getCaseSensitive());