@openui5/sap.ui.mdc 1.99.1 → 1.102.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 (257) hide show
  1. package/.eslintrc.json +19 -0
  2. package/THIRDPARTY.txt +5 -5
  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 +77 -77
  7. package/src/sap/ui/mdc/ChartDelegate.js +76 -21
  8. package/src/sap/ui/mdc/ChartRenderer.js +1 -1
  9. package/src/sap/ui/mdc/Control.js +11 -6
  10. package/src/sap/ui/mdc/Element.js +10 -6
  11. package/src/sap/ui/mdc/Field.js +26 -4
  12. package/src/sap/ui/mdc/FilterBar.js +1 -1
  13. package/src/sap/ui/mdc/FilterBarDelegate.js +26 -0
  14. package/src/sap/ui/mdc/FilterField.js +41 -3
  15. package/src/sap/ui/mdc/Link.js +3 -3
  16. package/src/sap/ui/mdc/LinkDelegate.js +7 -5
  17. package/src/sap/ui/mdc/MultiValueField.js +11 -1
  18. package/src/sap/ui/mdc/Table.js +340 -417
  19. package/src/sap/ui/mdc/TableDelegate.js +115 -35
  20. package/src/sap/ui/mdc/ValueHelp.js +150 -632
  21. package/src/sap/ui/mdc/ValueHelpDelegate.js +161 -8
  22. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -1
  23. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarActionRenderer.js +1 -1
  24. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  25. package/src/sap/ui/mdc/chart/ChartToolbar.js +18 -6
  26. package/src/sap/ui/mdc/chart/ChartTypeButton.js +11 -2
  27. package/src/sap/ui/mdc/chart/DrillBreadcrumbs.js +9 -7
  28. package/src/sap/ui/mdc/chart/DrillStackHandler.js +6 -6
  29. package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
  30. package/src/sap/ui/mdc/condition/Condition.js +14 -9
  31. package/src/sap/ui/mdc/condition/ConditionConverter.js +58 -6
  32. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  33. package/src/sap/ui/mdc/condition/FilterConverter.js +4 -2
  34. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +146 -34
  35. package/src/sap/ui/mdc/condition/Operator.js +98 -16
  36. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +80 -24
  37. package/src/sap/ui/mdc/condition/RangeOperator.js +5 -5
  38. package/src/sap/ui/mdc/designtime/Util.js +63 -0
  39. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbar.designtime.js +23 -30
  40. package/src/sap/ui/mdc/designtime/chart/Chart.designtime.js +16 -1
  41. package/src/sap/ui/mdc/designtime/filterbar/FilterBar.designtime.js +3 -1
  42. package/src/sap/ui/mdc/designtime/link/PanelItem.designtime.js +3 -1
  43. package/src/sap/ui/mdc/designtime/table/Table.designtime.js +39 -52
  44. package/src/sap/ui/mdc/enum/PropagationReason.js +43 -0
  45. package/src/sap/ui/mdc/enum/SelectType.js +3 -0
  46. package/src/sap/ui/mdc/field/BoolFieldHelp.js +1 -1
  47. package/src/sap/ui/mdc/field/ConditionFieldHelp.js +1 -1
  48. package/src/sap/ui/mdc/field/ConditionType.js +70 -22
  49. package/src/sap/ui/mdc/field/ConditionsType.js +8 -2
  50. package/src/sap/ui/mdc/field/CustomFieldHelp.js +1 -1
  51. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  52. package/src/sap/ui/mdc/field/DefineConditionPanel.js +30 -23
  53. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +76 -19
  54. package/src/sap/ui/mdc/field/FieldBase.js +84 -17
  55. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +41 -19
  56. package/src/sap/ui/mdc/field/FieldHelpBase.js +1 -1
  57. package/src/sap/ui/mdc/field/FieldInfoBase.js +2 -1
  58. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  59. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  60. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  61. package/src/sap/ui/mdc/field/FieldValueHelp.js +9 -4
  62. package/src/sap/ui/mdc/field/FieldValueHelpContentWrapperBase.js +1 -1
  63. package/src/sap/ui/mdc/field/FieldValueHelpDelegate.js +1 -1
  64. package/src/sap/ui/mdc/field/FieldValueHelpMTableWrapper.js +7 -4
  65. package/src/sap/ui/mdc/field/FieldValueHelpMdcTableWrapper.js +11 -3
  66. package/src/sap/ui/mdc/field/FieldValueHelpTableWrapperBase.js +3 -3
  67. package/src/sap/ui/mdc/field/FieldValueHelpUITableWrapper.js +31 -32
  68. package/src/sap/ui/mdc/field/InParameter.js +1 -1
  69. package/src/sap/ui/mdc/field/ListFieldHelp.js +1 -1
  70. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  71. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  72. package/src/sap/ui/mdc/field/OutParameter.js +1 -1
  73. package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
  74. package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
  75. package/src/sap/ui/mdc/field/ValueHelpPanel.js +1 -1
  76. package/src/sap/ui/mdc/field/content/ContentFactory.js +13 -1
  77. package/src/sap/ui/mdc/field/content/DateContent.js +27 -19
  78. package/src/sap/ui/mdc/field/content/DateTimeContent.js +42 -7
  79. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +128 -239
  80. package/src/sap/ui/mdc/filterbar/IFilterContainer.js +5 -0
  81. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +27 -2
  82. package/src/sap/ui/mdc/filterbar/aligned/FilterContainer.js +1 -0
  83. package/src/sap/ui/mdc/filterbar/aligned/FilterItemLayout.js +1 -0
  84. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +164 -64
  85. package/src/sap/ui/mdc/filterbar/p13n/FilterColumnLayout.js +2 -2
  86. package/src/sap/ui/mdc/filterbar/p13n/GroupContainer.js +7 -3
  87. package/src/sap/ui/mdc/filterbar/p13n/TableContainer.js +52 -14
  88. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +73 -23
  89. package/src/sap/ui/mdc/filterbar/vh/FilterContainer.js +1 -1
  90. package/src/sap/ui/mdc/flexibility/AggregationConfigFlex.js +48 -31
  91. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +4 -41
  92. package/src/sap/ui/mdc/flexibility/ChartItemFlex.js +36 -0
  93. package/src/sap/ui/mdc/flexibility/ChartTypeFlex.js +54 -0
  94. package/src/sap/ui/mdc/flexibility/ConditionFlex.js +49 -12
  95. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  96. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  97. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +0 -1
  98. package/src/sap/ui/mdc/flexibility/PropertyInfoFlex.js +2 -85
  99. package/src/sap/ui/mdc/library.js +30 -27
  100. package/src/sap/ui/mdc/link/ContactDetails.js +107 -23
  101. package/src/sap/ui/mdc/link/ContactDetailsAddressItem.js +1 -1
  102. package/src/sap/ui/mdc/link/ContactDetailsEmailItem.js +1 -1
  103. package/src/sap/ui/mdc/link/ContactDetailsItem.js +1 -1
  104. package/src/sap/ui/mdc/link/ContactDetailsPhoneItem.js +1 -1
  105. package/src/sap/ui/mdc/link/ContactDetailsRenderer.js +26 -0
  106. package/src/sap/ui/mdc/link/Factory.js +1 -1
  107. package/src/sap/ui/mdc/link/FakeFlpConnector.js +1 -1
  108. package/src/sap/ui/mdc/link/LinkItem.js +1 -1
  109. package/src/sap/ui/mdc/link/Panel.js +197 -22
  110. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  111. package/src/sap/ui/mdc/link/PanelRenderer.js +26 -0
  112. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  113. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  114. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  115. package/src/sap/ui/mdc/messagebundle.properties +11 -6
  116. package/src/sap/ui/mdc/messagebundle_ar.properties +9 -7
  117. package/src/sap/ui/mdc/messagebundle_bg.properties +7 -5
  118. package/src/sap/ui/mdc/messagebundle_ca.properties +7 -5
  119. package/src/sap/ui/mdc/messagebundle_cs.properties +7 -5
  120. package/src/sap/ui/mdc/messagebundle_cy.properties +7 -5
  121. package/src/sap/ui/mdc/messagebundle_da.properties +7 -5
  122. package/src/sap/ui/mdc/messagebundle_de.properties +7 -5
  123. package/src/sap/ui/mdc/messagebundle_el.properties +6 -4
  124. package/src/sap/ui/mdc/messagebundle_en.properties +7 -5
  125. package/src/sap/ui/mdc/messagebundle_en_GB.properties +7 -5
  126. package/src/sap/ui/mdc/messagebundle_en_US_sappsd.properties +7 -5
  127. package/src/sap/ui/mdc/messagebundle_en_US_saprigi.properties +7 -5
  128. package/src/sap/ui/mdc/messagebundle_en_US_saptrc.properties +7 -5
  129. package/src/sap/ui/mdc/messagebundle_es.properties +7 -5
  130. package/src/sap/ui/mdc/messagebundle_es_MX.properties +7 -5
  131. package/src/sap/ui/mdc/messagebundle_et.properties +7 -5
  132. package/src/sap/ui/mdc/messagebundle_fi.properties +7 -5
  133. package/src/sap/ui/mdc/messagebundle_fr.properties +7 -5
  134. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +7 -5
  135. package/src/sap/ui/mdc/messagebundle_hi.properties +7 -5
  136. package/src/sap/ui/mdc/messagebundle_hr.properties +7 -5
  137. package/src/sap/ui/mdc/messagebundle_hu.properties +7 -5
  138. package/src/sap/ui/mdc/messagebundle_id.properties +7 -5
  139. package/src/sap/ui/mdc/messagebundle_it.properties +7 -5
  140. package/src/sap/ui/mdc/messagebundle_iw.properties +6 -4
  141. package/src/sap/ui/mdc/messagebundle_ja.properties +8 -6
  142. package/src/sap/ui/mdc/messagebundle_kk.properties +7 -5
  143. package/src/sap/ui/mdc/messagebundle_ko.properties +6 -4
  144. package/src/sap/ui/mdc/messagebundle_lt.properties +7 -5
  145. package/src/sap/ui/mdc/messagebundle_lv.properties +7 -5
  146. package/src/sap/ui/mdc/messagebundle_ms.properties +7 -5
  147. package/src/sap/ui/mdc/messagebundle_nl.properties +7 -5
  148. package/src/sap/ui/mdc/messagebundle_no.properties +7 -5
  149. package/src/sap/ui/mdc/messagebundle_pl.properties +7 -5
  150. package/src/sap/ui/mdc/messagebundle_pt.properties +13 -11
  151. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +7 -5
  152. package/src/sap/ui/mdc/messagebundle_ro.properties +7 -5
  153. package/src/sap/ui/mdc/messagebundle_ru.properties +7 -5
  154. package/src/sap/ui/mdc/messagebundle_sh.properties +10 -8
  155. package/src/sap/ui/mdc/messagebundle_sk.properties +7 -5
  156. package/src/sap/ui/mdc/messagebundle_sl.properties +8 -6
  157. package/src/sap/ui/mdc/messagebundle_sv.properties +8 -6
  158. package/src/sap/ui/mdc/messagebundle_th.properties +7 -5
  159. package/src/sap/ui/mdc/messagebundle_tr.properties +10 -8
  160. package/src/sap/ui/mdc/messagebundle_uk.properties +7 -5
  161. package/src/sap/ui/mdc/messagebundle_vi.properties +7 -5
  162. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +7 -5
  163. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +7 -5
  164. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +23 -29
  165. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -141
  166. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -9
  167. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  168. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +354 -0
  169. package/src/sap/ui/mdc/odata/TypeUtil.js +2 -1
  170. package/src/sap/ui/mdc/odata/v4/ChartPropertyHelper.js +70 -3
  171. package/src/sap/ui/mdc/odata/v4/FieldBaseDelegate.js +8 -6
  172. package/src/sap/ui/mdc/odata/v4/FilterBarDelegate.js +116 -20
  173. package/src/sap/ui/mdc/odata/v4/ODataMetaModelUtil.js +2 -2
  174. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +29 -66
  175. package/src/sap/ui/mdc/odata/v4/TypeUtil.js +2 -4
  176. package/src/sap/ui/mdc/odata/v4/ValueHelpDelegate.js +65 -5
  177. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +353 -262
  178. package/src/sap/ui/mdc/p13n/AdaptationProvider.js +1 -1
  179. package/src/sap/ui/mdc/p13n/Engine.js +172 -69
  180. package/src/sap/ui/mdc/p13n/FlexUtil.js +26 -19
  181. package/src/sap/ui/mdc/p13n/PropertyHelper.js +2 -2
  182. package/src/sap/ui/mdc/p13n/StateUtil.js +34 -51
  183. package/src/sap/ui/mdc/p13n/UIManager.js +21 -14
  184. package/src/sap/ui/mdc/p13n/modification/ModificationHandler.js +0 -174
  185. package/src/sap/ui/mdc/p13n/modules/DefaultProviderRegistry.js +15 -12
  186. package/src/sap/ui/mdc/p13n/modules/xConfigAPI.js +219 -0
  187. package/src/sap/ui/mdc/p13n/panels/ActionToolbarPanel.js +6 -6
  188. package/src/sap/ui/mdc/p13n/panels/AdaptFiltersPanel.js +49 -27
  189. package/src/sap/ui/mdc/p13n/panels/ChartItemPanel.js +75 -15
  190. package/src/sap/ui/mdc/p13n/panels/FilterPanel.js +160 -0
  191. package/src/sap/ui/mdc/p13n/panels/GroupView.js +54 -28
  192. package/src/sap/ui/mdc/p13n/panels/LinkSelectionPanel.js +54 -18
  193. package/src/sap/ui/mdc/p13n/subcontroller/ActionToolbarController.js +4 -7
  194. package/src/sap/ui/mdc/p13n/subcontroller/AdaptFiltersController.js +1 -2
  195. package/src/sap/ui/mdc/p13n/subcontroller/AggregateController.js +2 -2
  196. package/src/sap/ui/mdc/p13n/subcontroller/BaseController.js +30 -2
  197. package/src/sap/ui/mdc/p13n/subcontroller/ChartTypeController.js +46 -0
  198. package/src/sap/ui/mdc/p13n/subcontroller/ColumnWidthController.js +37 -6
  199. package/src/sap/ui/mdc/p13n/subcontroller/FilterController.js +32 -10
  200. package/src/sap/ui/mdc/p13n/subcontroller/GroupController.js +9 -2
  201. package/src/sap/ui/mdc/p13n/subcontroller/LinkPanelController.js +1 -0
  202. package/src/sap/ui/mdc/p13n/subcontroller/SortController.js +4 -4
  203. package/src/sap/ui/mdc/table/Column.js +271 -132
  204. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  205. package/src/sap/ui/mdc/table/GridTableType.js +70 -27
  206. package/src/sap/ui/mdc/table/PropertyHelper.js +92 -163
  207. package/src/sap/ui/mdc/table/ResponsiveTableType.js +133 -40
  208. package/src/sap/ui/mdc/table/RowActionItem.js +119 -0
  209. package/src/sap/ui/mdc/table/RowSettings.js +42 -1
  210. package/src/sap/ui/mdc/table/TableSettings.js +10 -22
  211. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +2 -2
  212. package/src/sap/ui/mdc/table/menu/Item.js +78 -0
  213. package/src/sap/ui/mdc/table/menu/ItemContainer.js +60 -0
  214. package/src/sap/ui/mdc/table/menu/QuickActionContainer.js +151 -0
  215. package/src/sap/ui/mdc/themes/base/Chart.less +11 -0
  216. package/src/sap/ui/mdc/themes/base/ValueHelpDialog.less +1 -0
  217. package/src/sap/ui/mdc/ui/Container.js +0 -240
  218. package/src/sap/ui/mdc/util/DateUtil.js +56 -6
  219. package/src/sap/ui/mdc/util/FilterUtil.js +2 -2
  220. package/src/sap/ui/mdc/util/IdentifierUtil.js +3 -3
  221. package/src/sap/ui/mdc/util/PromiseCache.js +6 -2
  222. package/src/sap/ui/mdc/util/PropertyHelper.js +205 -76
  223. package/src/sap/ui/mdc/util/TypeUtil.js +1 -1
  224. package/src/sap/ui/mdc/valuehelp/Dialog.js +291 -66
  225. package/src/sap/ui/mdc/valuehelp/Popover.js +8 -5
  226. package/src/sap/ui/mdc/valuehelp/base/Container.js +71 -52
  227. package/src/sap/ui/mdc/valuehelp/base/Content.js +57 -24
  228. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
  229. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +196 -283
  230. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +6 -6
  231. package/src/sap/ui/mdc/valuehelp/content/Bool.js +4 -4
  232. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +4 -4
  233. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +16 -13
  234. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +66 -66
  235. package/src/sap/ui/mdc/valuehelp/content/MTable.js +100 -185
  236. package/test/sap/ui/mdc/testutils/opa/chart/ActionsBase.js +48 -2
  237. package/test/sap/ui/mdc/testutils/opa/chart/TestObjects.js +6 -5
  238. package/test/sap/ui/mdc/testutils/opa/chartNew/TestObjects.js +4 -5
  239. package/test/sap/ui/mdc/testutils/opa/filterbar/Actions.js +55 -4
  240. package/test/sap/ui/mdc/testutils/opa/filterbar/TestObjects.js +2 -3
  241. package/test/sap/ui/mdc/testutils/opa/link/Actions.js +53 -12
  242. package/test/sap/ui/mdc/testutils/opa/link/TestObjects.js +6 -6
  243. package/test/sap/ui/mdc/testutils/opa/p13n/Actions.js +111 -128
  244. package/test/sap/ui/mdc/testutils/opa/p13n/waitForSelectWithSelectedTextOnPanel.js +5 -2
  245. package/test/sap/ui/mdc/testutils/opa/table/Actions.js +70 -0
  246. package/test/sap/ui/mdc/testutils/opa/table/TestObjects.js +9 -7
  247. package/test/sap/ui/mdc/testutils/opa/valueHelp/Actions.js +2 -2
  248. package/src/sap/ui/mdc/filterbar/vh/GenericFilterBarDelegate.js +0 -150
  249. package/src/sap/ui/mdc/link/ContactDetails.control.xml +0 -29
  250. package/src/sap/ui/mdc/link/Panel.control.xml +0 -36
  251. package/src/sap/ui/mdc/link/PanelListItem.control.xml +0 -24
  252. package/src/sap/ui/mdc/link/PanelListItem.js +0 -101
  253. package/src/sap/ui/mdc/p13n/panels/BasePanel.js +0 -721
  254. package/src/sap/ui/mdc/p13n/panels/ListView.js +0 -408
  255. package/src/sap/ui/mdc/p13n/panels/SelectionPanel.js +0 -92
  256. package/src/sap/ui/mdc/p13n/panels/SortPanel.js +0 -150
  257. package/src/sap/ui/mdc/ui/ContainerItem.js +0 -79
@@ -4,7 +4,8 @@
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
7
- ], function() {
7
+ "sap/ui/mdc/p13n/Engine"
8
+ ], function(Engine) {
8
9
  "use strict";
9
10
 
10
11
  /**
@@ -43,11 +44,15 @@ sap.ui.define([
43
44
  * <li><code>aggregated</code> - Set to <code>false</code> to remove an aggregation.</li>
44
45
  * </ul>
45
46
  *
47
+ * <b>Note:</b>To improve the performance, you should avoid additional calls of the control’s delegate.
48
+ * To do this, the <code>propertyInfo</code> property of the relevant control can be enriched with the properties used in the provided state.
49
+ *
50
+ *
46
51
  * @private
47
52
  * @ui5-restricted sap.fe
48
53
  * @MDC_PUBLIC_CANDIDATE
49
54
  *
50
- * @param {object} oControl The control that is used to create changes and to which changes are made
55
+ * @param {sap.ui.mdc.Control} oControl The control that is used to create changes and to which changes are made
51
56
  * @param {object} oState The state in which the control is represented
52
57
  *
53
58
  * @example
@@ -95,7 +100,8 @@ sap.ui.define([
95
100
  * @returns {Promise} <code>Promise</code> that resolves after all changes have been applied
96
101
  */
97
102
  applyExternalState: function(oControl, oState){
98
- return oControl.getEngine().applyState(oControl, StateUtil._internalizeKeys(oState));
103
+ var oInternalState = Engine.getInstance().internalizeKeys(oControl, oState);
104
+ return Engine.getInstance().applyState(oControl, oInternalState);
99
105
  },
100
106
 
101
107
  /**
@@ -108,13 +114,33 @@ sap.ui.define([
108
114
  * @private
109
115
  * @ui5-restricted sap.fe
110
116
  * @MDC_PUBLIC_CANDIDATE
111
- * @param {object} oControl The control instance implementing IxState to retrieve the externalized state
117
+ * @param {sap.ui.mdc.Control} oControl The control instance implementing IxState to retrieve the externalized state
112
118
  *
113
119
  * @returns {Promise} <code>Promise</code> that resolves after the current state has been retrieved
114
120
  */
115
121
  retrieveExternalState: function(oControl) {
116
- return oControl.getEngine().retrieveState(oControl).then(function(oEngineState){
117
- return StateUtil._externalizeKeys(oEngineState);
122
+ return Engine.getInstance().retrieveState(oControl).then(function(oEngineState){
123
+ return Engine.getInstance().externalizeKeys(oControl, oEngineState);
124
+ });
125
+ },
126
+
127
+ /**
128
+ * Creates a delta between two states.
129
+ *
130
+ * @private
131
+ * @ui5-restricted sap.fe
132
+ *
133
+ * @MDC_PUBLIC_CANDIDATE
134
+ * @param {sap.ui.mdc.Control} oControl The control instance implementing IxState
135
+ * @param {object} oOldState The prior state
136
+ * @param {object} oNewState The new state
137
+ *
138
+ * @returns {Promise} <code>Promise</code> that resolves after the current state has been diffed
139
+ */
140
+ diffState: function(oControl, oOldState, oNewState) {
141
+ return sap.ui.mdc.p13n.Engine.getInstance().diffState(oControl, Engine.getInstance().internalizeKeys(oControl, oOldState), Engine.getInstance().internalizeKeys(oControl, oNewState))
142
+ .then(function(oEngineStateDiff){
143
+ return Engine.getInstance().externalizeKeys(oControl, oEngineStateDiff);
118
144
  });
119
145
  },
120
146
 
@@ -128,7 +154,7 @@ sap.ui.define([
128
154
  * @param {function} fnListener fnFunction The handler function to call when the event occurs
129
155
  */
130
156
  attachStateChange: function(fnListener) {
131
- sap.ui.mdc.p13n.Engine.getInstance().stateHandlerRegistry.attachChange(fnListener);
157
+ Engine.getInstance().stateHandlerRegistry.attachChange(fnListener);
132
158
  },
133
159
 
134
160
  /**
@@ -141,50 +167,7 @@ sap.ui.define([
141
167
  * @param {function} fnListener fnFunction The handler function to detach from the event
142
168
  */
143
169
  detachStateChange: function(fnListener) {
144
- sap.ui.mdc.p13n.Engine.getInstance().stateHandlerRegistry.detachChange(fnListener);
145
- },
146
-
147
- _externalizeKeys: function(oInternalState) {
148
- var mKeysForState = {
149
- Sort: "sorters",
150
- Group: "groupLevels",
151
- Aggregate: "aggregations",
152
- Filter: "filter",
153
- Item: "items",
154
- Column: "items",
155
- ColumnWidth: "supplementaryConfig"
156
- };
157
- var oTransformedState = {};
158
-
159
- Object.keys(oInternalState).forEach(function(sProvidedEngineKey){
160
- var sExternalKey = mKeysForState[sProvidedEngineKey];
161
- var sTransformedKey = sExternalKey || sProvidedEngineKey;//no external key --> provide internal key
162
- oTransformedState[sTransformedKey] = oInternalState[sProvidedEngineKey];
163
- });
164
- return oTransformedState;
165
- },
166
-
167
- _internalizeKeys: function(oExternalState) {
168
- var mKeysForEngine = {
169
- sorters: ["Sort"],
170
- groupLevels: ["Group"],
171
- aggregations: ["Aggregate"],
172
- filter: ["Filter"],
173
- items: ["Item", "Column"],
174
- supplementaryConfig: ["ColumnWidth"]
175
- };
176
-
177
- var oTransformedState = {};
178
-
179
- Object.keys(oExternalState).forEach(function(sProvidedEngineKey){
180
- if (mKeysForEngine[sProvidedEngineKey]) {
181
- mKeysForEngine[sProvidedEngineKey].forEach(function(sTransformedKey){
182
- oTransformedState[sTransformedKey] = oExternalState[sProvidedEngineKey];
183
- });
184
- }
185
- });
186
-
187
- return oTransformedState;
170
+ Engine.getInstance().stateHandlerRegistry.detachChange(fnListener);
188
171
  }
189
172
 
190
173
  };
@@ -10,8 +10,9 @@ sap.ui.define([
10
10
  "sap/m/p13n/Container",
11
11
  "sap/m/p13n/AbstractContainerItem",
12
12
  "sap/base/util/UriParameters",
13
- "sap/base/Log"
14
- ], function (BaseObject, P13nBuilder, P13nContainer, AbstractContainerItem, SAPUriParameters, Log) {
13
+ "sap/base/Log",
14
+ "sap/ui/thirdparty/jquery"
15
+ ], function (BaseObject, P13nBuilder, P13nContainer, AbstractContainerItem, SAPUriParameters, Log, jQuery) {
15
16
  "use strict";
16
17
 
17
18
  var ERROR_INSTANCING = "UIManager: This class is a singleton and should not be used without an AdaptationProvider. Please use 'sap.ui.mdc.p13n.Engine.getInstance().uimanager' instead";
@@ -20,7 +21,7 @@ sap.ui.define([
20
21
  var oUIManager;
21
22
 
22
23
  //Used for experimental features (such as livemode)
23
- var oURLParams = new SAPUriParameters(window.location.search);
24
+ var oURLParams = SAPUriParameters.fromQuery(window.location.search);
24
25
 
25
26
  /**
26
27
  * Constructor for a new UIManager.
@@ -32,7 +33,7 @@ sap.ui.define([
32
33
  * @extends sap.ui.base.Object
33
34
  *
34
35
  * @author SAP SE
35
- * @version 1.99.1
36
+ * @version 1.102.0
36
37
  *
37
38
  * @private
38
39
  * @ui5-restricted sap.ui.mdc
@@ -73,7 +74,7 @@ sap.ui.define([
73
74
  this.bLiveMode = false;
74
75
 
75
76
  //!!!Warning: experimental and only for testing purposes!!!----------
76
- if (oURLParams.getAll("sap-ui-xx-p13nLiveMode")[0] === "true"){
77
+ if (oURLParams.get("sap-ui-xx-p13nLiveMode") === "true"){
77
78
  this.bLiveMode = true;
78
79
  Log.warning("Please note that the p13n liveMode is experimental");
79
80
  }
@@ -101,7 +102,7 @@ sap.ui.define([
101
102
  * @ui5-restricted sap.ui.mdc
102
103
  *
103
104
  * @param {sap.ui.mdc.Control} vControl The registered control instance
104
- * @param {string} sKey The key for the according Controller
105
+ * @param {string|string[]} vKey The key for the according Controller
105
106
  * @param {Object[]} aCustomInfo A custom set of propertyinfos as base to create the UI
106
107
  *
107
108
  * @returns {Promise} A Promise resolving in the P13n UI.
@@ -157,8 +158,8 @@ sap.ui.define([
157
158
  *
158
159
  * @private
159
160
  *
160
- * @param {sap.ui.mdc.Control} vControl The registered control instance.
161
- * @param {string} aKeys The registerd key to get the corresponding Controller.
161
+ * @param {sap.ui.mdc.Control} oControl The registered control instance.
162
+ * @param {string} aKeys The registered key to get the corresponding Controller.
162
163
  *
163
164
  * @returns {Promise} A Promise resolving in the according container
164
165
  * (Depending on the Controllers livemode config).
@@ -207,7 +208,11 @@ sap.ui.define([
207
208
  }.bind(this));
208
209
 
209
210
  return Promise.all(aPAdaptationUI).then(function(aUIs){
210
- var oPopupContent = bUseP13nContainer ? new P13nContainer() : aUIs[0].panel;
211
+ var oPopupContent = bUseP13nContainer ? new P13nContainer({
212
+ afterViewSwitch: function(oEvt) {
213
+ this.oAdaptationProvider.validateP13n(oControl, oEvt.getParameter("target"), oEvt.getSource().getCurrentViewContent());
214
+ }.bind(this)
215
+ }) : aUIs[0].panel;
211
216
  if (bUseP13nContainer) {
212
217
  aUIs.forEach(function(mUI){
213
218
  if (mUI.panel) {
@@ -233,9 +238,10 @@ sap.ui.define([
233
238
  *
234
239
  * @private
235
240
  *
236
- * @param {sap.ui.mdc.Control} vControl The registered control instance.
237
- * @param {string} sKey The registerd key to get the corresponding Controller.
238
- * @param {sap.ui.core.Control} oPanel The control instance which is set in the content area of the container.
241
+ * @param {sap.ui.mdc.Control} oControl The registered control instance.
242
+ * @param {string[]} aKeys The registered keys to get the corresponding Controller.
243
+ * @param {*} oPopupContent
244
+ * @param {*} oUISettings
239
245
  *
240
246
  * @returns {Promise} Returns a Promise resolving in the container instance
241
247
  */
@@ -297,9 +303,10 @@ sap.ui.define([
297
303
  *
298
304
  * @private
299
305
  *
300
- * @param {sap.ui.mdc.Control} vControl The registered control instance.
301
- * @param {string} sKey The registerd key to get the corresponding Controller.
306
+ * @param {sap.ui.mdc.Control} oControl The registered control instance.
307
+ * @param {string[]} aKeys The registerd key to get the corresponding Controller.
302
308
  * @param {sap.ui.core.Control} oPanel The control instance which is set in the content area of the container.
309
+ * @param {object} mUISettings
303
310
  *
304
311
  * @returns {sap.m.ResponsivePopover} The popover instance.
305
312
  */
@@ -76,180 +76,6 @@ sap.ui.define([
76
76
  return false;
77
77
  };
78
78
 
79
- /**
80
- * Enhances the $aggregactionconfig object for a given mdc control instance.
81
- *
82
- * @param {sap.ui.core.Element} oControl The according element which should be checked
83
- * @param {object} oModificationPayload An object providing a modification handler specific payload
84
- * @param {object} oModificationPayload.name The affected property name
85
- * @param {object} oModificationPayload.controlMeta Object describing which config is affected
86
- * @param {object} oModificationPayload.controlMeta.aggregation The affected aggregation name (such as <code>columns</code> or <code>filterItems</code>)
87
- * @param {object} oModificationPayload.controlMeta.property The affected property name (such as <code>width</code> or <code>lable</code>)
88
- * @param {object} oModificationPayload.value The value that should be written in nthe xConfig
89
- * @param {object} [oModificationPayload.propertyBag] Optional propertybag for different modification handler derivations
90
- *
91
- * @returns {Promise<object>} Promise resolving to the adapted xConfig object
92
- */
93
- ModificationHandler.prototype.enhanceConfig = function(oControl, oModificationPayload) {
94
- var mPropertyBag = oModificationPayload.propertyBag;
95
- var oModifier = mPropertyBag ? mPropertyBag.modifier : JsControlTreeModifier;
96
- var sPropertyInfoKey = oModificationPayload.name;
97
- var mControlMeta = oModificationPayload.controlMeta;
98
-
99
- var sAffectedAggregation = mControlMeta.aggregation;
100
- var sAffectedProperty = mControlMeta.property;
101
-
102
- var vValue = oModificationPayload.value;
103
- var oControlMetadata;
104
- var sAggregationName;
105
- var oXConfig;
106
-
107
- return oModifier.getControlMetadata(oControl)
108
- .then(function(oRetrievedControlMetadata) {
109
- oControlMetadata = oRetrievedControlMetadata;
110
- sAggregationName = sAffectedAggregation ? sAffectedAggregation : oControlMetadata.getDefaultAggregation().name;
111
- return oModifier.getAggregation(oControl, "customData");
112
- })
113
- .then(function(aCustomData) {
114
-
115
- return Promise.all(aCustomData.map(function(oCustomData){
116
- return oModifier.getProperty(oCustomData, "key");
117
- })).then(function(aCustomDataKeys){
118
- return aCustomData.reduce(function(oResult, mCustomData, iIndex){
119
- return aCustomDataKeys[iIndex] === "xConfig" ? mCustomData : oResult;
120
- }, undefined);
121
- });
122
- })
123
- .then(function(oRetrievedXConfig) {
124
- oXConfig = oRetrievedXConfig;
125
- if (oXConfig) {
126
- return oModifier.getProperty(oXConfig, "value");
127
- }
128
- return {
129
- aggregations: {}
130
- };
131
- })
132
- .then(function(oConfig) {
133
- if (!oConfig.aggregations.hasOwnProperty(sAggregationName)) {
134
- if (oControlMetadata.hasAggregation(sAggregationName)) {
135
- oConfig.aggregations[sAggregationName] = {};
136
- } else {
137
- throw new Error("The aggregation " + sAggregationName + " does not exist for" + oControl);
138
- }
139
- }
140
-
141
- if (!oConfig.aggregations.hasOwnProperty(sPropertyInfoKey)) {
142
- oConfig.aggregations[sAggregationName][sPropertyInfoKey] = {};
143
- }
144
-
145
- if (vValue !== null) {
146
- oConfig.aggregations[sAggregationName][sPropertyInfoKey][sAffectedProperty] = vValue;
147
- } else {
148
- delete oConfig.aggregations[sAggregationName][sPropertyInfoKey][sAffectedProperty];
149
-
150
- //Delete empty property name object
151
- if (Object.keys(oConfig.aggregations[sAggregationName][sPropertyInfoKey]).length === 0) {
152
- delete oConfig.aggregations[sAggregationName][sPropertyInfoKey];
153
-
154
- //Delete empty aggregation name object
155
- if (Object.keys(oConfig.aggregations[sAggregationName]).length === 0) {
156
- delete oConfig.aggregations[sAggregationName];
157
- }
158
- }
159
- }
160
-
161
- var oAppComponent = mPropertyBag ? mPropertyBag.appComponent : undefined;
162
-
163
- if (!oControl._pXConfigCreation) {
164
- oControl._pXConfigCreation = oModifier.createAndAddCustomData(oControl, "xConfig", oConfig, oAppComponent);
165
- return oControl._pXConfigCreation
166
- .then(function(){
167
- return oConfig;
168
- });
169
- } else {
170
- oControl._pXConfigCreation
171
- .then(function(oCustomData){
172
- oModifier.setProperty(oCustomData, "value", oConfig);
173
- return oConfig;
174
- });
175
- }
176
- });
177
- };
178
-
179
- /**
180
- * Returns a copy of the xConfig object
181
- *
182
- * @param {sap.ui.core.Element} oControl The according element which should be checked
183
- * @param {object} [oModificationPayload] An object providing a modification handler specific payload
184
- * @param {object} [oModificationPayload.propertyBag] Optional propertybag for different modification handler derivations
185
- *
186
- * @returns {Promise<object>|object} A promise resolving to the adapted xConfig object or the object directly
187
- */
188
- ModificationHandler.prototype.readConfig = function(oControl, oModificationPayload) {
189
- var oConfig, oAggregationConfig;
190
-
191
- if (oModificationPayload) {
192
- var oModifier = oModificationPayload.propertyBag ? oModificationPayload.propertyBag.modifier : JsControlTreeModifier;
193
- return oModifier.getAggregation(oControl, "customData")
194
- .then(function(aCustomData) {
195
- return Promise.all(aCustomData.map(function(oCustomData){
196
- return oModifier.getProperty(oCustomData, "key");
197
- })).then(function(aCustomDataKeys){
198
- return aCustomData.reduce(function(oResult, mCustomData, iIndex){
199
- return aCustomDataKeys[iIndex] === "xConfig" ? mCustomData : oResult;
200
- }, undefined);
201
- });
202
- })
203
- .then(function(oAggregationConfig) {
204
- if (oAggregationConfig) {
205
- return oModifier.getProperty(oAggregationConfig, "value")
206
- .then(function(oValue) {
207
- return merge({}, oValue);
208
- });
209
- }
210
- return null;
211
- });
212
- }
213
-
214
- // These functions are used instead of the modifier to avoid that the
215
- // entire call stack is changed to async when it's not needed
216
- var fnGetAggregationSync = function(oParent, sAggregationName) {
217
- var fnFindAggregation = function(oControl, sAggregationName) {
218
- if (oControl) {
219
- if (oControl.getMetadata) {
220
- var oMetadata = oControl.getMetadata();
221
- var oAggregations = oMetadata.getAllAggregations();
222
- if (oAggregations) {
223
- return oAggregations[sAggregationName];
224
- }
225
- }
226
- }
227
- return undefined;
228
- };
229
-
230
- var oAggregation = fnFindAggregation(oParent, sAggregationName);
231
- if (oAggregation) {
232
- return oParent[oAggregation._sGetter]();
233
- }
234
- return undefined;
235
- };
236
-
237
- var fnGetPropertySync = function(oControl, sPropertyName) {
238
- var oMetadata = oControl.getMetadata().getPropertyLikeSetting(sPropertyName);
239
- if (oMetadata) {
240
- var sPropertyGetter = oMetadata._sGetter;
241
- return oControl[sPropertyGetter]();
242
- }
243
- return undefined;
244
- };
245
-
246
- oAggregationConfig = fnGetAggregationSync(oControl, "customData").find(function(oCustomData){
247
- return fnGetPropertySync(oCustomData, "key") == "xConfig";
248
- });
249
- oConfig = oAggregationConfig ? merge({}, fnGetPropertySync(oAggregationConfig, "value")) : null;
250
- return oConfig;
251
- };
252
-
253
79
  ModificationHandler.getInstance = function() {
254
80
  if (!oModificationHandler){
255
81
  oModificationHandler = new ModificationHandler();
@@ -25,16 +25,16 @@ sap.ui.define([
25
25
  * @extends sap.ui.base.Object
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.99.1
28
+ * @version 1.102.0
29
29
  *
30
30
  * @private
31
31
  * @ui5-restricted sap.ui.mdc
32
32
  * @experimental As of version 1.89
33
33
  * @since 1.89
34
- * @alias sap.ui.mdc.p13n.DefaultProviderRegistry
34
+ * @alias sap.ui.mdc.p13n.modules.DefaultProviderRegistry
35
35
  */
36
36
  var DefaultProviderRegistry = BaseObject.extend("sap.ui.mdc.p13n.modules.DefaultProviderRegistry", {
37
- constructor: function() {
37
+ constructor: function(oEngine) {
38
38
 
39
39
  if (oDefaultProviderRegistry) {
40
40
  throw Error(ERROR_INSTANCING);
@@ -42,6 +42,7 @@ sap.ui.define([
42
42
 
43
43
  BaseObject.call(this);
44
44
  this._mDefaultProviders = {};
45
+ this._oEngine = oEngine;
45
46
  }
46
47
  });
47
48
 
@@ -54,27 +55,29 @@ sap.ui.define([
54
55
  this._mDefaultProviders[sProviderName].destroy();
55
56
  delete this._mDefaultProviders[sProviderName];
56
57
  }.bind(this));
58
+ this._oEngine = null;
57
59
  BaseObject.prototype.destroy.apply(this, arguments);
60
+ oDefaultProviderRegistry = null;
58
61
  };
59
62
 
60
63
  /**
61
64
  * @private
62
65
  * @ui5-restricted sap.ui.mdc
63
66
  *
64
- * Attaches a control to a default persistence provider held inside the DefaultProviderRegistry for the given <code>PersistenceMode</code>
67
+ * Attaches an element to a default persistence provider held inside the DefaultProviderRegistry for the given <code>PersistenceMode</code>
65
68
  *
66
- * @param {sap.ui.mdc.Control|string} vControl The control instance or a control id.
69
+ * @param {sap.ui.core.Element|string} vElement The control instance or an element id.
67
70
  * @param {sap.ui.mdc.enum.PersistenceMode} sPersistenceMode Desired persistence mode for the retrieved persistence provider
68
71
  * @returns {sap.ui.mdc.p13n.PersistenceProvider} Returns a persistence provider instance, if possible
69
72
  */
70
- DefaultProviderRegistry.prototype.attach = function (vControl, sPersistenceMode) {
71
- if (vControl.getEngine().isRegisteredForModification(vControl)) { // Modification settings for a registered control are only determined once in the Engine
72
- throw new Error("DefaultProviderRegistry: You must not change the modificationSettings for an already registered control");
73
+ DefaultProviderRegistry.prototype.attach = function (vElement, sPersistenceMode) {
74
+ if (this._oEngine.isRegisteredForModification(vElement)) { // Modification settings for a registered element are only determined once in the Engine
75
+ throw new Error("DefaultProviderRegistry: You must not change the modificationSettings for an already registered element");
73
76
  }
74
77
  var oDefaultProvider = this._retrieveDefaultProvider(sPersistenceMode);
75
- var sControlId = typeof vControl === "string" ? vControl : vControl.getId();
78
+ var sControlId = typeof vElement === "string" ? vElement : vElement.getId();
76
79
  if (oDefaultProvider.getFor().indexOf(sControlId) === -1) {
77
- oDefaultProvider.addFor(vControl);
80
+ oDefaultProvider.addFor(vElement);
78
81
  }
79
82
 
80
83
  return oDefaultProvider;
@@ -115,9 +118,9 @@ sap.ui.define([
115
118
  *
116
119
  * This method is the central point of access to the DefaultProviderRegistry Singleton.
117
120
  */
118
- DefaultProviderRegistry.getInstance = function() {
121
+ DefaultProviderRegistry.getInstance = function(oEngine) {
119
122
  if (!oDefaultProviderRegistry) {
120
- oDefaultProviderRegistry = new DefaultProviderRegistry();
123
+ oDefaultProviderRegistry = new DefaultProviderRegistry(oEngine);
121
124
  }
122
125
  return oDefaultProviderRegistry;
123
126
  };