@openui5/sap.ui.mdc 1.99.0 → 1.100.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 (173) hide show
  1. package/THIRDPARTY.txt +2 -2
  2. package/package.json +4 -4
  3. package/src/sap/ui/mdc/.library +1 -1
  4. package/src/sap/ui/mdc/ActionToolbar.js +1 -1
  5. package/src/sap/ui/mdc/Chart.js +50 -32
  6. package/src/sap/ui/mdc/ChartDelegate.js +66 -21
  7. package/src/sap/ui/mdc/ChartRenderer.js +1 -1
  8. package/src/sap/ui/mdc/Control.js +11 -6
  9. package/src/sap/ui/mdc/Element.js +10 -6
  10. package/src/sap/ui/mdc/Field.js +19 -4
  11. package/src/sap/ui/mdc/FilterBar.js +1 -1
  12. package/src/sap/ui/mdc/FilterBarDelegate.js +26 -0
  13. package/src/sap/ui/mdc/FilterField.js +41 -3
  14. package/src/sap/ui/mdc/Link.js +3 -3
  15. package/src/sap/ui/mdc/MultiValueField.js +11 -1
  16. package/src/sap/ui/mdc/Table.js +73 -39
  17. package/src/sap/ui/mdc/TableDelegate.js +28 -1
  18. package/src/sap/ui/mdc/ValueHelp.js +8 -3
  19. package/src/sap/ui/mdc/ValueHelpDelegate.js +2 -1
  20. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -1
  21. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarActionRenderer.js +1 -1
  22. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  23. package/src/sap/ui/mdc/chart/ChartToolbar.js +13 -6
  24. package/src/sap/ui/mdc/chart/DrillBreadcrumbs.js +7 -7
  25. package/src/sap/ui/mdc/chart/DrillStackHandler.js +6 -6
  26. package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
  27. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  28. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  29. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  30. package/src/sap/ui/mdc/condition/FilterConverter.js +4 -2
  31. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +133 -25
  32. package/src/sap/ui/mdc/condition/Operator.js +4 -2
  33. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +78 -24
  34. package/src/sap/ui/mdc/condition/RangeOperator.js +5 -5
  35. package/src/sap/ui/mdc/designtime/Util.js +63 -0
  36. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbar.designtime.js +23 -30
  37. package/src/sap/ui/mdc/designtime/chart/Chart.designtime.js +3 -0
  38. package/src/sap/ui/mdc/designtime/link/PanelItem.designtime.js +3 -1
  39. package/src/sap/ui/mdc/designtime/table/Table.designtime.js +39 -52
  40. package/src/sap/ui/mdc/field/BoolFieldHelp.js +1 -1
  41. package/src/sap/ui/mdc/field/ConditionFieldHelp.js +1 -1
  42. package/src/sap/ui/mdc/field/ConditionType.js +15 -4
  43. package/src/sap/ui/mdc/field/ConditionsType.js +2 -1
  44. package/src/sap/ui/mdc/field/CustomFieldHelp.js +1 -1
  45. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  46. package/src/sap/ui/mdc/field/DefineConditionPanel.js +16 -5
  47. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +76 -19
  48. package/src/sap/ui/mdc/field/FieldBase.js +62 -11
  49. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +1 -1
  50. package/src/sap/ui/mdc/field/FieldHelpBase.js +1 -1
  51. package/src/sap/ui/mdc/field/FieldInfoBase.js +2 -1
  52. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  53. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  54. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  55. package/src/sap/ui/mdc/field/FieldValueHelp.js +4 -1
  56. package/src/sap/ui/mdc/field/FieldValueHelpContentWrapperBase.js +1 -1
  57. package/src/sap/ui/mdc/field/FieldValueHelpDelegate.js +1 -1
  58. package/src/sap/ui/mdc/field/FieldValueHelpMTableWrapper.js +5 -4
  59. package/src/sap/ui/mdc/field/FieldValueHelpMdcTableWrapper.js +5 -3
  60. package/src/sap/ui/mdc/field/FieldValueHelpTableWrapperBase.js +1 -1
  61. package/src/sap/ui/mdc/field/FieldValueHelpUITableWrapper.js +7 -7
  62. package/src/sap/ui/mdc/field/InParameter.js +1 -1
  63. package/src/sap/ui/mdc/field/ListFieldHelp.js +1 -1
  64. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  65. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  66. package/src/sap/ui/mdc/field/OutParameter.js +1 -1
  67. package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
  68. package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
  69. package/src/sap/ui/mdc/field/ValueHelpPanel.js +1 -1
  70. package/src/sap/ui/mdc/field/content/ContentFactory.js +5 -1
  71. package/src/sap/ui/mdc/field/content/DateContent.js +27 -19
  72. package/src/sap/ui/mdc/field/content/DateTimeContent.js +0 -6
  73. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +76 -208
  74. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +27 -2
  75. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +127 -57
  76. package/src/sap/ui/mdc/filterbar/p13n/FilterColumnLayout.js +2 -2
  77. package/src/sap/ui/mdc/filterbar/p13n/GroupContainer.js +7 -3
  78. package/src/sap/ui/mdc/filterbar/p13n/TableContainer.js +52 -14
  79. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +37 -19
  80. package/src/sap/ui/mdc/filterbar/vh/FilterContainer.js +1 -1
  81. package/src/sap/ui/mdc/flexibility/AggregationConfigFlex.js +48 -31
  82. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  83. package/src/sap/ui/mdc/flexibility/ChartItemFlex.js +36 -0
  84. package/src/sap/ui/mdc/flexibility/ConditionFlex.js +47 -10
  85. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  86. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  87. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +0 -1
  88. package/src/sap/ui/mdc/flexibility/PropertyInfoFlex.js +2 -85
  89. package/src/sap/ui/mdc/library.js +11 -4
  90. package/src/sap/ui/mdc/link/ContactDetails.js +1 -1
  91. package/src/sap/ui/mdc/link/ContactDetailsAddressItem.js +1 -1
  92. package/src/sap/ui/mdc/link/ContactDetailsEmailItem.js +1 -1
  93. package/src/sap/ui/mdc/link/ContactDetailsItem.js +1 -1
  94. package/src/sap/ui/mdc/link/ContactDetailsPhoneItem.js +1 -1
  95. package/src/sap/ui/mdc/link/Factory.js +1 -1
  96. package/src/sap/ui/mdc/link/FakeFlpConnector.js +1 -1
  97. package/src/sap/ui/mdc/link/LinkItem.js +1 -1
  98. package/src/sap/ui/mdc/link/Panel.js +1 -1
  99. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  100. package/src/sap/ui/mdc/link/PanelListItem.js +1 -1
  101. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  102. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  103. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  104. package/src/sap/ui/mdc/messagebundle.properties +2 -1
  105. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +20 -19
  106. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -141
  107. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -9
  108. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  109. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +348 -0
  110. package/src/sap/ui/mdc/odata/TypeUtil.js +1 -1
  111. package/src/sap/ui/mdc/odata/v4/ChartPropertyHelper.js +70 -3
  112. package/src/sap/ui/mdc/odata/v4/FilterBarDelegate.js +116 -20
  113. package/src/sap/ui/mdc/odata/v4/ODataMetaModelUtil.js +2 -2
  114. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +11 -33
  115. package/src/sap/ui/mdc/odata/v4/TypeUtil.js +2 -4
  116. package/src/sap/ui/mdc/odata/v4/ValueHelpDelegate.js +1 -1
  117. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +281 -263
  118. package/src/sap/ui/mdc/p13n/AdaptationProvider.js +1 -1
  119. package/src/sap/ui/mdc/p13n/Engine.js +21 -18
  120. package/src/sap/ui/mdc/p13n/FlexUtil.js +0 -5
  121. package/src/sap/ui/mdc/p13n/PropertyHelper.js +2 -2
  122. package/src/sap/ui/mdc/p13n/StateUtil.js +4 -0
  123. package/src/sap/ui/mdc/p13n/UIManager.js +16 -13
  124. package/src/sap/ui/mdc/p13n/modification/ModificationHandler.js +18 -14
  125. package/src/sap/ui/mdc/p13n/modules/DefaultProviderRegistry.js +1 -1
  126. package/src/sap/ui/mdc/p13n/panels/ActionToolbarPanel.js +6 -6
  127. package/src/sap/ui/mdc/p13n/panels/AdaptFiltersPanel.js +49 -27
  128. package/src/sap/ui/mdc/p13n/panels/ChartItemPanel.js +4 -3
  129. package/src/sap/ui/mdc/p13n/panels/FilterPanel.js +136 -0
  130. package/src/sap/ui/mdc/p13n/panels/GroupView.js +53 -28
  131. package/src/sap/ui/mdc/p13n/panels/LinkSelectionPanel.js +54 -18
  132. package/src/sap/ui/mdc/p13n/subcontroller/ActionToolbarController.js +4 -7
  133. package/src/sap/ui/mdc/p13n/subcontroller/AdaptFiltersController.js +1 -2
  134. package/src/sap/ui/mdc/p13n/subcontroller/BaseController.js +1 -1
  135. package/src/sap/ui/mdc/p13n/subcontroller/FilterController.js +8 -4
  136. package/src/sap/ui/mdc/p13n/subcontroller/LinkPanelController.js +1 -0
  137. package/src/sap/ui/mdc/p13n/subcontroller/SortController.js +2 -2
  138. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  139. package/src/sap/ui/mdc/table/GridTableType.js +75 -27
  140. package/src/sap/ui/mdc/table/PropertyHelper.js +20 -13
  141. package/src/sap/ui/mdc/table/ResponsiveTableType.js +86 -13
  142. package/src/sap/ui/mdc/table/RowActionItem.js +119 -0
  143. package/src/sap/ui/mdc/table/RowSettings.js +42 -1
  144. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +2 -2
  145. package/src/sap/ui/mdc/themes/base/Chart.less +2 -0
  146. package/src/sap/ui/mdc/themes/base/ValueHelpDialog.less +1 -0
  147. package/src/sap/ui/mdc/util/DateUtil.js +32 -7
  148. package/src/sap/ui/mdc/util/FilterUtil.js +1 -1
  149. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  150. package/src/sap/ui/mdc/util/PropertyHelper.js +201 -76
  151. package/src/sap/ui/mdc/util/TypeUtil.js +1 -1
  152. package/src/sap/ui/mdc/valuehelp/Dialog.js +1 -1
  153. package/src/sap/ui/mdc/valuehelp/Popover.js +5 -3
  154. package/src/sap/ui/mdc/valuehelp/base/Container.js +1 -1
  155. package/src/sap/ui/mdc/valuehelp/base/Content.js +1 -1
  156. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
  157. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +4 -4
  158. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
  159. package/src/sap/ui/mdc/valuehelp/content/Bool.js +1 -1
  160. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +1 -1
  161. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +13 -10
  162. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +4 -10
  163. package/src/sap/ui/mdc/valuehelp/content/MTable.js +6 -4
  164. package/test/sap/ui/mdc/testutils/opa/chart/TestObjects.js +2 -0
  165. package/test/sap/ui/mdc/testutils/opa/filterbar/TestObjects.js +0 -1
  166. package/test/sap/ui/mdc/testutils/opa/p13n/Actions.js +8 -6
  167. package/src/sap/ui/mdc/filterbar/vh/GenericFilterBarDelegate.js +0 -150
  168. package/src/sap/ui/mdc/p13n/panels/BasePanel.js +0 -721
  169. package/src/sap/ui/mdc/p13n/panels/ListView.js +0 -408
  170. package/src/sap/ui/mdc/p13n/panels/SelectionPanel.js +0 -92
  171. package/src/sap/ui/mdc/p13n/panels/SortPanel.js +0 -150
  172. package/src/sap/ui/mdc/ui/Container.js +0 -240
  173. package/src/sap/ui/mdc/ui/ContainerItem.js +0 -79
@@ -11,7 +11,6 @@ sap.ui.define([
11
11
 
12
12
  var InnerTable, InnerColumn, InnerRowAction, InnerRowActionItem, InnerMultiSelectionPlugin, InnerFixedRowMode, InnerAutoRowMode, InnerRowSettings;
13
13
  var RowCountMode = library.RowCountMode;
14
- var RowAction = library.RowAction;
15
14
 
16
15
  /**
17
16
  * Constructor for a new <code>GridTableType</code>.
@@ -168,15 +167,6 @@ sap.ui.define([
168
167
  return oColumn;
169
168
  };
170
169
 
171
- GridTableType.createNavigationRowAction = function(sIdPrefix, aEventInfo) {
172
- return new InnerRowAction(sIdPrefix + "--rowAction", {
173
- items: new InnerRowActionItem(sIdPrefix + "--rowActionItem", {
174
- type: RowAction.Navigation,
175
- press: aEventInfo
176
- })
177
- });
178
- };
179
-
180
170
  GridTableType.createMultiSelectionPlugin = function(oTable, aEventInfo) {
181
171
  return new InnerMultiSelectionPlugin(oTable.getId() + "--multiSelectPlugin", {
182
172
  selectionMode: TableTypeBase.getSelectionMode(oTable),
@@ -208,14 +198,7 @@ sap.ui.define([
208
198
  oTable._oTable.getPlugins()[0].setSelectionMode(sSelectionMode);
209
199
  };
210
200
 
211
- GridTableType.updateNavigation = function(oTable, fnRowActionPress) {
212
- oTable._oTable.setRowActionTemplate(this.createNavigationRowAction(oTable.getId(), [
213
- fnRowActionPress, oTable
214
- ]));
215
- oTable._oTable.setRowActionCount(1);
216
- };
217
-
218
- GridTableType.clearNavigation = function(oTable) {
201
+ GridTableType.removeRowActions = function(oTable) {
219
202
  var oInnerRowAction = oTable._oTable.getRowActionTemplate();
220
203
  if (oInnerRowAction) {
221
204
  oInnerRowAction.destroy();
@@ -224,20 +207,85 @@ sap.ui.define([
224
207
  oTable._oTable.setRowActionCount();
225
208
  };
226
209
 
227
- GridTableType.updateRowAction = function(oTable, bNavigation, fnRowActionPress) {
228
- this.clearNavigation(oTable);
229
- if (bNavigation) {
230
- this.updateNavigation(oTable, fnRowActionPress);
231
- }
232
- };
233
-
234
- GridTableType.updateRowSettings = function(oTable, oRowSettings) {
210
+ GridTableType.updateRowSettings = function(oTable, oRowSettings, fnRowActionPress) {
235
211
  var oInnerRowSettings = new InnerRowSettings(undefined, oRowSettings.getAllSettings());
236
-
212
+ this.updateRowActions(oTable.getParent(), oRowSettings, fnRowActionPress);
237
213
  oTable.getRowSettingsTemplate().destroy();
238
214
  oTable.setRowSettingsTemplate(oInnerRowSettings);
239
215
  };
240
216
 
217
+ GridTableType.updateRowActions = function (oTable, oRowSettings) {
218
+ this.removeRowActions(oTable);
219
+ if (!oRowSettings) {
220
+ return;
221
+ }
222
+ if (!oRowSettings.isBound("rowActions") && (!oRowSettings.getRowActions() || oRowSettings.getRowActions().length == 0)) {
223
+ return;
224
+ }
225
+
226
+ var oRowActions = oRowSettings.getAllActions();
227
+ if ("templateInfo" in oRowActions) {
228
+ var oTemplateInfo = oRowActions.templateInfo;
229
+ // Set template for inner row actions using temporary metadata
230
+ oRowActions.items.template = new InnerRowActionItem({
231
+ type: oTemplateInfo.type,
232
+ visible: oTemplateInfo.visible,
233
+ icon: oTemplateInfo.icon,
234
+ text: oTemplateInfo.text,
235
+ press: [this._onRowActionPress, oTable]
236
+ });
237
+ // Remove temporary metadata from row actions object
238
+ delete oRowActions.templateInfo;
239
+ } else {
240
+ oRowActions.items = oRowActions.items.map(function (oRowActionItem) {
241
+ var oInnerRowActionItem = new InnerRowActionItem({
242
+ type: oRowActionItem.isBound("type") ? oRowActionItem.getBindingInfo("type") : oRowActionItem.getType(),
243
+ visible: oRowActionItem.isBound("visible") ? oRowActionItem.getBindingInfo("visible") : oRowActionItem.getVisible(),
244
+ icon: oRowActionItem.isBound("icon") ? oRowActionItem.getBindingInfo("icon") : oRowActionItem._getIcon(),
245
+ text: oRowActionItem.isBound("text") ? oRowActionItem.getBindingInfo("text") : oRowActionItem._getText(),
246
+ press: [this._onRowActionPress, oTable]
247
+ });
248
+ // Add custom data for MDC row action, so original is retrievable from inner row action item
249
+ oInnerRowActionItem.data("rowAction", oRowActionItem);
250
+ return oInnerRowActionItem;
251
+ }, this);
252
+ }
253
+
254
+ var oInnerRowAction = new InnerRowAction(oTable.getId() + "--rowAction", oRowActions);
255
+ oTable._oTable.setRowActionTemplate(oInnerRowAction);
256
+ oTable._oTable.setRowActionCount(oRowSettings.getRowActionCount());
257
+ };
258
+
259
+ GridTableType._onRowActionPress = function (oEvent) {
260
+ var oInnerRowActionItem = oEvent.getParameter("item");
261
+ var oRowActionsInfo = this.getRowSettings().getAllActions();
262
+
263
+ if (this.getRowSettings().isBound("rowActions")) {
264
+ var sActionModel = oRowActionsInfo.items.model;
265
+ var oActionContext = oInnerRowActionItem.getBindingContext(sActionModel);
266
+
267
+ // Create a one time clone for the MDC RowAction and 'switch' binding context based on press action
268
+ if (!this._oRowActionItem) {
269
+ this._oRowActionItem = oRowActionsInfo.items.template.clone();
270
+ }
271
+ this._oRowActionItem.setBindingContext(oActionContext, oRowActionsInfo.items.model);
272
+
273
+ // Set model for row settings, as it is not propagated
274
+ this._oRowActionItem.setModel(this.getModel(sActionModel), sActionModel);
275
+ this.getRowSettings().addDependent(this._oRowActionItem);
276
+ } else {
277
+ this._oRowActionItem = oInnerRowActionItem.data("rowAction");
278
+ }
279
+ var oRow = oEvent.getParameter("row");
280
+ this._oRowActionItem.firePress({
281
+ bindingContext: oRow.getBindingContext()
282
+ });
283
+ if (this._oTableRowAction) {
284
+ this.fireRowPress({
285
+ bindingContext: oRow.getBindingContext()
286
+ });
287
+ }
288
+ };
241
289
 
242
290
  return GridTableType;
243
291
  });
@@ -45,6 +45,22 @@ sap.ui.define([
45
45
  * Defines whether a filter condition for this property is required.
46
46
  * @property {object} [visualSettings]
47
47
  * This object contains all relevant properties for visual adjustments.
48
+ * @property {object} [visualSettings.widthCalculation]
49
+ * This object contains all properties and their default values for the column width calculation
50
+ * @property {integer} [visualSettings.widthCalculation.minWidth]
51
+ * The minimum content width in rem
52
+ * @property {integer} [visualSettings.widthCalculation.maxWidth]
53
+ * The maximum content width in rem
54
+ * @property {integer} [visualSettings.widthCalculation.defaultWidth]
55
+ * The default column content width when type check fails
56
+ * @property {float} [visualSettings.widthCalculation.gap]
57
+ * The additional content width in rem
58
+ * @property {boolean} [visualSettings.widthCalculation.includeLabel]
59
+ * Whether the label should be taken into account
60
+ * @property {boolean} [visualSettings.widthCalculation.verticalArrangement]
61
+ * Whether the referenced properties are arranged vertically
62
+ * @property {sap.ui.mdc.util.PropertyHelper[]} [visualSettings.widthCalculation.excludeProperties]
63
+ * A list of invisible referenced property names
48
64
  *
49
65
  * @private
50
66
  * @experimental
@@ -57,7 +73,7 @@ sap.ui.define([
57
73
  *
58
74
  * @param {object[]} aProperties
59
75
  * The properties to process in this helper
60
- * @param {object<string, object>} [mExtensions]
76
+ * @param {Object<string, object>} [mExtensions]
61
77
  * Key-value map, where the key is the name of the property and the value is the extension containing mode-specific information.
62
78
  * The extension of a property is stored in a reserved <code>extension</code> attribute, and its attributes must be specified with
63
79
  * <code>mExtensionAttributeMetadata</code>.
@@ -74,7 +90,7 @@ sap.ui.define([
74
90
  * @extends sap.ui.mdc.util.PropertyHelper
75
91
  *
76
92
  * @author SAP SE
77
- * @version 1.99.0
93
+ * @version 1.100.0
78
94
  *
79
95
  * @private
80
96
  * @experimental
@@ -289,17 +305,8 @@ sap.ui.define([
289
305
  PropertyHelper.prototype._calcColumnWidth = function (oProperty, mWidthCalculation) {
290
306
  var fWidth = 0;
291
307
  var fLabelWidth = 0;
292
- var mPropertyInfoWidthCalculation = oProperty.visualSettings ? oProperty.visualSettings.widthCalculation : {};
293
-
294
- mWidthCalculation = Object.assign({
295
- minWidth: 2,
296
- maxWidth: 19,
297
- defaultWidth: 8,
298
- gap: 0,
299
- includeLabel: true,
300
- excludeProperties: [],
301
- verticalArrangement: false
302
- }, mPropertyInfoWidthCalculation, mWidthCalculation || {});
308
+ var mPropertyInfoWidthCalculation = oProperty.visualSettings.widthCalculation;
309
+ mWidthCalculation = Object.assign({}, mPropertyInfoWidthCalculation, mWidthCalculation || {});
303
310
 
304
311
  var iMinWidth = Math.max(1, mWidthCalculation.minWidth);
305
312
  var iMaxWidth = Math.max(iMinWidth, mWidthCalculation.maxWidth);
@@ -167,25 +167,66 @@ sap.ui.define([
167
167
  oTable._oTable.setMultiSelectMode(oTable.getMultiSelectMode());
168
168
  };
169
169
 
170
- ResponsiveTableType.updateNavigation = function(oTable) {
171
- oTable._oTemplate.setType(RowAction.Navigation);
170
+ ResponsiveTableType.updateRowSettings = function(oTable, oRowSettings, fnRowActionPress) {
171
+ // Remove all bindings, as applySettings doesn't do it
172
+ var oRowTemplate = oTable._oTemplate;
173
+ oRowTemplate.unbindProperty("navigated");
174
+ oRowTemplate.unbindProperty("highlight");
175
+ oRowTemplate.unbindProperty("highlightText");
176
+
177
+ this.updateRowActions(oTable, oRowSettings, fnRowActionPress);
178
+ var oSettings = oRowSettings.getAllSettings();
179
+ oRowTemplate.applySettings(oSettings);
172
180
  };
173
181
 
174
- ResponsiveTableType.updateRowAction = function(oTable, bNavigation) {
182
+ ResponsiveTableType.updateRowActions = function (oTable, oRowSettings) {
183
+ oTable._oTemplate.unbindProperty("type");
184
+
175
185
  var sType = oTable.hasListeners("rowPress") ? "Active" : "Inactive";
176
- oTable._oTemplate.setType(sType);
177
- if (bNavigation) {
178
- this.updateNavigation(oTable);
186
+
187
+ if (!oRowSettings) {
188
+ oTable._oTemplate.setType(sType);
189
+ return;
179
190
  }
180
- };
181
191
 
182
- ResponsiveTableType.updateRowSettings = function(oRowTemplate, oRowSettings) {
183
- // Remove all bindings, as applySettings doesn't do it
184
- oRowTemplate.unbindProperty("navigated");
185
- oRowTemplate.unbindProperty("highlight");
186
- oRowTemplate.unbindProperty("highlightText");
192
+ var oRowActionsInfo = oRowSettings.getAllActions();
193
+ if ("templateInfo" in oRowActionsInfo) {
194
+ var oTemplateInfo = oRowActionsInfo.templateInfo;
195
+
196
+ if (oTemplateInfo.visible.formatter) {
197
+ // Wrap the formatter (which should return a boolean) value and determine the type based on the formatted value.
198
+ var fnFormatter = oTemplateInfo.visible.formatter;
199
+ oTemplateInfo.visible.formatter = function (sValue) {
200
+ var bVisible = fnFormatter(sValue);
201
+ return bVisible ? RowAction.Navigation : sType;
202
+ };
203
+ }
204
+ if (typeof oTemplateInfo.visible === "object") {
205
+ oTable._oTemplate.bindProperty("type", oTemplateInfo.visible);
206
+ } else {
207
+ oTable._oTemplate.setProperty("type", oTemplateInfo.visible);
208
+ }
209
+ } else if (oRowActionsInfo && oRowActionsInfo.items){
210
+ var _oRowActionItem;
211
+ if (oRowActionsInfo.items.length == 0) {
212
+ oTable._oTemplate.setType(sType);
213
+ return;
214
+ }
215
+
216
+ _oRowActionItem = oRowActionsInfo.items.find(function (oRowAction) {
217
+ return oRowAction.getType() == "Navigation";
218
+ });
187
219
 
188
- oRowTemplate.applySettings(oRowSettings.getAllSettings());
220
+ // ResponsiveTable currently only supports RowActionItem<Navigation>
221
+ if (!_oRowActionItem && oRowActionsInfo.items.length > 0) {
222
+ throw new Error("No RowAction of type 'Navigation' found. sap.m.Table only accepts RowAction of type 'Navigation'.");
223
+ }
224
+
225
+ // Associate RowActionItem<Navigation> to template for reference
226
+ oTable._oTemplate.data("rowAction", _oRowActionItem);
227
+ }
228
+
229
+ oTable._oTemplate.setType(RowAction.Navigation);
189
230
  };
190
231
 
191
232
  ResponsiveTableType.disableColumnResizer = function(oTable, oInnerTable) {
@@ -308,5 +349,37 @@ sap.ui.define([
308
349
  }
309
350
  };
310
351
 
352
+ ResponsiveTableType._onRowActionPress = function (oEvent) {
353
+ var oInnerRow = oEvent.getParameter("listItem");
354
+ var oContext = oInnerRow.getBindingContext();
355
+
356
+ if (oInnerRow.getType() !== "Navigation") {
357
+ return;
358
+ }
359
+
360
+ var oRowSettings = this.getRowSettings();
361
+ var oRowActionsInfo = oRowSettings.getAllActions();
362
+
363
+ if (this.getRowSettings().isBound("rowActions")) {
364
+ var sActionModel = oRowActionsInfo.items.model;
365
+ if (!this._oRowActionItem) {
366
+ this._oRowActionItem = oRowActionsInfo.items.template.clone();
367
+ }
368
+
369
+ // Set model for row settings, as it is not propagated
370
+ this._oRowActionItem.setModel(this.getModel(sActionModel), sActionModel);
371
+ this.getRowSettings().addDependent(this._oRowActionItem);
372
+ } else {
373
+ this._oRowActionItem = oInnerRow.data("rowAction");
374
+ }
375
+
376
+ // Binding Context cannot be determined for ResponsiveTable, which is why we always assume to have a RowActionItem<Navigation> no matter what
377
+ this._oRowActionItem.setType("Navigation");
378
+
379
+ this._oRowActionItem.firePress({
380
+ bindingContext: oContext
381
+ });
382
+ };
383
+
311
384
  return ResponsiveTableType;
312
385
  });
@@ -0,0 +1,119 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ sap.ui.define([
8
+ 'sap/ui/core/Element',
9
+ '../library',
10
+ 'sap/ui/core/IconPool',
11
+ 'sap/ui/core/Core'
12
+ ], function(Element, library, IconPool, Core) {
13
+ "use strict";
14
+
15
+ var RowAction = library.RowAction;
16
+
17
+ /**
18
+ * Constructor for new RowActionItem.
19
+ *
20
+ * @param {string} [sId] Optional ID for the new object; generated automatically if no non-empty ID is given
21
+ * @param {object} [mSettings] initial settings for the new control
22
+ *
23
+ * @class
24
+ * The <code>RowActionItem</code> control represents a action for a row.
25
+ * This control can only be used in the context of <code>sap.ui.mdc.Table</code> control to define row actions.
26
+ * @extends sap.ui.core.Element
27
+ * @version 1.100.0
28
+ *
29
+ * @constructor
30
+ * @experimental
31
+ * @private
32
+ * @ui5-restricted sap.fe
33
+ * MDC_PUBLIC_CANDIDATE
34
+ * @alias sap.ui.mdc.table.RowActionItem
35
+ */
36
+
37
+ var RowActionItem = Element.extend("sap.ui.mdc.table.RowActionItem", {
38
+ metadata: {
39
+ library: "sap.ui.mdc",
40
+ properties: {
41
+ /**
42
+ * Type of the row action item.
43
+ *
44
+ * As of version 1.98, only sap.ui.mdc.RowAction.Navigation is available.
45
+ * Setting the type ensures default values for the properties <code>icon</code> and <code>text</code>.
46
+ * If an icon or text is set explicitly this setting is used.
47
+ */
48
+ type: {type: "sap.ui.mdc.RowAction"},
49
+ /**
50
+ * Text for the row action item.
51
+ *
52
+ * Custom text cannot be set when using <code>sap.m.Table</code>.
53
+ */
54
+ text: {type: "string"},
55
+ /**
56
+ * Icon for the row action item.
57
+ *
58
+ * A custom icon cannot be set when using <code>sap.m.Table</code>
59
+ */
60
+ icon: {type: "sap.ui.core.URI"},
61
+ /**
62
+ * Whether the item should be visible on the screen.
63
+ */
64
+ visible: {type: "boolean", defaultValue: true}
65
+ },
66
+ events: {
67
+ /**
68
+ * Fired when the row action item is pressed.
69
+ *
70
+ * <code>sap.ui.table.Table</code>: The press event is fired when a row action item is pressed.
71
+ *
72
+ * <code>sap.m.Table</code>: The press event is fired when a row with a row action item is pressed.
73
+ * The <code>sap.ui.mdc.Table</code>'s <code>rowPress</code> event is fired as well, when pressing a row with a row action item.
74
+ *
75
+ * @private
76
+ */
77
+ press: {
78
+ parameters: {
79
+ /**
80
+ * The binding context of the pressed row action
81
+ */
82
+ bindingContext: {
83
+ type: "sap.ui.model.Context"
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ });
90
+
91
+ var mThemeParameters = {
92
+ navigationIcon: "navigation-right-arrow"
93
+ };
94
+
95
+ RowActionItem.prototype._getText = function () {
96
+ var sText;
97
+ if (this.getText()) {
98
+ sText = this.getText();
99
+ } else {
100
+ var oResourceBundle = Core.getLibraryResourceBundle("sap.ui.mdc");
101
+ if (this.getType() === RowAction.Navigation) {
102
+ sText = oResourceBundle.getText("table.ROW_ACTION_ITEM_NAVIGATE");
103
+ }
104
+ }
105
+ return sText;
106
+ };
107
+
108
+ RowActionItem.prototype._getIcon = function () {
109
+ var oIcon;
110
+ if (this.getIcon()) {
111
+ oIcon = this.getIcon();
112
+ } else if (this.getType() === RowAction.Navigation) {
113
+ oIcon = IconPool.getIconURI(mThemeParameters["navigationIcon"]);
114
+ }
115
+ return oIcon;
116
+ };
117
+
118
+ return RowActionItem;
119
+ });
@@ -12,6 +12,8 @@ sap.ui.define([
12
12
  /**
13
13
  * Constructor for new RowSettings.
14
14
  *
15
+ * Caution: Only use bindings which are bound against the rows, as working functionalities cannot be ensured for other binding types.
16
+ *
15
17
  * @param {string} [sId] Optional ID for the new object; generated automatically if no non-empty ID is given
16
18
  * @param {object} [mSettings] Initial settings for the new control
17
19
  *
@@ -19,7 +21,7 @@ sap.ui.define([
19
21
  * The <code>RowSettings</code> control is used to configure a row.
20
22
  * This control can only be used in the context of the <code>sap.ui.mdc.Table</code> control to define row settings.
21
23
  * @extends sap.ui.core.Element
22
- * @version 1.99.0
24
+ * @version 1.100.0
23
25
  *
24
26
  * @constructor
25
27
  * @experimental
@@ -60,6 +62,14 @@ sap.ui.define([
60
62
  * If set to <code>true</code>, a navigation indicator is displayed at the end of the row.
61
63
  */
62
64
  navigated : {type : "boolean", group : "Appearance", defaultValue : false}
65
+ },
66
+ aggregations: {
67
+ /**
68
+ * The available actions for a row.
69
+ *
70
+ * rowActions cannot be bound with a factory. Additionally, {@link sap.m.Table} only works with row actions of type navigation.
71
+ */
72
+ rowActions: {type: "sap.ui.mdc.table.RowActionItem", multiple: true}
63
73
  }
64
74
  }
65
75
  });
@@ -89,5 +99,36 @@ sap.ui.define([
89
99
  return mSettings;
90
100
  };
91
101
 
102
+ RowSettings.prototype.getAllActions = function () {
103
+ var mSettings = {},
104
+ thisCloned = this.clone();
105
+
106
+ if (this.isBound("rowActions")) {
107
+ // Set bindingInfo for items aggregation to bindingInfo of rowActions
108
+ mSettings.items = thisCloned.getBindingInfo("rowActions");
109
+ var oTemplate = mSettings.items.template;
110
+ // Create temporary metdata information for later processing
111
+ mSettings.templateInfo = {
112
+ type: oTemplate.isBound("type") ? oTemplate.getBindingInfo("type") : oTemplate.getType(),
113
+ text: oTemplate.isBound("text") ? oTemplate.getBindingInfo("text") : oTemplate.getText(),
114
+ icon: oTemplate.isBound("icon") ? oTemplate.getBindingInfo("icon") : oTemplate.getIcon(),
115
+ visible: oTemplate.isBound("visible") ? oTemplate.getBindingInfo("visible") : oTemplate.getVisible()
116
+ };
117
+ } else {
118
+ mSettings.items = this.getRowActions();
119
+ }
120
+ return mSettings;
121
+ };
122
+
123
+ RowSettings.prototype.getRowActionCount = function () {
124
+ var iCount = 0;
125
+ if (this.isBound("rowActions")) {
126
+ iCount = 1;
127
+ } else {
128
+ iCount = this.getRowActions().length;
129
+ }
130
+ return iCount;
131
+ };
132
+
92
133
  return RowSettings;
93
134
  });
@@ -16,7 +16,7 @@ sap.ui.define([
16
16
  *
17
17
  * @param {object[]} aProperties
18
18
  * The properties to process in this helper
19
- * @param {object<string, object>} [mExtensions]
19
+ * @param {Object<string, object>} [mExtensions]
20
20
  * Key-value map, where the key is the name of the property and the value is the extension containing mode-specific information.
21
21
  * The extension of a property is stored in a reserved <code>extension</code> attribute and its attributes must be specified with
22
22
  * <code>mExtensionAttributeMetadata</code>.
@@ -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.99.0
30
+ * @version 1.100.0
31
31
  *
32
32
  * @private
33
33
  * @experimental
@@ -1,3 +1,5 @@
1
1
  .sapUiMDCChart {
2
2
  background: @sapUiChartBackgroundColor;
3
+ border-radius: @sapUiElementBorderCornerRadius;
4
+ padding-bottom: 1rem;
3
5
  }
@@ -32,6 +32,7 @@
32
32
  width: 100%;
33
33
  border: 1px solid @sapUiFieldBorderColor;
34
34
  background-color: @sapUiFieldBackground;
35
+ border-radius: @sapUiFieldBorderCornerRadius;
35
36
  }
36
37
 
37
38
  // Tokenizer height in Compact mode
@@ -6,12 +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'
9
+ 'sap/base/util/merge',
10
+ 'sap/ui/mdc/enum/BaseType'
10
11
  ],
11
12
  function(
12
13
  coreLibrary,
13
14
  UniversalDate,
14
- merge
15
+ merge,
16
+ BaseType
15
17
  ) {
16
18
  "use strict";
17
19
 
@@ -34,18 +36,29 @@ sap.ui.define([
34
36
  *
35
37
  * @param {any} vDate Date
36
38
  * @param {sap.ui.model.SimpleType} oType Data type
39
+ * @param {sap.ui.mdc.enum.BaseType} [sBaseType] Basic type
37
40
  * @return {sap.ui.core.date.UniversalDate} UniversalDate
38
41
  * @private
39
42
  * @ui5-restricted sap.ui.mdc
40
43
  * @since 1.74.0
41
44
  */
42
- typeToUniversalDate: function(vDate, oType) {
45
+ typeToUniversalDate: function(vDate, oType, sBaseType) {
43
46
 
44
- var sDate = this.typeToString(vDate, oType, "yyyyMMdd");
47
+ var sPattern;
48
+ if (sBaseType && sBaseType === BaseType.DateTime) {
49
+ sPattern = "yyyyMMdd-HHmmssSSS";
50
+ } else {
51
+ sPattern = "yyyyMMdd";
52
+ }
53
+ var sDate = this.typeToString(vDate, oType, sPattern);
45
54
  var iYear = parseInt(sDate.slice(0,4));
46
55
  var iMonth = parseInt(sDate.slice(4,6)) - 1;
47
56
  var iDate = parseInt(sDate.slice(6,8));
48
- var oUniversalDate = new UniversalDate(UniversalDate.UTC(iYear, iMonth, iDate));
57
+ var iHour = sBaseType === BaseType.DateTime ? parseInt(sDate.slice(9,11)) : 0;
58
+ var iMinute = sBaseType === BaseType.DateTime ? parseInt(sDate.slice(11,13)) : 0;
59
+ var iSecond = sBaseType === BaseType.DateTime ? parseInt(sDate.slice(13,15)) : 0;
60
+ var iMillisecond = sBaseType === BaseType.DateTime ? parseInt(sDate.slice(15,18)) : 0;
61
+ var oUniversalDate = new UniversalDate(UniversalDate.UTC(iYear, iMonth, iDate, iHour, iMinute, iSecond, iMillisecond));
49
62
 
50
63
  return oUniversalDate;
51
64
 
@@ -56,18 +69,30 @@ sap.ui.define([
56
69
  *
57
70
  * @param {sap.ui.core.date.UniversalDate} oDate UniversalDate
58
71
  * @param {sap.ui.model.SimpleType} oType Data type
72
+ * @param {sap.ui.mdc.enum.BaseType} [sBaseType] Basic type
59
73
  * @return {any} type specific date
60
74
  * @private
61
75
  * @ui5-restricted sap.ui.mdc
62
76
  * @since 1.74.0
63
77
  */
64
- universalDateToType: function(oDate, oType) {
78
+ universalDateToType: function(oDate, oType, sBaseType) {
65
79
 
66
80
  var iYear = oDate.getUTCFullYear();
67
81
  var iMonth = oDate.getUTCMonth() + 1;
68
82
  var iDate = oDate.getUTCDate();
69
83
  var sDate = iYear.toString() + ((iMonth < 10) ? "0" : "") + iMonth.toString() + ((iDate < 10) ? "0" : "") + iDate.toString();
70
- var vDate = this.stringToType(sDate, oType, "yyyyMMdd");
84
+ var sPattern;
85
+ if (sBaseType && sBaseType === BaseType.DateTime) {
86
+ sPattern = "yyyyMMdd-HHmmssSSS";
87
+ var iHour = oDate.getUTCHours();
88
+ var iMinute = oDate.getUTCMinutes();
89
+ var iSecond = oDate.getUTCSeconds();
90
+ var iMillisecond = oDate.getUTCMilliseconds();
91
+ sDate = sDate + "-" + ((iHour < 10) ? "0" : "") + iHour.toString() + ((iMinute < 10) ? "0" : "") + iMinute.toString() + ((iSecond < 10) ? "0" : "") + iSecond.toString() + ((iMillisecond < 100) ? "0" : "") + ((iMillisecond < 10) ? "0" : "") + iMillisecond.toString();
92
+ } else {
93
+ sPattern = "yyyyMMdd";
94
+ }
95
+ var vDate = this.stringToType(sDate, oType, sPattern);
71
96
 
72
97
  return vDate;
73
98
 
@@ -132,7 +132,7 @@ sap.ui.define(['sap/ui/mdc/util/IdentifierUtil', 'sap/ui/mdc/enum/ConditionValid
132
132
  var oProperty = FilterUtil.getPropertyByKey(aPropertiesMetadata, sFieldPath);
133
133
  if (oProperty) {
134
134
 
135
- mFilterTypes[sFieldPath] = { type: oProperty.typeConfig.typeInstance, caseSensitive: oProperty.caseSensitive };
135
+ mFilterTypes[sFieldPath] = { type: oProperty.typeConfig.typeInstance, caseSensitive: oProperty.caseSensitive, baseType: oProperty.typeConfig.baseType };
136
136
  mInternalFilterConditions[sFieldPath] = [];
137
137
 
138
138
  //convert from externalized to model-specific value representation
@@ -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.99.0
47
+ * @version 1.100.0
48
48
  * @alias sap.ui.mdc.util.PromiseCache
49
49
  * @namespace
50
50
  * @since 1.85.0