@openui5/sap.ui.mdc 1.102.1 → 1.103.1

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 (194) hide show
  1. package/package.json +4 -4
  2. package/src/sap/ui/mdc/.library +1 -1
  3. package/src/sap/ui/mdc/ActionToolbar.js +1 -1
  4. package/src/sap/ui/mdc/AggregationBaseDelegate.js +11 -0
  5. package/src/sap/ui/mdc/Chart.js +111 -55
  6. package/src/sap/ui/mdc/ChartDelegate.js +97 -92
  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 +2 -2
  10. package/src/sap/ui/mdc/FilterBar.js +1 -1
  11. package/src/sap/ui/mdc/FilterField.js +2 -2
  12. package/src/sap/ui/mdc/Link.js +4 -1
  13. package/src/sap/ui/mdc/MultiValueField.js +1 -1
  14. package/src/sap/ui/mdc/Table.js +48 -12
  15. package/src/sap/ui/mdc/ValueHelp.js +1 -19
  16. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +2 -1
  17. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -2
  18. package/src/sap/ui/mdc/chart/ChartToolbar.js +34 -2
  19. package/src/sap/ui/mdc/chart/DrillBreadcrumbs.js +6 -2
  20. package/src/sap/ui/mdc/chart/Item.js +6 -11
  21. package/src/sap/ui/mdc/chart/PropertyHelper.js +7 -8
  22. package/src/sap/ui/mdc/chart/SelectionDetailsActions.js +2 -3
  23. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  24. package/src/sap/ui/mdc/condition/ConditionConverter.js +16 -131
  25. package/src/sap/ui/mdc/condition/ConditionModel.js +50 -21
  26. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  27. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +3 -3
  28. package/src/sap/ui/mdc/condition/Operator.js +1 -1
  29. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +1 -1
  30. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  31. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbar.designtime.js +6 -3
  32. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbarAction.designtime.js +53 -0
  33. package/src/sap/ui/mdc/designtime/field/Field.designtime.js +9 -4
  34. package/src/sap/ui/mdc/designtime/table/Table.designtime.js +1 -1
  35. package/src/sap/ui/mdc/field/BoolFieldHelp.js +1 -1
  36. package/src/sap/ui/mdc/field/ConditionFieldHelp.js +1 -1
  37. package/src/sap/ui/mdc/field/ConditionType.js +135 -39
  38. package/src/sap/ui/mdc/field/ConditionsType.js +71 -10
  39. package/src/sap/ui/mdc/field/CustomFieldHelp.js +1 -2
  40. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  41. package/src/sap/ui/mdc/field/DefineConditionPanel.js +93 -81
  42. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +9 -62
  43. package/src/sap/ui/mdc/field/FieldBase.js +91 -70
  44. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +20 -1
  45. package/src/sap/ui/mdc/field/FieldHelpBase.js +1 -39
  46. package/src/sap/ui/mdc/field/FieldInfoBase.js +1 -1
  47. package/src/sap/ui/mdc/field/FieldInput.js +2 -2
  48. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  49. package/src/sap/ui/mdc/field/FieldMultiInput.js +2 -2
  50. package/src/sap/ui/mdc/field/FieldValueHelp.js +1 -1
  51. package/src/sap/ui/mdc/field/FieldValueHelpContentWrapperBase.js +1 -19
  52. package/src/sap/ui/mdc/field/FieldValueHelpMTableWrapper.js +1 -1
  53. package/src/sap/ui/mdc/field/FieldValueHelpMdcTableWrapper.js +7 -1
  54. package/src/sap/ui/mdc/field/FieldValueHelpTableWrapperBase.js +1 -1
  55. package/src/sap/ui/mdc/field/FieldValueHelpUITableWrapper.js +1 -1
  56. package/src/sap/ui/mdc/field/InParameter.js +1 -4
  57. package/src/sap/ui/mdc/field/ListFieldHelp.js +1 -1
  58. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  59. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  60. package/src/sap/ui/mdc/field/OutParameter.js +1 -1
  61. package/src/sap/ui/mdc/field/TokenDisplay.js +2 -2
  62. package/src/sap/ui/mdc/field/TokenizerDisplay.js +2 -2
  63. package/src/sap/ui/mdc/field/ValueHelpPanel.js +1 -5
  64. package/src/sap/ui/mdc/field/content/DateContent.js +3 -3
  65. package/src/sap/ui/mdc/field/content/DateTimeContent.js +1 -1
  66. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +4 -4
  67. package/src/sap/ui/mdc/filterbar/IFilterContainer.js +1 -1
  68. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  69. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
  70. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  71. package/src/sap/ui/mdc/flexibility/ActionToolbar.flexibility.js +80 -4
  72. package/src/sap/ui/mdc/flexibility/AggregateFlex.js +19 -38
  73. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  74. package/src/sap/ui/mdc/flexibility/ChartTypeFlex.js +23 -41
  75. package/src/sap/ui/mdc/flexibility/ConditionFlex.js +43 -58
  76. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  77. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  78. package/src/sap/ui/mdc/flexibility/GroupFlex.js +25 -55
  79. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +21 -42
  80. package/src/sap/ui/mdc/flexibility/SortFlex.js +23 -52
  81. package/src/sap/ui/mdc/flexibility/Table.flexibility.js +3 -3
  82. package/src/sap/ui/mdc/flexibility/Util.js +82 -0
  83. package/src/sap/ui/mdc/flexibility/xConfigFlex.js +137 -0
  84. package/src/sap/ui/mdc/flp/FlpLinkDelegate.js +3 -1
  85. package/src/sap/ui/mdc/library.js +4 -15
  86. package/src/sap/ui/mdc/link/ContactDetails.js +1 -1
  87. package/src/sap/ui/mdc/link/ContactDetailsAddressItem.js +1 -1
  88. package/src/sap/ui/mdc/link/ContactDetailsEmailItem.js +1 -1
  89. package/src/sap/ui/mdc/link/ContactDetailsItem.js +1 -1
  90. package/src/sap/ui/mdc/link/ContactDetailsPhoneItem.js +1 -1
  91. package/src/sap/ui/mdc/link/Factory.js +1 -1
  92. package/src/sap/ui/mdc/link/FakeFlpConnector.js +1 -1
  93. package/src/sap/ui/mdc/link/LinkItem.js +9 -1
  94. package/src/sap/ui/mdc/link/Panel.js +25 -10
  95. package/src/sap/ui/mdc/link/PanelItem.js +10 -1
  96. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  97. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  98. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  99. package/src/sap/ui/mdc/messagebundle.properties +12 -0
  100. package/src/sap/ui/mdc/messagebundle_ar.properties +8 -0
  101. package/src/sap/ui/mdc/messagebundle_bg.properties +8 -0
  102. package/src/sap/ui/mdc/messagebundle_ca.properties +8 -0
  103. package/src/sap/ui/mdc/messagebundle_cs.properties +8 -0
  104. package/src/sap/ui/mdc/messagebundle_cy.properties +8 -0
  105. package/src/sap/ui/mdc/messagebundle_da.properties +8 -0
  106. package/src/sap/ui/mdc/messagebundle_de.properties +8 -0
  107. package/src/sap/ui/mdc/messagebundle_el.properties +19 -11
  108. package/src/sap/ui/mdc/messagebundle_en.properties +8 -0
  109. package/src/sap/ui/mdc/messagebundle_en_GB.properties +8 -0
  110. package/src/sap/ui/mdc/messagebundle_en_US_sappsd.properties +8 -0
  111. package/src/sap/ui/mdc/messagebundle_en_US_saprigi.properties +8 -0
  112. package/src/sap/ui/mdc/messagebundle_en_US_saptrc.properties +8 -0
  113. package/src/sap/ui/mdc/messagebundle_es.properties +14 -6
  114. package/src/sap/ui/mdc/messagebundle_es_MX.properties +8 -0
  115. package/src/sap/ui/mdc/messagebundle_et.properties +8 -0
  116. package/src/sap/ui/mdc/messagebundle_fi.properties +8 -0
  117. package/src/sap/ui/mdc/messagebundle_fr.properties +9 -1
  118. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +8 -0
  119. package/src/sap/ui/mdc/messagebundle_hi.properties +8 -0
  120. package/src/sap/ui/mdc/messagebundle_hr.properties +8 -0
  121. package/src/sap/ui/mdc/messagebundle_hu.properties +8 -0
  122. package/src/sap/ui/mdc/messagebundle_id.properties +8 -0
  123. package/src/sap/ui/mdc/messagebundle_it.properties +9 -1
  124. package/src/sap/ui/mdc/messagebundle_iw.properties +9 -1
  125. package/src/sap/ui/mdc/messagebundle_ja.properties +8 -0
  126. package/src/sap/ui/mdc/messagebundle_kk.properties +8 -0
  127. package/src/sap/ui/mdc/messagebundle_ko.properties +10 -2
  128. package/src/sap/ui/mdc/messagebundle_lt.properties +8 -0
  129. package/src/sap/ui/mdc/messagebundle_lv.properties +8 -0
  130. package/src/sap/ui/mdc/messagebundle_ms.properties +8 -0
  131. package/src/sap/ui/mdc/messagebundle_nl.properties +22 -14
  132. package/src/sap/ui/mdc/messagebundle_no.properties +8 -0
  133. package/src/sap/ui/mdc/messagebundle_pl.properties +8 -0
  134. package/src/sap/ui/mdc/messagebundle_pt.properties +12 -4
  135. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +8 -0
  136. package/src/sap/ui/mdc/messagebundle_ro.properties +8 -0
  137. package/src/sap/ui/mdc/messagebundle_ru.properties +8 -0
  138. package/src/sap/ui/mdc/messagebundle_sh.properties +9 -1
  139. package/src/sap/ui/mdc/messagebundle_sk.properties +8 -0
  140. package/src/sap/ui/mdc/messagebundle_sl.properties +8 -0
  141. package/src/sap/ui/mdc/messagebundle_sv.properties +8 -0
  142. package/src/sap/ui/mdc/messagebundle_th.properties +8 -0
  143. package/src/sap/ui/mdc/messagebundle_tr.properties +8 -0
  144. package/src/sap/ui/mdc/messagebundle_uk.properties +8 -0
  145. package/src/sap/ui/mdc/messagebundle_vi.properties +8 -0
  146. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +8 -0
  147. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +9 -1
  148. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  149. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  150. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  151. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  152. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
  153. package/src/sap/ui/mdc/odata/TypeUtil.js +24 -2
  154. package/src/sap/ui/mdc/odata/v4/ChartPropertyHelper.js +5 -5
  155. package/src/sap/ui/mdc/odata/v4/FieldBaseDelegate.js +6 -0
  156. package/src/sap/ui/mdc/odata/v4/TypeUtil.js +6 -6
  157. package/src/sap/ui/mdc/odata/v4/ValueHelpDelegate.js +0 -33
  158. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +359 -151
  159. package/src/sap/ui/mdc/p13n/Engine.js +1 -1
  160. package/src/sap/ui/mdc/p13n/PersistenceProvider.js +1 -0
  161. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  162. package/src/sap/ui/mdc/p13n/UIManager.js +1 -1
  163. package/src/sap/ui/mdc/p13n/modules/DefaultProviderRegistry.js +1 -1
  164. package/src/sap/ui/mdc/p13n/panels/ActionToolbarPanel.js +133 -0
  165. package/src/sap/ui/mdc/p13n/panels/FilterPanel.js +7 -32
  166. package/src/sap/ui/mdc/p13n/panels/LinkSelectionPanel.js +12 -4
  167. package/src/sap/ui/mdc/p13n/subcontroller/ActionToolbarController.js +1 -1
  168. package/src/sap/ui/mdc/p13n/subcontroller/BaseController.js +1 -1
  169. package/src/sap/ui/mdc/p13n/subcontroller/LinkPanelController.js +22 -27
  170. package/src/sap/ui/mdc/table/Column.js +4 -1
  171. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  172. package/src/sap/ui/mdc/table/PropertyHelper.js +1 -1
  173. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  174. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  175. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +1 -1
  176. package/src/sap/ui/mdc/themes/base/ValueHelpDialog.less +5 -0
  177. package/src/sap/ui/mdc/util/FilterUtil.js +2 -2
  178. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  179. package/src/sap/ui/mdc/util/PropertyHelper.js +1 -1
  180. package/src/sap/ui/mdc/util/TypeUtil.js +105 -17
  181. package/src/sap/ui/mdc/valuehelp/Dialog.js +95 -30
  182. package/src/sap/ui/mdc/valuehelp/Popover.js +15 -2
  183. package/src/sap/ui/mdc/valuehelp/base/Container.js +37 -28
  184. package/src/sap/ui/mdc/valuehelp/base/Content.js +39 -21
  185. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +5 -5
  186. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +41 -34
  187. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
  188. package/src/sap/ui/mdc/valuehelp/content/Bool.js +4 -4
  189. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +11 -3
  190. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +1 -1
  191. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +1 -1
  192. package/src/sap/ui/mdc/valuehelp/content/MTable.js +2 -2
  193. package/test/sap/ui/mdc/testutils/opa/p13n/Actions.js +34 -82
  194. package/src/sap/ui/mdc/flexibility/AggregationConfigFlex.js +0 -139
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  "use strict";
31
31
 
32
32
  var MDialog, MLibrary, Button, ManagedObjectModel, IconTabBar, IconTabFilter;
33
- var Panel, HBox, Tokenizer, Token;
33
+ var Panel, HBox, Tokenizer, Token, Filter;
34
34
 
35
35
  /**
36
36
  * Constructor for a new <code>Dialog</code> container.
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  * @param {object} [mSettings] Initial settings for the new control
40
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.102.1
42
+ * @version 1.103.1
43
43
  * @constructor
44
44
  * @abstract
45
45
  * @private
@@ -117,7 +117,11 @@ sap.ui.define([
117
117
  return oContent.getId() === sCurrentContentKey;
118
118
  });
119
119
  if (oCurrentContent) {
120
+ if (oCurrentContent.setCollectiveSearchSelect) {
121
+ oCurrentContent.setCollectiveSearchSelect(undefined); // remove collective search from Filterbar
122
+ }
120
123
  oCurrentContent.onHide();
124
+ this._unbindContent(oCurrentContent);
121
125
  }
122
126
  this._renderSelectedContent(sNextId);
123
127
  }.bind(this));
@@ -166,6 +170,10 @@ sap.ui.define([
166
170
  oContent.onHide();
167
171
  }
168
172
 
173
+ this.getContent().forEach(function (oContent) {
174
+ oContent.onContainerClose();
175
+ });
176
+
169
177
  // Reset selection to initial key for retrieveContent calls before it is opened again.
170
178
  this.setProperty("_selectedContentKey", this._sInitialContentKey);
171
179
 
@@ -514,7 +522,7 @@ sap.ui.define([
514
522
  VBox = aModules[2];
515
523
  Tokenizer = aModules[3];
516
524
  Token = aModules[4];
517
- var Filter = aModules[5];
525
+ Filter = aModules[5];
518
526
  var ConditionType = aModules[6];
519
527
  var BackgroundDesign = MLibrary.BackgroundDesign;
520
528
  var ButtonType = MLibrary.ButtonType;
@@ -523,8 +531,8 @@ sap.ui.define([
523
531
  backgroundDesign: BackgroundDesign.Transparent,
524
532
  expanded: true,
525
533
  visible: {parts: ['$valueHelp>/_config/maxConditions', '$help>/content'], formatter: _isTokenizerRequired},
526
- headerText: {parts: ['$i18n>valuehelp.TOKENIZERTITLE', '$valueHelp>/conditions'], formatter:
527
- function(sText, aConditions) {
534
+ headerText: {parts: ['$valueHelp>/conditions', '$help>/_selectableContents'], formatter:
535
+ function(aConditions, aContent) {
528
536
  var iCount = 0;
529
537
  for (var i = 0; i < aConditions.length; i++) {
530
538
  var oCondition = aConditions[i];
@@ -532,11 +540,19 @@ sap.ui.define([
532
540
  iCount++;
533
541
  }
534
542
  }
535
- if (iCount === 0) {
536
- // in case of no items do not show a number
537
- sText = this._oResourceBundle.getText("valuehelp.TOKENIZERTITLENONUMBER");
543
+ var sTitle;
544
+ if (aContent && aContent.length == 1) { // in case of single content the title will be provided by the content
545
+ sTitle = aContent[0].getFormattedTokenizerTitle(iCount);
546
+ return sTitle;
547
+ } else {
548
+ // default title
549
+ sTitle = this._oResourceBundle.getText("valuehelp.TOKENIZERTITLE");
550
+ if (iCount === 0) {
551
+ // in case of no items do not show a number
552
+ sTitle = this._oResourceBundle.getText("valuehelp.TOKENIZERTITLENONUMBER");
553
+ }
554
+ return formatMessage(sTitle, iCount);
538
555
  }
539
- return formatMessage(sText, iCount);
540
556
  }.bind(this)
541
557
  }
542
558
  });
@@ -544,19 +560,9 @@ sap.ui.define([
544
560
 
545
561
  var oHBox = new HBox(this.getId() + "-TokenBox", {fitContainer: true, width: "100%"});
546
562
 
547
- var oFilter = new Filter({path:'isEmpty', operator:'NE', value1:true});
548
-
549
- var oValueHelpModel = this.getModel("$valueHelp");
550
- var oConfig = oValueHelpModel ? oValueHelpModel.getProperty("/_config") : {};
551
- var oParent = this.getParent();
552
- var oFormatOptions = { // TODO: is more needed?
553
- maxConditions: -1, // as for tokens there should not be a limit on type side
554
- valueType: oConfig.dataType,
555
- operators: oConfig.operators,
556
- display: oConfig.display,
557
- fieldHelpID: oParent && oParent.getId() // needed to get description for Token (if not provided)
558
- };
559
- var oTokenTemplate = new Token(this.getId() + "-Token", {text: {path: '$valueHelp>', type: new ConditionType(oFormatOptions)}});
563
+ var oFormatOptions = _getConditionFormatOptions.call(this);
564
+ this._oConditionType = new ConditionType(oFormatOptions);
565
+ this._oConditionType._bVHTokenizer = true; // just help for debugging
560
566
  this.oTokenizer = new Tokenizer(this.getId() + "-Tokenizer", {
561
567
  width: "100%",
562
568
  tokenDelete: function(oEvent) {
@@ -575,11 +581,11 @@ sap.ui.define([
575
581
  }
576
582
 
577
583
  }.bind(this),
578
- tokens: {path: '/conditions', model: "$valueHelp", templateShareable: false, template: oTokenTemplate, filters: oFilter},
579
584
  layoutData: new FlexItemData({growFactor: 1, maxWidth: "calc(100% - 2rem)"})
580
585
  });
581
586
  this.oTokenizer.addAriaDescribedBy( this.oTokenizer.getTokensInfoId());
582
587
  this.oTokenizer.addStyleClass("sapMdcTokenizer");
588
+ _bindTokenizer.call(this, true);
583
589
 
584
590
  this.oRemoveAllBtn = new Button(this.getId() + "-TokenRemoveAll", {
585
591
  press: function(oEvent) {
@@ -599,6 +605,9 @@ sap.ui.define([
599
605
 
600
606
  return this.oTokenizerPanel;
601
607
  }.bind(this));
608
+ } else { // update ConditionType with current formatOptions
609
+ var oFormatOptions = _getConditionFormatOptions.call(this);
610
+ this._oConditionType.setFormatOptions(oFormatOptions);
602
611
  }
603
612
  return this.oTokenizerPanel;
604
613
  };
@@ -616,23 +625,70 @@ sap.ui.define([
616
625
  return bVisible;
617
626
  }
618
627
 
628
+ function _getConditionFormatOptions() {
629
+
630
+ var oValueHelpModel = this.getModel("$valueHelp");
631
+ var oConfig = oValueHelpModel ? oValueHelpModel.getProperty("/_config") : {};
632
+ var oParent = this.getParent();
633
+ var oControl = this._getControl();
634
+ return { // TODO: is more needed?
635
+ maxConditions: -1, // as for tokens there should not be a limit on type side
636
+ valueType: oConfig.dataType,
637
+ operators: oConfig.operators,
638
+ display: oConfig.display,
639
+ fieldHelpID: oParent && oParent.getId(), // needed to get description for Token (if not provided)
640
+ control: oControl,
641
+ delegate: oControl && oControl.getControlDelegate && oControl.getControlDelegate(),
642
+ delegateName: oControl && oControl.getDelegate && oControl.getDelegate() && oControl.getDelegate().name,
643
+ payload: oControl && oControl.getPayload && oControl.getPayload(),
644
+ convertWhitespaces: true
645
+ };
646
+
647
+ }
648
+
649
+ function _bindTokenizer(bBind) {
650
+
651
+ if (this.oTokenizer) {
652
+ var oBindingInfo = this.oTokenizer.getBindingInfo("tokens");
653
+ if (bBind) {
654
+ if (!oBindingInfo) { // not bound -> create binding
655
+ var oFilter = new Filter({path:'isEmpty', operator:'NE', value1:true});
656
+ var oTokenTemplate = new Token(this.getId() + "-Token", {text: {path: '$valueHelp>', type: this._oConditionType}});
657
+ this.oTokenizer.bindAggregation("tokens", {path: '/conditions', model: "$valueHelp", templateShareable: false, template: oTokenTemplate, filters: oFilter});
658
+ }
659
+ } else if (oBindingInfo) { // remove binding if dialog is closed to prevent updated on tokens if conditions are updated. (Suspend would not be enough, as every single binding on token would need to be suspended too.)
660
+ this.oTokenizer.unbindAggregation("tokens");
661
+ }
662
+ }
663
+
664
+ }
665
+
619
666
  Dialog.prototype._open = function (oDialog) {
620
667
  if (oDialog) {
621
668
  this._updateInitialContentKey(); // Update initial key as visibilities might change during content retrieval
669
+
670
+ var fnRenderContent = function () {
671
+ this._renderSelectedContent(this._sInitialContentKey, function () {
672
+ oDialog.open();
673
+ this.getContent().forEach(function (oContent) {
674
+ oContent.onContainerOpen();
675
+ });
676
+ }.bind(this));
677
+ }.bind(this);
678
+
622
679
  if (_isTokenizerRequired(this.getMaxConditions(), this.getContent()) && oDialog.getContent()[0].getItems().length === 1) {
623
680
  // Tokenizer needed but already no tokenizer
624
681
  Promise.all([this._getTokenizerPanel()]).then(function (aControls) {
625
682
  aControls.forEach(function (oControl) {
626
683
  oDialog.getContent()[0].addItem(oControl);
627
684
  });
628
- this._renderSelectedContent(this._sInitialContentKey, function () {
629
- oDialog.open();
630
- });
685
+ fnRenderContent();
631
686
  });
632
687
  } else {
633
- this._renderSelectedContent(this._sInitialContentKey, function () {
634
- oDialog.open();
635
- });
688
+ if (this.oTokenizer) { // restore tokenizer binding to enable updates if open
689
+ _bindTokenizer.call(this, true);
690
+ }
691
+ fnRenderContent();
636
692
  }
637
693
  }
638
694
  };
@@ -655,9 +711,14 @@ sap.ui.define([
655
711
  }
656
712
  return Promise.all(aNecessaryPromises).then(function (aPromiseResults) {
657
713
 
714
+ this._bindContent(oNextContent);
658
715
  this.setProperty("_selectedContentKey", sNextContentId);
659
716
  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
717
+ this._oManagedObjectModel.checkUpdate(true, false, function (oBinding) { // force update as bindings to $help>displayContent are not updated automatically in some cases
718
+ if (oBinding.getPath() === "displayContent") { // do not update other bindings as this might lead to rerendering of IconTabBar ot other unwanted updates.
719
+ return true;
720
+ }
721
+ });
661
722
 
662
723
  if (oGroupSelectPromise) {
663
724
  this._updateGroupSelectModel();
@@ -681,6 +742,10 @@ sap.ui.define([
681
742
  var oContainer = this.getAggregation("_container");
682
743
  if (oContainer) {
683
744
  oContainer.close();
745
+
746
+ if (this.oTokenizer) { // remove tokenizer binding to prevent updates if closed
747
+ _bindTokenizer.call(this, false);
748
+ }
684
749
  }
685
750
  };
686
751
 
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @param {object} [mSettings] Initial settings for the new control
27
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.102.1
29
+ * @version 1.103.1
30
30
  * @constructor
31
31
  * @abstract
32
32
  * @private
@@ -107,6 +107,10 @@ sap.ui.define([
107
107
  afterClose: this._handleClosed.bind(this)
108
108
  }).addStyleClass("sapMdcValueHelpPopover").addStyleClass("sapMComboBoxBasePicker").addStyleClass("sapMComboBoxBasePicker-CTX"); // to have a ComboBox popup
109
109
 
110
+ oPopover.isPopupAdaptationAllowed = function () {
111
+ return false;
112
+ };
113
+
110
114
  oPopover.addStyleClass(this._isSingleSelect() ? "sapMdcValueHelpSingleSelect" : "sapMdcValueHelpMultiSelect");
111
115
 
112
116
  oPopover.addDelegate({onsapshow: this._handleRequestSwitchToDialog.bind(this)});
@@ -185,6 +189,10 @@ sap.ui.define([
185
189
  this._oCurrentContent = aContents[0];
186
190
  var oFooterContent = aContents[1];
187
191
 
192
+ // to prevent a Fieldgroup leave if opening control has fieldgroups, asign the fieldgroups to content
193
+ var oControl = this._getControl();
194
+ this._oCurrentContent.setFieldGroupIds(oControl.getFieldGroupIds());
195
+
188
196
  if (oFooterContent && oPopover.getFooter() != oFooterContent && oFooterContent.isA && oFooterContent.isA("sap.m.Toolbar")) {
189
197
  oPopover.setFooter(oFooterContent);
190
198
  return oPopover;
@@ -212,6 +220,8 @@ sap.ui.define([
212
220
  return;
213
221
  }
214
222
 
223
+ Container.prototype._open.apply(this, arguments);
224
+
215
225
  var oControl = this._getControl();
216
226
  var oTarget = oControl && oControl.getFocusElementForValueHelp ? oControl.getFocusElementForValueHelp(this.isTypeahead()) : oControl;
217
227
 
@@ -226,6 +236,7 @@ sap.ui.define([
226
236
 
227
237
  Popover.prototype._close = function () {
228
238
 
239
+ Container.prototype._close.apply(this, arguments);
229
240
  var oPopover = this.getAggregation("_container");
230
241
  if (oPopover) {
231
242
  oPopover.close();
@@ -241,6 +252,7 @@ sap.ui.define([
241
252
  var oContent = this._getContent();
242
253
 
243
254
  if (oContent) {
255
+ oContent.onContainerOpen();
244
256
  oContent.onShow();
245
257
  }
246
258
 
@@ -256,6 +268,7 @@ sap.ui.define([
256
268
 
257
269
  if (oContent) {
258
270
  oContent.onHide();
271
+ oContent.onContainerClose();
259
272
  }
260
273
 
261
274
  var oPopover = this.getAggregation("_container");
@@ -319,7 +332,7 @@ sap.ui.define([
319
332
  return {
320
333
  contentId: oContentAttributes.contentId,
321
334
  ariaHasPopup: oContentAttributes.ariaHasPopup,
322
- role: this.getUseAsValueHelp() ? "combobox" : null, // Popover is a ComboBox, but only if used as valuehelp, only typeahead has no role (see sap.m.Input)
335
+ role: this.isDialog() ? "combobox" : null, // Popover is a ComboBox, but only if used as valuehelp, only typeahead has no role (see sap.m.Input)
323
336
  roleDescription: oContentAttributes.roleDescription // for multiselect-mTable it needs to be set
324
337
  };
325
338
  }
@@ -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.102.1
27
+ * @version 1.103.1
28
28
  * @constructor
29
29
  * @abstract
30
30
  * @private
@@ -160,8 +160,8 @@ sap.ui.define([
160
160
  if (oChanges.mutation === "remove") {
161
161
  this._unbindContent(oContent);
162
162
 
163
- } else {
164
- this._bindContent(oContent);
163
+ // } else {
164
+ // this._bindContent(oContent);
165
165
  }
166
166
  }
167
167
  };
@@ -291,9 +291,15 @@ sap.ui.define([
291
291
 
292
292
  Container.prototype._open = function (oContainer) {
293
293
 
294
+ var aContent = this.getContent();
295
+ for (var i = 0; i < aContent.length; i++) { // for Dialog overwrite to only bind shown content
296
+ this._bindContent(aContent[i]);
297
+ }
298
+
294
299
  };
295
300
 
296
301
  Container.prototype._close = function () {
302
+
297
303
  };
298
304
 
299
305
  Container.prototype._handleOpened = function () {
@@ -303,6 +309,12 @@ sap.ui.define([
303
309
 
304
310
  Container.prototype._handleClosed = function (oEvent) {
305
311
  this._removePromise("open");
312
+
313
+ var aContent = this.getContent();
314
+ for (var i = 0; i < aContent.length; i++) {
315
+ this._unbindContent(aContent[i]);
316
+ }
317
+
306
318
  this.fireClosed();
307
319
  };
308
320
 
@@ -327,7 +339,6 @@ sap.ui.define([
327
339
  *
328
340
  * @private
329
341
  * @ui5-restricted sap.ui.mdc.ValueHelp
330
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
331
342
  */
332
343
  Container.prototype.isOpen = function () {
333
344
  var oPromise = this._retrievePromise("open");
@@ -343,7 +354,6 @@ sap.ui.define([
343
354
  *
344
355
  * @private
345
356
  * @ui5-restricted sap.ui.mdc.ValueHelp
346
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
347
357
  */
348
358
  Container.prototype.isOpening = function () {
349
359
  var oPromise = this._retrievePromise("open");
@@ -377,7 +387,6 @@ sap.ui.define([
377
387
  *
378
388
  * @private
379
389
  * @ui5-restricted sap.ui.mdc.ValueHelp
380
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
381
390
  */
382
391
  Container.prototype.getItemForValue = function(oConfig) { // TODO only for TypeAhead container
383
392
  };
@@ -389,9 +398,8 @@ sap.ui.define([
389
398
  *
390
399
  * @private
391
400
  * @ui5-restricted sap.ui.mdc.ValueHelp
392
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
393
401
  */
394
- Container.prototype.isValidationSupported = function() { // TODO only for TypeAhead container
402
+ Container.prototype.isValidationSupported = function() { // TODO only for TypeAhead container
395
403
  return false;
396
404
  };
397
405
 
@@ -408,7 +416,6 @@ sap.ui.define([
408
416
  *
409
417
  * @private
410
418
  * @ui5-restricted sap.ui.mdc.ValueHelp
411
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
412
419
  */
413
420
  Container.prototype.navigate = function(iStep) { // pass through to content
414
421
  return Promise.all([this._getContainer()]).then(function (aResults) {
@@ -426,7 +433,6 @@ sap.ui.define([
426
433
  *
427
434
  * @private
428
435
  * @ui5-restricted sap.ui.mdc.ValueHelp
429
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
430
436
  */
431
437
  Container.prototype.removeFocus = function() {
432
438
  };
@@ -440,7 +446,6 @@ sap.ui.define([
440
446
  *
441
447
  * @private
442
448
  * @ui5-restricted sap.ui.mdc.valueHelp.base.Content
443
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
444
449
  */
445
450
  Container.prototype.isTypeahead = function () {
446
451
  var oValueHelp = this.getParent();
@@ -456,12 +461,28 @@ sap.ui.define([
456
461
  *
457
462
  * @private
458
463
  * @ui5-restricted sap.ui.mdc.ValueHelp, sap.ui.mdc.valueHelp.base.Content
459
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
460
464
  */
461
465
  Container.prototype.isTypeaheadSupported = function () {
462
466
  return false;
463
467
  };
464
468
 
469
+ /**
470
+ * Determines if the container is used as dialog inside the value help
471
+ *
472
+ * The container is also used as dialog if <code>useAsValueHelp</code> is set on content and no other dialog is set.
473
+ *
474
+ * <b>Note:</b> This function is used by the container and content and must not be used from outside
475
+ *
476
+ * @returns {boolean} True if used as dialog
477
+ *
478
+ * @private
479
+ * @ui5-restricted sap.ui.mdc.valueHelp.base.Content
480
+ */
481
+ Container.prototype.isDialog = function () {
482
+ var oValueHelp = this.getParent();
483
+ return oValueHelp && (oValueHelp.getDialog() === this || (this.isTypeahead() && !oValueHelp.getDialog() && this.getUseAsValueHelp()));
484
+ };
485
+
465
486
  /**
466
487
  * Determines if the container provides a own scroll functionality.
467
488
  * If not, the <code>Content</code> needs to provide a scrolling solution like a {@link sap.m.ScrollContainer ScrollContainer}.
@@ -472,7 +493,6 @@ sap.ui.define([
472
493
  *
473
494
  * @private
474
495
  * @ui5-restricted sap.ui.mdc.valueHelp.base.Content
475
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
476
496
  */
477
497
  Container.prototype.providesScrolling = function () {
478
498
  return false;
@@ -488,7 +508,6 @@ sap.ui.define([
488
508
  *
489
509
  * @private
490
510
  * @ui5-restricted sap.ui.mdc.valueHelp.base.Content
491
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
492
511
  */
493
512
  Container.prototype.getValueHelpDelegate = function () {
494
513
  var oValueHelp = this.getParent();
@@ -504,9 +523,8 @@ sap.ui.define([
504
523
  *
505
524
  * @private
506
525
  * @ui5-restricted sap.ui.mdc.valueHelp.base.Content
507
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
508
526
  */
509
- Container.prototype.getValueHelpDelegatePayload = function () {
527
+ Container.prototype.getValueHelpDelegatePayload = function () {
510
528
  var oValueHelp = this.getParent();
511
529
  return oValueHelp && oValueHelp.getPayload();
512
530
  };
@@ -521,9 +539,8 @@ sap.ui.define([
521
539
  *
522
540
  * @private
523
541
  * @ui5-restricted sap.ui.mdc.valueHelp.base.Content
524
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
525
542
  */
526
- Container.prototype.awaitValueHelpDelegate = function () {
543
+ Container.prototype.awaitValueHelpDelegate = function () {
527
544
  var oValueHelp = this.getParent();
528
545
  return oValueHelp && oValueHelp.awaitControlDelegate();
529
546
  };
@@ -537,9 +554,8 @@ sap.ui.define([
537
554
  *
538
555
  * @private
539
556
  * @ui5-restricted sap.ui.mdc.valueHelp.base.Content
540
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
541
557
  */
542
- Container.prototype.isValueHelpDelegateInitialized = function () {
558
+ Container.prototype.isValueHelpDelegateInitialized = function () {
543
559
  var oValueHelp = this.getParent();
544
560
  return oValueHelp && oValueHelp.bDelegateInitialized;
545
561
  };
@@ -554,7 +570,6 @@ sap.ui.define([
554
570
  * @returns {boolean} True if value help shall open as valuehelp
555
571
  * @private
556
572
  * @ui5-restricted sap.ui.mdc.ValueHelp
557
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
558
573
  */
559
574
  Container.prototype.getUseAsValueHelp = function() {
560
575
  return false;
@@ -566,7 +581,6 @@ sap.ui.define([
566
581
  * @returns {string} Name of the icon
567
582
  * @private
568
583
  * @ui5-restricted sap.ui.mdc.ValueHelp
569
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
570
584
  */
571
585
  Container.prototype.getValueHelpIcon = function() {
572
586
  // not define icon property on Container as it might be dependent Popover/Dialog or used content
@@ -580,7 +594,6 @@ sap.ui.define([
580
594
  * @returns {object} object with the aria-attibutes
581
595
  * @private
582
596
  * @ui5-restricted sap.ui.mdc.ValueHelp
583
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
584
597
  */
585
598
  Container.prototype.getAriaAttributes = function(iMaxConditions) {
586
599
 
@@ -604,7 +617,6 @@ sap.ui.define([
604
617
  * @returns {boolean} If <code>true</code>, the value help should open when user clicks into the connected field control
605
618
  * @private
606
619
  * @ui5-restricted sap.ui.mdc.ValueHelp
607
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
608
620
  */
609
621
  Container.prototype.shouldOpenOnClick = function() {
610
622
  return false;
@@ -616,9 +628,8 @@ sap.ui.define([
616
628
  * @returns {boolean} If <code>true</code>, the value help should open when user used the arrow keys in the connected field control
617
629
  * @private
618
630
  * @ui5-restricted sap.ui.mdc.ValueHelp
619
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
620
631
  */
621
- Container.prototype.shouldOpenOnNavigate = function() {
632
+ Container.prototype.shouldOpenOnNavigate = function() {
622
633
  return false;
623
634
  };
624
635
 
@@ -630,7 +641,6 @@ sap.ui.define([
630
641
  *
631
642
  * @private
632
643
  * @ui5-restricted sap.ui.mdc.ValueHelp
633
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
634
644
  */
635
645
  Container.prototype.isFocusInHelp = function() {
636
646
 
@@ -645,7 +655,6 @@ sap.ui.define([
645
655
  *
646
656
  * @private
647
657
  * @ui5-restricted sap.ui.mdc.ValueHelp
648
- * @ui5-metamodel This method also will be described in the UI5 (legacy) designtime metamodel
649
658
  */
650
659
  Container.prototype.isMultiSelect = function() {
651
660