@openui5/sap.ui.mdc 1.141.2 → 1.142.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 (129) hide show
  1. package/README.md +2 -2
  2. package/REUSE.toml +38 -0
  3. package/THIRDPARTY.txt +34 -1
  4. package/package.json +4 -4
  5. package/src/sap/ui/mdc/.library +1 -1
  6. package/src/sap/ui/mdc/ActionToolbar.js +1 -1
  7. package/src/sap/ui/mdc/Chart.js +1 -1
  8. package/src/sap/ui/mdc/Control.js +1 -1
  9. package/src/sap/ui/mdc/DefaultTypeMap.js +1 -1
  10. package/src/sap/ui/mdc/Element.js +1 -1
  11. package/src/sap/ui/mdc/Field.js +26 -3
  12. package/src/sap/ui/mdc/FilterBar.js +1 -1
  13. package/src/sap/ui/mdc/FilterField.js +2 -2
  14. package/src/sap/ui/mdc/Geomap.js +571 -0
  15. package/src/sap/ui/mdc/GeomapDelegate.js +285 -0
  16. package/src/sap/ui/mdc/GeomapRenderer.js +76 -0
  17. package/src/sap/ui/mdc/Link.js +1 -1
  18. package/src/sap/ui/mdc/MultiValueField.js +3 -3
  19. package/src/sap/ui/mdc/Table.js +117 -101
  20. package/src/sap/ui/mdc/TableDelegate.js +3 -2
  21. package/src/sap/ui/mdc/ValueHelp.js +1 -1
  22. package/src/sap/ui/mdc/ValueHelpDelegate.js +4 -1
  23. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -1
  24. package/src/sap/ui/mdc/chart/ChartImplementationContainer.js +1 -1
  25. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  26. package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
  27. package/src/sap/ui/mdc/chart/ToolbarControlFactory.js +1 -1
  28. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  29. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  30. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  31. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  32. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +1 -1
  33. package/src/sap/ui/mdc/condition/Operator.js +1 -1
  34. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +1 -1
  35. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  36. package/src/sap/ui/mdc/designtime/geomap/Geomap.designtime.js +23 -0
  37. package/src/sap/ui/mdc/enums/GeomapControlPosition.js +46 -0
  38. package/src/sap/ui/mdc/field/ConditionType.js +1 -1
  39. package/src/sap/ui/mdc/field/ConditionTypeMixin.js +1 -1
  40. package/src/sap/ui/mdc/field/ConditionsType.js +1 -1
  41. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  42. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +1 -1
  43. package/src/sap/ui/mdc/field/FieldBase.js +45 -20
  44. package/src/sap/ui/mdc/field/FieldInfoBase.js +1 -1
  45. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  46. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  47. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  48. package/src/sap/ui/mdc/field/FieldSelect.js +1 -1
  49. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  50. package/src/sap/ui/mdc/field/MultiValueFieldDelegate.js +22 -0
  51. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  52. package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
  53. package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
  54. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +35 -1
  55. package/src/sap/ui/mdc/filterbar/FilterBarBaseRenderer.js +3 -0
  56. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  57. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
  58. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  59. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  60. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  61. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  62. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +1 -1
  63. package/src/sap/ui/mdc/flexibility/SortFlex.js +12 -5
  64. package/src/sap/ui/mdc/flexibility/Table.flexibility.js +17 -11
  65. package/src/sap/ui/mdc/flexibility/actiontoolbar/CombineAction.js +1 -1
  66. package/src/sap/ui/mdc/flexibility/actiontoolbar/SplitAction.js +1 -1
  67. package/src/sap/ui/mdc/flexibility/helpers/getAffectedSorter.js +25 -0
  68. package/src/sap/ui/mdc/geomap/Item.js +48 -0
  69. package/src/sap/ui/mdc/geomap/PropertyHelper.js +70 -0
  70. package/src/sap/ui/mdc/library.js +6 -4
  71. package/src/sap/ui/mdc/link/Factory.js +1 -1
  72. package/src/sap/ui/mdc/link/LinkItem.js +1 -1
  73. package/src/sap/ui/mdc/link/Panel.js +1 -1
  74. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  75. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  76. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  77. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  78. package/src/sap/ui/mdc/messagebundle.properties +13 -1
  79. package/src/sap/ui/mdc/messagebundle_de.properties +2 -2
  80. package/src/sap/ui/mdc/messagebundle_en_US_saprigi.properties +9 -1
  81. package/src/sap/ui/mdc/messagebundle_fr.properties +1 -1
  82. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  83. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  84. package/src/sap/ui/mdc/mixin/FilterBarLayoutMixin.js +1 -1
  85. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  86. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  87. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
  88. package/src/sap/ui/mdc/odata/TypeMap.js +1 -1
  89. package/src/sap/ui/mdc/odata/v4/GeomapDelegate.js +60 -0
  90. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +53 -2
  91. package/src/sap/ui/mdc/odata/v4/TypeMap.js +1 -1
  92. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  93. package/src/sap/ui/mdc/p13n/StateUtil.js +1 -1
  94. package/src/sap/ui/mdc/p13n/subcontroller/ColumnFreezeController.js +1 -1
  95. package/src/sap/ui/mdc/p13n/subcontroller/ShowDetailsController.js +1 -1
  96. package/src/sap/ui/mdc/rules/Table.support.js +149 -118
  97. package/src/sap/ui/mdc/table/ColumnSettings.js +1 -1
  98. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  99. package/src/sap/ui/mdc/table/DragDropConfig.js +1 -1
  100. package/src/sap/ui/mdc/table/GridTableType.js +1 -14
  101. package/src/sap/ui/mdc/table/ODataV4PropertyHelper.js +1 -1
  102. package/src/sap/ui/mdc/table/PropertyHelper.js +1 -1
  103. package/src/sap/ui/mdc/table/ResponsiveColumnSettings.js +1 -1
  104. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  105. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  106. package/src/sap/ui/mdc/table/utils/Personalization.js +1 -1
  107. package/src/sap/ui/mdc/themes/base/Geomap.less +50 -0
  108. package/src/sap/ui/mdc/ushell/SemanticObjectMapping.js +1 -1
  109. package/src/sap/ui/mdc/ushell/SemanticObjectMappingItem.js +1 -1
  110. package/src/sap/ui/mdc/ushell/SemanticObjectUnavailableAction.js +1 -1
  111. package/src/sap/ui/mdc/util/InfoBar.js +1 -1
  112. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  113. package/src/sap/ui/mdc/util/PropertyHelper.js +1 -1
  114. package/src/sap/ui/mdc/util/PropertyHelperUtil.js +1 -1
  115. package/src/sap/ui/mdc/valuehelp/Dialog.js +2 -2
  116. package/src/sap/ui/mdc/valuehelp/FilterBar.js +22 -3
  117. package/src/sap/ui/mdc/valuehelp/Popover.js +1 -1
  118. package/src/sap/ui/mdc/valuehelp/base/Container.js +1 -1
  119. package/src/sap/ui/mdc/valuehelp/base/Content.js +1 -1
  120. package/src/sap/ui/mdc/valuehelp/base/DefineConditionPanel.js +126 -25
  121. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
  122. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +4 -3
  123. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
  124. package/src/sap/ui/mdc/valuehelp/content/Bool.js +1 -1
  125. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +1 -1
  126. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +1 -1
  127. package/src/sap/ui/mdc/valuehelp/content/FixedListItem.js +1 -1
  128. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +1 -1
  129. package/src/sap/ui/mdc/valuehelp/content/MTable.js +1 -1
@@ -954,7 +954,8 @@ sap.ui.define([
954
954
 
955
955
  this._oManagedObjectModel = new ManagedObjectModel(this, {
956
956
  hasGrandTotal: false,
957
- activeP13nModes: createActiveP13nModesMap(this)
957
+ activeP13nModes: createActiveP13nModesMap(this),
958
+ rowCount: undefined
958
959
  });
959
960
  this._oManagedObjectModel.setDefaultBindingMode(BindingMode.OneWay);
960
961
  this.setModel(this._oManagedObjectModel, "$sap.ui.mdc.Table");
@@ -981,6 +982,10 @@ sap.ui.define([
981
982
 
982
983
  Control.prototype.applySettings.call(this, mSettings, oScope);
983
984
  this.initControlDelegate();
985
+
986
+ // onModification is not called if changes are applied during XML preprocessing. For the initial validation, this call leads to duplicate log
987
+ // entries if changes are applied on runtime (onModification is called).
988
+ validateStateAgainstPropertyInfo(this);
984
989
  };
985
990
 
986
991
  Table.prototype._setToolbarBetween = function(oToolBar) {
@@ -1285,21 +1290,13 @@ sap.ui.define([
1285
1290
  };
1286
1291
 
1287
1292
  Table.prototype.setHeaderLevel = function(sLevel) {
1288
- if (this.getHeaderLevel() === sLevel) {
1289
- return this;
1290
- }
1291
1293
  this.setProperty("headerLevel", sLevel, true);
1292
- this._oTitle?.setLevel(sLevel);
1293
1294
  this._updateVariantManagementStyle();
1294
1295
  return this;
1295
1296
  };
1296
1297
 
1297
1298
  Table.prototype.setHeaderStyle = function(sStyle) {
1298
- if (this.getHeaderStyle() === sStyle) {
1299
- return this;
1300
- }
1301
1299
  this.setProperty("headerStyle", sStyle, true);
1302
-
1303
1300
  const sHeaderStyle = this.getHeaderStyle() || TitleLevel[ThemeParameters.get({name: "_sap_ui_mdc_Table_HeaderStyle"})];
1304
1301
  this._oTitle?.setTitleStyle(sHeaderStyle);
1305
1302
  this._updateVariantManagementStyle();
@@ -1352,6 +1349,7 @@ sap.ui.define([
1352
1349
  if (this.getEnableColumnResize() !== bOldEnableColumnResize) {
1353
1350
  this._updateColumnResize();
1354
1351
  this._updateAdaptation();
1352
+ updateColumnMenu(this);
1355
1353
  }
1356
1354
 
1357
1355
  return this;
@@ -1384,8 +1382,51 @@ sap.ui.define([
1384
1382
  await this.finalizePropertyHelper();
1385
1383
  await this.rebind();
1386
1384
  }
1385
+
1386
+ await validateStateAgainstPropertyInfo(this);
1387
1387
  };
1388
1388
 
1389
+ /**
1390
+ * Validates the current state of the table against the available property info, and logs a warning in case of invalid state.
1391
+ *
1392
+ * If the property info is not final, the state is validated against the <code>propertyInfo</code> property if defined, otherwise validation is
1393
+ * scheduled after the property info is finalized after being fetched from the delegate.
1394
+ *
1395
+ * Validation succeeds if a state, such as a sort condition, was added and removed in the same change application, even if the property does not
1396
+ * exist.
1397
+ *
1398
+ * Columns are not validated. ItemBaseFlex throws an error if Delegate.addItem does not create a column for a property. This should be the case
1399
+ * if a property does not exist. However, if the delegate just makes something up and creates a column anyway, no validation error occurs
1400
+ * anywhere.
1401
+ *
1402
+ * @param {sap.ui.mdc.Table} oTable Instance of the table
1403
+ * @returns {Promise} Promise that resolves when validation is done
1404
+ */
1405
+ async function validateStateAgainstPropertyInfo(oTable) {
1406
+ const oXConfig = oTable._getXConfig();
1407
+ const mState = {
1408
+ Sort: oTable._getSortedProperties().map((oSortCondition) => oSortCondition.name),
1409
+ Filter: getFilteredProperties(oTable.getFilterConditions()),
1410
+ "Group level": oTable._getGroupedProperties().map((oGroupCondition) => oGroupCondition.name),
1411
+ Aggregation: Object.keys(oTable._getAggregatedProperties()),
1412
+ "Column width": Object.keys(oXConfig?.aggregations?.columns || {}).filter((sKey) => oXConfig.aggregations.columns[sKey].width)
1413
+ };
1414
+ const oPropertyHelper = await oTable.awaitPropertyHelper();
1415
+
1416
+ if (oTable.isPropertyHelperFinal() || oPropertyHelper.getProperties().length > 0) {
1417
+ for (const sStateType in mState) {
1418
+ for (const sPropertyKey of mState[sStateType]) {
1419
+ if (!oPropertyHelper.hasProperty(sPropertyKey)) {
1420
+ Log.error(`Invalid state: ${sStateType} modification exists for non-existent property '${sPropertyKey}'`, oTable);
1421
+ }
1422
+ }
1423
+ }
1424
+ } else {
1425
+ await oTable.propertiesFinalized();
1426
+ await validateStateAgainstPropertyInfo(oTable);
1427
+ }
1428
+ }
1429
+
1389
1430
  Table.prototype.setP13nMode = function(aMode) {
1390
1431
  const aOldP13nMode = this.getP13nMode();
1391
1432
 
@@ -1422,6 +1463,8 @@ sap.ui.define([
1422
1463
 
1423
1464
  if (!deepEqual(aOldP13nMode.sort(), this.getP13nMode().sort())) {
1424
1465
  updateP13nSettings(this);
1466
+ updateColumnMenu(this);
1467
+ this.invalidate(); // Inner columns must update aria-haspopup
1425
1468
  }
1426
1469
 
1427
1470
  return this;
@@ -1467,6 +1510,16 @@ sap.ui.define([
1467
1510
  this.getEngine().register(this, oRegisterConfig);
1468
1511
  };
1469
1512
 
1513
+ function updateColumnMenu(oTable) {
1514
+ const bIsColumnMenuEnabled = oTable.getActiveP13nModes().length > 0 || oTable.getEnableColumnResize();
1515
+
1516
+ if (bIsColumnMenuEnabled) {
1517
+ oTable._createColumnHeaderMenu();
1518
+ } else {
1519
+ oTable._destroyColumnHeaderMenu();
1520
+ }
1521
+ }
1522
+
1470
1523
  function updateP13nSettings(oTable) {
1471
1524
  oTable._updateP13nButton();
1472
1525
 
@@ -1871,17 +1924,8 @@ sap.ui.define([
1871
1924
  });
1872
1925
  };
1873
1926
 
1874
- Table.prototype.setHeader = function(sText) {
1875
- this.setProperty("header", sText, true);
1876
- this._updateHeaderText();
1877
- return this;
1878
- };
1879
-
1880
1927
  Table.prototype.setHeaderVisible = function(bVisible) {
1881
1928
  this.setProperty("headerVisible", bVisible, true);
1882
- if (this._oTitle) {
1883
- this._oTitle.setWidth(this.getHeaderVisible() ? undefined : "0px");
1884
- }
1885
1929
  this._updateInvisibleTitle();
1886
1930
  this._updateVariantManagementStyle();
1887
1931
  return this;
@@ -1903,12 +1947,6 @@ sap.ui.define([
1903
1947
  }
1904
1948
  };
1905
1949
 
1906
- Table.prototype.setShowRowCount = function(bShowCount) {
1907
- this.setProperty("showRowCount", bShowCount, true);
1908
- this._updateHeaderText();
1909
- return this;
1910
- };
1911
-
1912
1950
  Table.prototype.setEnableExport = function(bEnableExport) {
1913
1951
  this.setProperty("enableExport", bEnableExport, true);
1914
1952
  this._updateExportButton();
@@ -1969,11 +2007,29 @@ sap.ui.define([
1969
2007
  }
1970
2008
 
1971
2009
  if (!this._oToolbar) {
1972
- // Create Title
1973
2010
  this._oTitle = new Title(this.getId() + "-title", {
1974
- text: this.getHeader(),
1975
- width: this.getHeaderVisible() ? undefined : "0px",
1976
- level: this.getHeaderLevel(),
2011
+ text: {
2012
+ parts: [
2013
+ {path: "$sap.ui.mdc.Table>/header"},
2014
+ {path: "$sap.ui.mdc.Table>/showRowCount"},
2015
+ {path: "$sap.ui.mdc.Table>/@custom/rowCount"}
2016
+ ],
2017
+ formatter: (sHeader, bShowRowCount, iRowCount) => {
2018
+ if (this._bAnnounceTableUpdate && !this._bSkipAnnounceTableUpdate) {
2019
+ this._bAnnounceTableUpdate = false;
2020
+ MTableUtil.announceTableUpdate(sHeader, bShowRowCount ? iRowCount : undefined);
2021
+ }
2022
+
2023
+ if (bShowRowCount && iRowCount > 0) {
2024
+ this._oNumberFormatInstance ??= NumberFormat.getIntegerInstance({groupingEnabled: true});
2025
+ sHeader += ` (${this._oNumberFormatInstance.format(iRowCount)})`;
2026
+ }
2027
+
2028
+ return sHeader;
2029
+ }
2030
+ },
2031
+ width: "{= ${$sap.ui.mdc.Table>/headerVisible} ? undefined : '0px' }",
2032
+ level: "{$sap.ui.mdc.Table>/headerLevel}",
1977
2033
  titleStyle: this.getHeaderStyle() || TitleLevel[ThemeParameters.get({name: "_sap_ui_mdc_Table_HeaderStyle"})]
1978
2034
  });
1979
2035
  // Create Toolbar
@@ -2743,21 +2799,33 @@ sap.ui.define([
2743
2799
  insertFilterInfoBar(this);
2744
2800
  }
2745
2801
 
2746
- if (!this._oColumnHeaderMenu) {
2747
- this._oQuickActionContainer = new QuickActionContainer({table: this});
2748
- this._oColumnHeaderMenu = new ColumnMenu({
2749
- id: this.getId() + "-columnHeaderMenu",
2750
- showTableSettingsButton: true
2751
- });
2752
- this._oColumnHeaderMenu.addAggregation("_quickActions", this._oQuickActionContainer);
2753
- this.addDependent(this._oColumnHeaderMenu);
2802
+ updateColumnMenu(this);
2754
2803
 
2755
- FESRHelper.setSemanticStepname(this._oColumnHeaderMenu, "beforeOpen", "mdc:tbl:p13n:col");
2804
+ this._updateInvisibleTitle();
2805
+ };
2756
2806
 
2757
- this._oColumnHeaderMenu.attachBeforeOpen(this._createColumnMenuContent, this);
2807
+ Table.prototype._createColumnHeaderMenu = function() {
2808
+ if (this._oColumnHeaderMenu) {
2809
+ return;
2758
2810
  }
2759
2811
 
2760
- this._updateInvisibleTitle();
2812
+ this._oQuickActionContainer = new QuickActionContainer({table: this});
2813
+ this._oColumnHeaderMenu = new ColumnMenu({
2814
+ id: this.getId() + "-columnHeaderMenu",
2815
+ showTableSettingsButton: true
2816
+ });
2817
+ this._oColumnHeaderMenu.addAggregation("_quickActions", this._oQuickActionContainer);
2818
+ this.addDependent(this._oColumnHeaderMenu);
2819
+
2820
+ FESRHelper.setSemanticStepname(this._oColumnHeaderMenu, "beforeOpen", "mdc:tbl:p13n:col");
2821
+
2822
+ this._oColumnHeaderMenu.attachBeforeOpen(this._createColumnMenuContent, this);
2823
+ };
2824
+
2825
+ Table.prototype._destroyColumnHeaderMenu = function() {
2826
+ this._oColumnHeaderMenu?.destroy();
2827
+ delete this._oColumnHeaderMenu;
2828
+ delete this._oQuickActionContainer;
2761
2829
  };
2762
2830
 
2763
2831
  Table.prototype._createColumnMenuContent = function(oEvent) {
@@ -3002,8 +3070,8 @@ sap.ui.define([
3002
3070
  *
3003
3071
  * @private
3004
3072
  */
3005
- Table.prototype._onDataRequested = function() {
3006
- this._bIgnoreChange = true;
3073
+ Table.prototype._onBindingDataRequested = function() {
3074
+ this._bSkipAnnounceTableUpdate = true;
3007
3075
  };
3008
3076
 
3009
3077
  /**
@@ -3011,20 +3079,9 @@ sap.ui.define([
3011
3079
  *
3012
3080
  * @private
3013
3081
  */
3014
- Table.prototype._onDataReceived = function() {
3015
- this._bIgnoreChange = false;
3016
- this._updateTableHeaderState();
3017
- };
3018
-
3019
- /**
3020
- * Event handler for binding createActivate
3021
- *
3022
- * @private
3023
- */
3024
- Table.prototype._onCreateActivate = function() {
3025
- Promise.resolve().then(() => {
3026
- this._updateTableHeaderState();
3027
- });
3082
+ Table.prototype._onBindingDataReceived = function() {
3083
+ this._bSkipAnnounceTableUpdate = false;
3084
+ this._updateRowCountForHeader();
3028
3085
  };
3029
3086
 
3030
3087
  /**
@@ -3034,54 +3091,14 @@ sap.ui.define([
3034
3091
  */
3035
3092
  Table.prototype._onBindingChange = function() {
3036
3093
  this.fireEvent("_bindingChange"); // consumed by sap.ui.mdc.valuehelp.content.MDCTable
3037
-
3038
3094
  this._updateExpandAllButton();
3039
3095
  this._updateCollapseAllButton();
3040
3096
  this._updateExportButton();
3041
-
3042
- /* skip calling of _updateHeaderText till data is received otherwise MTableUtil.announceTableUpdate
3043
- will be called to early and the user gets an incorrect announcement via screen reader of the actual table state*/
3044
- if (this._bIgnoreChange) {
3045
- return;
3046
- }
3047
- this._updateTableHeaderState();
3048
- };
3049
-
3050
- /**
3051
- * Updates the table header states, like the header text and the export button.
3052
- *
3053
- * @private
3054
- */
3055
- Table.prototype._updateTableHeaderState = function() {
3056
- this._updateHeaderText();
3097
+ this._updateRowCountForHeader();
3057
3098
  };
3058
3099
 
3059
- Table.prototype._updateHeaderText = function() {
3060
- let sHeader;
3061
- let iRowCount;
3062
-
3063
- if (!this._oNumberFormatInstance) {
3064
- this._oNumberFormatInstance = NumberFormat.getFloatInstance();
3065
- }
3066
-
3067
- if (this._oTitle && this.getHeader()) {
3068
- sHeader = this.getHeader();
3069
- if (this.getShowRowCount()) {
3070
- iRowCount = this.getRowBinding() ? this.getRowBinding().getCount() : 0;
3071
- if (iRowCount > 0) {
3072
- const sValue = this._oNumberFormatInstance.format(iRowCount);
3073
- sHeader += " (" + sValue + ")";
3074
- }
3075
- }
3076
-
3077
- this._oTitle.setText(sHeader);
3078
- }
3079
-
3080
- if (!this._bIgnoreChange && this._bAnnounceTableUpdate) {
3081
- this._bAnnounceTableUpdate = false;
3082
- // iRowCount is undefined, if this.getShowRowCount() returns false
3083
- MTableUtil.announceTableUpdate(this.getHeader(), iRowCount);
3084
- }
3100
+ Table.prototype._updateRowCountForHeader = function() {
3101
+ this._oManagedObjectModel.setProperty("/@custom/rowCount", this.getRowBinding().getCount());
3085
3102
  };
3086
3103
 
3087
3104
  Table.prototype._updateColumnsBeforeBinding = function() {
@@ -3178,9 +3195,8 @@ sap.ui.define([
3178
3195
  delete oBindingInfo.template;
3179
3196
  }
3180
3197
 
3181
- Table._addBindingListener(oBindingInfo, "dataRequested", this._onDataRequested.bind(this));
3182
- Table._addBindingListener(oBindingInfo, "dataReceived", this._onDataReceived.bind(this));
3183
- Table._addBindingListener(oBindingInfo, "createActivate", this._onCreateActivate.bind(this));
3198
+ Table._addBindingListener(oBindingInfo, "dataRequested", this._onBindingDataRequested.bind(this));
3199
+ Table._addBindingListener(oBindingInfo, "dataReceived", this._onBindingDataReceived.bind(this));
3184
3200
  Table._addBindingListener(oBindingInfo, "change", this._onBindingChange.bind(this));
3185
3201
  };
3186
3202
 
@@ -179,16 +179,17 @@ sap.ui.define([
179
179
  * @protected
180
180
  */
181
181
  TableDelegate.getGroupSorter = function(oTable) {
182
+ const oPropertyHelper = oTable.getPropertyHelper();
182
183
  const oGroupLevel = oTable._getGroupedProperties()[0];
183
184
 
184
- if (!oGroupLevel || !oTable._isOfType(TableType.ResponsiveTable)) {
185
+ if (!oGroupLevel || !oTable._isOfType(TableType.ResponsiveTable) || !oPropertyHelper.hasProperty(oGroupLevel.name)) {
185
186
  return undefined;
186
187
  }
187
188
 
188
189
  const oSortedProperty = oTable._getSortedProperties().find((oSortCondition) => {
189
190
  return oSortCondition.name === oGroupLevel.name;
190
191
  });
191
- const sPath = oTable.getPropertyHelper().getProperty(oGroupLevel.name).path;
192
+ const sPath = oPropertyHelper.getProperty(oGroupLevel.name).path;
192
193
  const bDescending = oSortedProperty ? oSortedProperty.descending : false;
193
194
 
194
195
  if (!oTable._mFormatGroupHeaderInfo || oTable._mFormatGroupHeaderInfo.propertyKey !== oGroupLevel.name) {
@@ -69,7 +69,7 @@ sap.ui.define([
69
69
  * and {@link sap.ui.mdc.FilterField FilterField} controls using the <code>valueHelp</code> association. One <code>ValueHelp</code> element instance can be
70
70
  * assigned to multiple fields (like in different table rows). It should be placed in the control tree on the container holding the fields.
71
71
  * @extends sap.ui.mdc.Element
72
- * @version 1.141.2
72
+ * @version 1.142.0
73
73
  * @constructor
74
74
  * @abstract
75
75
  * @public
@@ -141,7 +141,7 @@ sap.ui.define([
141
141
  };
142
142
 
143
143
  /**
144
- * Returns filters that are used when updating the binding of the <code>ValueHelp</code>.<br/>By default, this method returns a set of {@link sap.ui.model.Filter Filters} originating from an available {@link sap.ui.mdc.FilterBar FilterBar}, the delegate's own {@link module:sap/ui/mdc/ValueHelpDelegate.getFilterConditions getFilterConditions}, and/or the {@link sap.ui.mdc.valuehelp.base.FilterableListContent#getFilterFields filterFields} configuration of the given {@link sap.ui.mdc.valuehelp.base.FilterableListContent FilterableListContent}.
144
+ * Returns filters that are used when updating the binding of the <code>ValueHelp</code>.<br/>By default, this method returns a set of {@link sap.ui.model.Filter Filters} originating from an available {@link sap.ui.mdc.FilterBar FilterBar} or the delegate's own {@link module:sap/ui/mdc/ValueHelpDelegate.getFilterConditions getFilterConditions} implementation.
145
145
  *
146
146
  * @param {sap.ui.mdc.ValueHelp} oValueHelp The <code>ValueHelp</code> control instance
147
147
  * @param {sap.ui.mdc.valuehelp.base.FilterableListContent} oContent <code>ValueHelp</code> content requesting conditions configuration
@@ -415,6 +415,9 @@ sap.ui.define([
415
415
  * @since 1.106.0
416
416
  */
417
417
  ValueHelpDelegate.getFilterConditions = function (oValueHelp, oContent, oConfig) {
418
+ /**
419
+ * @deprecated since 1.106.0
420
+ */
418
421
  if (this.getInitialFilterConditions) {
419
422
  return this.getInitialFilterConditions(oValueHelp, oContent, (oConfig && oConfig.control) || (oContent && oContent.getControl()));
420
423
  }
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * The action for an {@link sap.ui.mdc.ActionToolbar ActionToolbar} control with given layout information that determines where the wrapped control is displayed on the <code>ActionToolbar</code>.
28
28
  * @extends sap.ui.core.Control
29
29
  * @author SAP SE
30
- * @version 1.141.2
30
+ * @version 1.142.0
31
31
  * @constructor
32
32
  * @since 1.58
33
33
  * @public
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @class The <code>ChartImplementationContainer</code> creates a container for the <code>content</code> (chart) and <code>noDataContent</code>. Based on the <code>showNoDataStruct</code> the <code>content</code> or <code>noDataContent</code> will be shown.
22
22
  * @extends sap.ui.core.Control
23
23
  * @author SAP SE
24
- * @version 1.141.2
24
+ * @version 1.142.0
25
25
  * @constructor
26
26
  *
27
27
  * @public
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @class The <code>ChartSelectionDetails</code> control creates a <code>sap.m.SelectionDetails</code> popover based on metadata and the configuration specified.
39
39
  * @extends sap.m.SelectionDetails
40
40
  * @author SAP SE
41
- * @version 1.141.2
41
+ * @version 1.142.0
42
42
  * @constructor
43
43
  * @public
44
44
  * @experimental As of version 1.88
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.mdc.util.PropertyHelper
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.141.2
29
+ * @version 1.142.0
30
30
  *
31
31
  * @private
32
32
  * @since 1.83
@@ -49,7 +49,7 @@ sap.ui.define([
49
49
  * @namespace
50
50
  * @alias sap.ui.mdc.chart.ToolbarControlFactory
51
51
  * @author SAP SE
52
- * @version 1.141.2
52
+ * @version 1.142.0
53
53
  * @since 1.123
54
54
  * @experimental
55
55
  * @private
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  *
34
34
  * @namespace
35
35
  * @author SAP SE
36
- * @version 1.141.2
36
+ * @version 1.142.0
37
37
  * @since 1.61.0
38
38
  * @alias sap.ui.mdc.condition.Condition
39
39
  *
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  *
25
25
  * @namespace
26
26
  * @author SAP SE
27
- * @version 1.141.2
27
+ * @version 1.142.0
28
28
  * @private
29
29
  * @ui5-restricted sap.ui.mdc
30
30
  * @since 1.74.0
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * @extends sap.ui.model.json.JSONModel
34
34
  *
35
35
  * @author SAP SE
36
- * @version 1.141.2
36
+ * @version 1.142.0
37
37
  * @since 1.48.0
38
38
  * @alias sap.ui.mdc.condition.ConditionModel
39
39
  *
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  *
27
27
  * @namespace
28
28
  * @author SAP SE
29
- * @version 1.141.2
29
+ * @version 1.142.0
30
30
  * @since 1.78.0
31
31
  * @alias sap.ui.mdc.condition.FilterConverter
32
32
  *
@@ -68,7 +68,7 @@ sap.ui.define([
68
68
  *
69
69
  * @namespace
70
70
  * @author SAP SE
71
- * @version 1.141.2
71
+ * @version 1.142.0
72
72
  * @since 1.73.0
73
73
  * @alias sap.ui.mdc.condition.FilterOperatorUtil
74
74
  *
@@ -144,7 +144,7 @@ sap.ui.define([
144
144
  * @param {function} [oConfiguration.getTextForCopy] Function to determine the text copied into clipboard
145
145
  * @constructor
146
146
  * @author SAP SE
147
- * @version 1.141.2
147
+ * @version 1.142.0
148
148
  * @public
149
149
  * @alias sap.ui.mdc.condition.Operator
150
150
  * @since 1.73.0
@@ -63,7 +63,7 @@ sap.ui.define([
63
63
  * @extends sap.m.DynamicDateOption
64
64
  *
65
65
  * @author SAP SE
66
- * @version 1.141.2
66
+ * @version 1.142.0
67
67
  *
68
68
  * @private
69
69
  * @ui5-restricted sap.ui.mdc
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  * @param {int[]|function} [oConfiguration.defaultValues] Array of values for the defaults of <code>RangeOperators</code> parameter. This can be a function, which returns the array of values. If not used the default for the values is 1.
40
40
  * @constructor
41
41
  * @author SAP SE
42
- * @version 1.141.2
42
+ * @version 1.142.0
43
43
  * @public
44
44
  * @alias sap.ui.mdc.condition.RangeOperator
45
45
  * @since 1.74.0
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+ sap.ui.define([
7
+ "sap/ui/mdc/Geomap", "../Util"
8
+ ], (Geomap, Util) => {
9
+ "use strict";
10
+
11
+ const oDesignTime = {
12
+ actions: {
13
+ },
14
+ aggregations: {
15
+ }
16
+ };
17
+
18
+ const aAllowedAggregations = ["items"],
19
+ aAllowedProperties = ["header", "zoom"];
20
+
21
+ return Util.getDesignTime(Geomap, aAllowedProperties, aAllowedAggregations, oDesignTime);
22
+
23
+ });
@@ -0,0 +1,46 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // Provides enumeration sap.ui.mdc.enums.GeomapControlPosition
8
+ sap.ui.define(["sap/ui/base/DataType"], (DataType) => {
9
+ "use strict";
10
+
11
+ /**
12
+ * Enumeration of the <code>position</code> property of the Geomap controls
13
+ *
14
+ * @enum {string}
15
+ * @public
16
+ * @ui5-experimental-since 1.142
17
+ * @alias sap.ui.mdc.enums.GeomapControlPosition
18
+ */
19
+ const GeomapControlPosition = {
20
+
21
+ /**
22
+ * The control is positioned in the top left corner of the page
23
+ */
24
+ TopLeft: "TopLeft",
25
+
26
+ /**
27
+ * The control is positioned in the top right corner of the page
28
+ */
29
+ TopRight: "TopRight",
30
+
31
+ /**
32
+ * The control is positioned in the bottom left corner of the page
33
+ */
34
+ BottomLeft: "BottomLeft",
35
+
36
+ /**
37
+ * The control is positioned in the bottom right corner of the page
38
+ */
39
+ BottomRight: "BottomRight"
40
+ };
41
+
42
+ DataType.registerEnum("sap.ui.mdc.enums.GeomapControlPosition", GeomapControlPosition);
43
+
44
+ return GeomapControlPosition;
45
+
46
+ }, /* bExport= */ true);
@@ -61,7 +61,7 @@ sap.ui.define([
61
61
  * @extends sap.ui.model.SimpleType
62
62
  *
63
63
  * @author SAP SE
64
- * @version 1.141.2
64
+ * @version 1.142.0
65
65
  *
66
66
  * @since 1.62.0
67
67
  * @public
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  *
27
27
  * @namespace
28
28
  * @author SAP SE
29
- * @version 1.141.2
29
+ * @version 1.142.0
30
30
  * @since 1.121.0
31
31
  * @alias sap.ui.mdc.field.ConditionTypeUtils
32
32
  *
@@ -54,7 +54,7 @@ sap.ui.define([
54
54
  * @extends sap.ui.model.SimpleType
55
55
  *
56
56
  * @author SAP SE
57
- * @version 1.141.2
57
+ * @version 1.142.0
58
58
  *
59
59
  * @since 1.62.0
60
60
  * @public
@@ -16,7 +16,7 @@ sap.ui.define([
16
16
  * @param {object} [mSettings] Initial settings for the new control
17
17
  * @class A field help used in the <code>FieldInfo</code> aggregation in <code>FieldBase</code> controls that allows you to add custom content.
18
18
  * @extends sap.ui.mdc.field.FieldInfoBase
19
- * @version 1.141.2
19
+ * @version 1.142.0
20
20
  * @constructor
21
21
  * @private
22
22
  * @ui5-restricted sap.fe
@@ -50,7 +50,7 @@ sap.ui.define([
50
50
  * @extends sap.ui.mdc.field.ConditionsType
51
51
  *
52
52
  * @author SAP SE
53
- * @version 1.141.2
53
+ * @version 1.142.0
54
54
  *
55
55
  * @since 1.96.0
56
56
  * @public