@openui5/sap.ui.table 1.143.1 → 1.144.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 (78) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +3 -3
  3. package/src/sap/ui/table/.library +2 -2
  4. package/src/sap/ui/table/AnalyticalColumn.js +2 -2
  5. package/src/sap/ui/table/AnalyticalColumnMenu.js +2 -2
  6. package/src/sap/ui/table/AnalyticalTable.js +2 -2
  7. package/src/sap/ui/table/Column.js +2 -2
  8. package/src/sap/ui/table/ColumnMenu.js +2 -2
  9. package/src/sap/ui/table/CreationRow.js +2 -2
  10. package/src/sap/ui/table/CreationRowRenderer.js +2 -2
  11. package/src/sap/ui/table/HeaderSelector.js +90 -0
  12. package/src/sap/ui/table/HeaderSelectorRenderer.js +88 -0
  13. package/src/sap/ui/table/Row.js +2 -2
  14. package/src/sap/ui/table/RowAction.js +2 -2
  15. package/src/sap/ui/table/RowActionItem.js +2 -2
  16. package/src/sap/ui/table/RowActionRenderer.js +1 -1
  17. package/src/sap/ui/table/RowSettings.js +2 -2
  18. package/src/sap/ui/table/Table.js +37 -60
  19. package/src/sap/ui/table/TablePersoController.js +2 -2
  20. package/src/sap/ui/table/TableRenderer.js +1624 -718
  21. package/src/sap/ui/table/TreeTable.js +2 -2
  22. package/src/sap/ui/table/designtime/AnalyticalTable.designtime.js +5 -1
  23. package/src/sap/ui/table/designtime/Table.designtime.js +5 -1
  24. package/src/sap/ui/table/designtime/library.designtime.js +1 -1
  25. package/src/sap/ui/table/designtime/messagebundle.properties +6 -0
  26. package/src/sap/ui/table/extensions/Accessibility.js +28 -53
  27. package/src/sap/ui/table/extensions/AccessibilityRender.js +3 -4
  28. package/src/sap/ui/table/extensions/DragAndDrop.js +2 -2
  29. package/src/sap/ui/table/extensions/ExtensionBase.js +2 -2
  30. package/src/sap/ui/table/extensions/Keyboard.js +5 -31
  31. package/src/sap/ui/table/extensions/KeyboardDelegate.js +2 -2
  32. package/src/sap/ui/table/extensions/Pointer.js +2 -2
  33. package/src/sap/ui/table/extensions/Scrolling.js +2 -10
  34. package/src/sap/ui/table/extensions/ScrollingIOS.js +2 -2
  35. package/src/sap/ui/table/extensions/Synchronization.js +16 -18
  36. package/src/sap/ui/table/library.js +11 -11
  37. package/src/sap/ui/table/library.support.js +1 -1
  38. package/src/sap/ui/table/menus/AnalyticalTableContextMenu.js +2 -2
  39. package/src/sap/ui/table/menus/ColumnHeaderMenuAdapter.js +2 -2
  40. package/src/sap/ui/table/menus/ContextMenu.js +2 -2
  41. package/src/sap/ui/table/menus/LegacyColumnMenuAdapter.js +1 -1
  42. package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +2 -2
  43. package/src/sap/ui/table/plugins/BindingSelection.js +27 -13
  44. package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +63 -52
  45. package/src/sap/ui/table/plugins/ODataV4Aggregation.js +2 -2
  46. package/src/sap/ui/table/plugins/ODataV4Hierarchy.js +2 -2
  47. package/src/sap/ui/table/plugins/ODataV4MultiLevel.js +2 -2
  48. package/src/sap/ui/table/plugins/ODataV4MultiSelection.js +78 -71
  49. package/src/sap/ui/table/plugins/ODataV4Selection.js +2 -2
  50. package/src/sap/ui/table/plugins/ODataV4SingleSelection.js +2 -2
  51. package/src/sap/ui/table/plugins/PluginBase.js +2 -2
  52. package/src/sap/ui/table/plugins/SelectionModelSelection.js +26 -13
  53. package/src/sap/ui/table/plugins/SelectionPlugin.js +16 -14
  54. package/src/sap/ui/table/rowmodes/Auto.js +5 -13
  55. package/src/sap/ui/table/rowmodes/Fixed.js +3 -4
  56. package/src/sap/ui/table/rowmodes/Interactive.js +21 -27
  57. package/src/sap/ui/table/rowmodes/RowMode.js +20 -88
  58. package/src/sap/ui/table/rowmodes/Type.js +1 -1
  59. package/src/sap/ui/table/rowmodes/Variable.js +2 -2
  60. package/src/sap/ui/table/rules/Accessibility.support.js +1 -1
  61. package/src/sap/ui/table/rules/Binding.support.js +1 -1
  62. package/src/sap/ui/table/rules/ColumnTemplate.support.js +1 -1
  63. package/src/sap/ui/table/rules/Plugins.support.js +1 -1
  64. package/src/sap/ui/table/rules/Rows.support.js +1 -1
  65. package/src/sap/ui/table/rules/TableHelper.support.js +1 -1
  66. package/src/sap/ui/table/themes/base/Cell.less +26 -16
  67. package/src/sap/ui/table/themes/base/CheckBox.less +51 -0
  68. package/src/sap/ui/table/themes/base/HeaderSelector.less +61 -0
  69. package/src/sap/ui/table/themes/base/RowSelection.less +9 -138
  70. package/src/sap/ui/table/themes/base/library.source.less +3 -1
  71. package/src/sap/ui/table/themes/sap_hcb/base_Cell.less +1 -1
  72. package/src/sap/ui/table/themes/sap_hcb/base_RowSelection.less +1 -1
  73. package/src/sap/ui/table/themes/sap_hcb/library.source.less +1 -1
  74. package/src/sap/ui/table/utils/TableUtils.js +2 -2
  75. package/src/sap/ui/table/utils/_ColumnUtils.js +2 -2
  76. package/src/sap/ui/table/utils/_GroupingUtils.js +2 -2
  77. package/src/sap/ui/table/utils/_HookUtils.js +2 -2
  78. package/src/sap/ui/table/utils/_MenuUtils.js +2 -2
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @public
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.143.1
43
+ * @version 1.144.0
44
44
  */
45
45
  const InteractiveRowMode = RowMode.extend("sap.ui.table.rowmodes.Interactive", /** @lends sap.ui.table.rowmodes.Interactive.prototype */ {
46
46
  metadata: {
@@ -97,9 +97,19 @@ sap.ui.define([
97
97
  */
98
98
  const ResizeHelper = {};
99
99
 
100
- function setNewRowCount(iRowCount) {
101
- _private(this).rowCount = iRowCount;
102
- InvisibleMessage.getInstance().announce(TableUtils.getResourceText("TBL_RSZ_RESIZED", [iRowCount]));
100
+ function setNewRowCount(iRowCount, bAnnounceChange = true) {
101
+ const oInternalState = _private(this);
102
+
103
+ if (oInternalState.rowCount === iRowCount) {
104
+ return;
105
+ }
106
+
107
+ oInternalState.rowCount = iRowCount;
108
+ this.invalidate();
109
+
110
+ if (bAnnounceChange) {
111
+ InvisibleMessage.getInstance().announce(TableUtils.getResourceText("TBL_RSZ_RESIZED", [iRowCount]));
112
+ }
103
113
  }
104
114
 
105
115
  /**
@@ -372,12 +382,6 @@ sap.ui.define([
372
382
  return Math.max(0, Math.floor(iViewportHeight - oTableDomRef.getBoundingClientRect().height + oRowContainer.getBoundingClientRect().height));
373
383
  };
374
384
 
375
- InteractiveRowMode.prototype.setRowCount = function(iRowCount) {
376
- this.setProperty("rowCount", iRowCount);
377
- setNewRowCount.call(this, iRowCount);
378
- return this;
379
- };
380
-
381
385
  InteractiveRowMode.prototype.updateTable = function(sReason) {
382
386
  this.getTable().getDomRef("heightResizer")?.setAttribute("aria-valuenow", this.getActualRowCount());
383
387
 
@@ -399,9 +403,8 @@ sap.ui.define([
399
403
  */
400
404
  TableDelegate.onAfterRendering = function(oEvent) {
401
405
  const oTable = this.getTable();
402
- const bRenderedRows = oEvent && oEvent.isMarked("renderRows");
403
406
 
404
- if (!bRenderedRows && oTable.getRows().length > 0) {
407
+ if (oTable.getRows().length > 0) {
405
408
  this.fireRowsUpdated(TableUtils.RowsUpdateReason.Render);
406
409
  }
407
410
 
@@ -438,22 +441,18 @@ sap.ui.define([
438
441
  case "ArrowUp":
439
442
  oEvent.preventDefault();
440
443
  setNewRowCount.call(this, Math.max(this.getActualRowCount() - 1, this.getMinRowCount()));
441
- this.updateTable(TableUtils.RowsUpdateReason.Render);
442
444
  break;
443
445
  case "ArrowDown":
444
446
  oEvent.preventDefault();
445
447
  setNewRowCount.call(this, Math.min(this.getActualRowCount() + 1, this._getMaxRowCount()));
446
- this.updateTable(TableUtils.RowsUpdateReason.Render);
447
448
  break;
448
449
  case "Home":
449
450
  oEvent.preventDefault();
450
451
  setNewRowCount.call(this, this.getMinRowCount());
451
- this.updateTable(TableUtils.RowsUpdateReason.Render);
452
452
  break;
453
453
  case "End":
454
454
  oEvent.preventDefault();
455
455
  setNewRowCount.call(this, this._getMaxRowCount());
456
- this.updateTable(TableUtils.RowsUpdateReason.Render);
457
456
  break;
458
457
  default:
459
458
  }
@@ -466,6 +465,7 @@ sap.ui.define([
466
465
  }
467
466
 
468
467
  const iActualRowCount = this.getActualRowCount();
468
+
469
469
  if (iActualRowCount === this._getMaxRowCount()) {
470
470
  setNewRowCount.call(this, this.getMinRowCount());
471
471
  } else if (iActualRowCount === this.getMinRowCount()) {
@@ -473,7 +473,6 @@ sap.ui.define([
473
473
  } else {
474
474
  setNewRowCount.call(this, this._getMaxRowCount());
475
475
  }
476
- this.updateTable(TableUtils.RowsUpdateReason.Render);
477
476
  };
478
477
 
479
478
  /**
@@ -537,7 +536,6 @@ sap.ui.define([
537
536
  }
538
537
 
539
538
  setNewRowCount.call(oMode, iNewRowCount);
540
- oMode.updateTable(TableUtils.RowsUpdateReason.Render);
541
539
 
542
540
  document.removeEventListener("touchmove", ResizeHelper.onResizerMove);
543
541
  document.removeEventListener("mousemove", ResizeHelper.onResizerMove);
@@ -557,8 +555,7 @@ sap.ui.define([
557
555
  shortcutText: TableUtils.getResourceText("TBL_RSZ_ROW_UP_SHORTCUT"),
558
556
  select: function() {
559
557
  const iRowCount = oMode.getActualRowCount();
560
- _private(oMode).rowCount = Math.max(iRowCount - 1, oMode.getMinRowCount());
561
- oMode.updateTable(TableUtils.RowsUpdateReason.Render);
558
+ setNewRowCount.call(oMode, Math.max(iRowCount - 1, oMode.getMinRowCount()), true);
562
559
  }
563
560
  }),
564
561
  new MenuItem({
@@ -566,24 +563,21 @@ sap.ui.define([
566
563
  shortcutText: TableUtils.getResourceText("TBL_RSZ_ROW_DOWN_SHORTCUT"),
567
564
  select: function() {
568
565
  const iRowCount = oMode.getActualRowCount();
569
- _private(oMode).rowCount = Math.min(iRowCount + 1, oMode._getMaxRowCount());
570
- oMode.updateTable(TableUtils.RowsUpdateReason.Render);
566
+ setNewRowCount.call(oMode, Math.min(iRowCount + 1, oMode._getMaxRowCount()), true);
571
567
  }
572
568
  }),
573
569
  new MenuItem({
574
570
  text: TableUtils.getResourceText("TBL_RSZ_MINIMIZE"),
575
571
  shortcutText: TableUtils.getResourceText("TBL_RSZ_MINIMIZE_SHORTCUT"),
576
572
  select: function() {
577
- _private(oMode).rowCount = oMode.getMinRowCount();
578
- oMode.updateTable(TableUtils.RowsUpdateReason.Render);
573
+ setNewRowCount.call(oMode, oMode.getMinRowCount(), true);
579
574
  }
580
575
  }),
581
576
  new MenuItem({
582
577
  text: TableUtils.getResourceText("TBL_RSZ_MAXIMIZE"),
583
578
  shortcutText: TableUtils.getResourceText("TBL_RSZ_MAXIMIZE_SHORTCUT"),
584
579
  select: function() {
585
- _private(oMode).rowCount = oMode._getMaxRowCount();
586
- oMode.updateTable(TableUtils.RowsUpdateReason.Render);
580
+ setNewRowCount.call(oMode, oMode._getMaxRowCount(), true);
587
581
  }
588
582
  })
589
583
  ],
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @public
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.143.1
40
+ * @version 1.144.0
41
41
  */
42
42
  const RowMode = Element.extend("sap.ui.table.rowmodes.RowMode", /** @lends sap.ui.table.rowmodes.RowMode.prototype */ {
43
43
  metadata: {
@@ -193,7 +193,7 @@ sap.ui.define([
193
193
  /**
194
194
  * Gets the CSS styles that are applied to the table's DOM root element.
195
195
  *
196
- * @returns {{height: sap.ui.core.CSSSize?, minHeight: sap.ui.core.CSSSize?, maxHeight: sap.ui.core.CSSSize?}}
196
+ * @returns {{height=: sap.ui.core.CSSSize, minHeight=: sap.ui.core.CSSSize, maxHeight=: sap.ui.core.CSSSize}}
197
197
  * The styles the table should have
198
198
  * @private
199
199
  * @abstract
@@ -206,7 +206,7 @@ sap.ui.define([
206
206
  * Gets the CSS styles that are applied to the table's bottom placeholder DOM element. This element can be used to visually reserve space for
207
207
  * rows. If <code>undefined</code> is returned during rendering, this element will not be rendered.
208
208
  *
209
- * @returns {{height: sap.ui.core.CSSSize?}|undefined}
209
+ * @returns {{height=: sap.ui.core.CSSSize}|undefined}
210
210
  * The styles the table's bottom placeholder should have
211
211
  * @private
212
212
  * @abstract
@@ -218,7 +218,7 @@ sap.ui.define([
218
218
  /**
219
219
  * Gets the CSS styles that are applied to the DOM container of the rows.
220
220
  *
221
- * @returns {{height: sap.ui.core.CSSSize?, minHeight: sap.ui.core.CSSSize?, maxHeight: sap.ui.core.CSSSize?}}
221
+ * @returns {{height=: sap.ui.core.CSSSize, minHeight=: sap.ui.core.CSSSize, maxHeight=: sap.ui.core.CSSSize}}
222
222
  * The styles the row container should have
223
223
  * @private
224
224
  * @abstract
@@ -251,28 +251,19 @@ sap.ui.define([
251
251
  }
252
252
 
253
253
  _private(this).updateTableAsync.cancel(); // Update will be performed right now.
254
+ this.updateTableRows(); // Update the rows aggregation and the binding contexts of rows.
254
255
 
255
- // Update the rows aggregation and the row's binding contexts.
256
- oTable._adjustFirstVisibleRowToTotalRowCount(); // TODO: Move this to Table#onBeforeRendering as soon as #renderTableRows is removed
257
- const bRowsAggregationChanged = this.updateTableRows();
256
+ const aRows = oTable.getRows();
258
257
 
259
- if (oTable._bInvalid) {
260
- // No need to update the DOM or fire the _rowsUpdated event if the table is about to rerender.
261
- return;
262
- }
263
-
264
- // Update the DOM.
265
- this.applyTableStyles();
266
- this.applyRowContainerStyles();
267
- this.applyTableBottomPlaceholderStyles();
268
-
269
- if (bRowsAggregationChanged || oTable.getRows().some(function(oRow) {
270
- return oRow.getDomRef() == null;
271
- })) {
272
- this.renderTableRows();
258
+ if (!oTable._bInvalid && aRows.some((oRow) => !oRow.getDomRef())) {
259
+ // Rows might have been added to the table in the dataRequested listener without invalidating the table.
260
+ // In this case, invalidate the table to make sure the rows are rendered.
261
+ this.invalidate();
273
262
  }
274
263
 
275
- if (bRowsAggregationChanged || oTable.getRows().length > 0) {
264
+ if (!oTable._bInvalid && aRows.length > 0) {
265
+ // If the table is invalid and therefore renders, the event will be fired after rendering.
266
+ // Otherwise, fire it now, because the binding contexts of the rows were updated.
276
267
  this.fireRowsUpdated(sReason);
277
268
  }
278
269
  };
@@ -588,14 +579,12 @@ sap.ui.define([
588
579
  * binding contexts for new rows.
589
580
  * The row count is ignored if the rows are not bound and the NoData overlay is enabled. In this case, the rows aggregation will be emptied.
590
581
  *
591
- * @returns {boolean} Whether the rows aggregation of the table has been changed.
592
582
  * @private
593
583
  */
594
584
  RowMode.prototype.updateTableRows = function() {
595
585
  const oTable = this.getTable();
596
586
  let aRows = oTable.getRows();
597
587
  let iNewNumberOfRows = this.getComputedRowCounts().count;
598
- let bRowsAggregationChanged = false;
599
588
 
600
589
  // There is no need to have rows in the aggregation if the NoData overlay is enabled and no binding is available.
601
590
  if (TableUtils.isNoDataVisible(oTable) && !oTable.getBinding()) {
@@ -615,14 +604,13 @@ sap.ui.define([
615
604
  // Destroy rows if they are invalid, but keep the DOM in case the table is going to render.
616
605
  // Becomes obsolete with CPOUIFTEAMB-1379
617
606
  if (oTable._bRowAggregationInvalid) {
618
- bRowsAggregationChanged = aRows.length > 0;
619
- oTable.destroyAggregation("rows", oTable._bInvalid ? "KeepDom" : true);
607
+ oTable.destroyAggregation("rows", oTable._bInvalid ? "KeepDom" : undefined);
620
608
  aRows = [];
621
609
  }
622
610
 
623
611
  if (iNewNumberOfRows === aRows.length) {
624
612
  updateBindingContextsOfRows(this, aRows);
625
- return bRowsAggregationChanged;
613
+ return;
626
614
  }
627
615
 
628
616
  TableUtils.dynamicCall(oTable._getSyncExtension, function(oSyncExtension) {
@@ -630,59 +618,7 @@ sap.ui.define([
630
618
  });
631
619
 
632
620
  updateRowsAggregation(this, iNewNumberOfRows);
633
- bRowsAggregationChanged = true;
634
621
  oTable._bRowAggregationInvalid = false;
635
-
636
- return bRowsAggregationChanged;
637
- };
638
-
639
- /**
640
- * Renders the rows and their containers and writes the HTML to the DOM.
641
- *
642
- * @private
643
- */
644
- RowMode.prototype.renderTableRows = function() {
645
- const oTable = this.getTable();
646
- const oTBody = oTable ? oTable.getDomRef("tableCCnt") : null;
647
-
648
- if (!oTBody) {
649
- return;
650
- }
651
-
652
- // make sure to call rendering event delegates even in case of DOM patching
653
- const oBeforeRenderingEvent = jQuery.Event("BeforeRendering");
654
- oBeforeRenderingEvent.setMarked("renderRows");
655
- oBeforeRenderingEvent.srcControl = oTable;
656
- oTable._handleEvent(oBeforeRenderingEvent);
657
-
658
- const oRM = new RenderManager().getInterface();
659
- const oRenderer = oTable.getRenderer();
660
- oRenderer.renderTableCCnt(oRM, oTable);
661
- oRM.flush(oTBody, false, false);
662
- oRM.destroy();
663
-
664
- // make sure to call rendering event delegates even in case of DOM patching
665
- const oAfterRenderingEvent = jQuery.Event("AfterRendering");
666
- oAfterRenderingEvent.setMarked("renderRows");
667
- oAfterRenderingEvent.srcControl = oTable;
668
- oTable._handleEvent(oAfterRenderingEvent);
669
-
670
- const bHasRows = oTable.getRows().length > 0;
671
- const oDomRef = oTable.getDomRef();
672
- oDomRef.querySelector(".sapUiTableCtrlBefore").setAttribute("tabindex", bHasRows ? "0" : "-1");
673
- oDomRef.querySelector(".sapUiTableCtrlAfter").setAttribute("tabindex", bHasRows ? "0" : "-1");
674
-
675
- // In Safari, minWidths do not work for td's, so the width property needs to be set on the table.
676
- // This does not work, when the table is in AutoRowMode and has many columns with only minWidth.
677
- // The width of the content table is overwritten due to a second rerendering triggered in here.
678
- // Therefore, the width is set of the content table is set back to be the same as the header table.
679
- // BCP: 2380079867
680
- if (Device.browser.safari) {
681
- const oHdrCol = document.getElementById(oTable.getId() + "-header");
682
- const oHdrCnt = document.getElementById(oTable.getId() + "-table");
683
-
684
- oHdrCnt.style.width = oHdrCol.style.width;
685
- }
686
622
  };
687
623
 
688
624
  /**
@@ -799,12 +735,12 @@ sap.ui.define([
799
735
  updateBindingContextsOfRows(oMode, aRows);
800
736
 
801
737
  aNewRows.forEach(function(oNewRow) {
802
- oTable.addAggregation("rows", oNewRow, true);
738
+ oTable.addAggregation("rows", oNewRow);
803
739
  });
804
740
  } else {
805
741
  // Remove rows that are not required.
806
742
  for (let i = aRows.length - 1; i >= iNewNumberOfRows; i--) {
807
- oTable.removeAggregation("rows", i, true);
743
+ oTable.removeAggregation("rows", i);
808
744
  }
809
745
 
810
746
  aRows.splice(iNewNumberOfRows);
@@ -859,12 +795,8 @@ sap.ui.define([
859
795
  * @this sap.ui.table.rowmodes.RowMode
860
796
  */
861
797
  TableDelegate.onBeforeRendering = function(oEvent) {
862
- const bRenderedRows = oEvent && oEvent.isMarked("renderRows");
863
-
864
- if (!bRenderedRows) {
865
- this._bFiredRowsUpdatedAfterRendering = false;
866
- this.updateTable(TableUtils.RowsUpdateReason.Render);
867
- }
798
+ this._bFiredRowsUpdatedAfterRendering = false;
799
+ this.updateTable(TableUtils.RowsUpdateReason.Render);
868
800
  };
869
801
 
870
802
  return RowMode;
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define(["sap/ui/base/DataType"], function(DataType) {
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.table.rowmodes.RowMode
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.143.1
26
+ * @version 1.144.0
27
27
  *
28
28
  * @constructor
29
29
  * @private
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  sap.ui.define([
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
  /**
@@ -32,6 +32,29 @@
32
32
  outline-offset: @_sap_ui_table_Cell_FocusOutlineOffsetInZoomedChrome;
33
33
  }
34
34
  }
35
+
36
+ .sapUiTableRowNavIndicator & {
37
+
38
+ &.sapUiTableRowActionCell::before,
39
+ &.sapUiTableRowActionHeaderCell::before {
40
+ right: @_sap_ui_table_NavIndicatorWidth;
41
+ }
42
+ }
43
+
44
+ .sapUiTableRowNavIndicator:not(.sapUiTableRAct) & {
45
+
46
+ &.sapUiTableCellLast::before {
47
+ right: @_sap_ui_table_NavIndicatorWidth;
48
+ }
49
+ }
50
+
51
+ .sapUiTableRowHighlights & {
52
+
53
+ &.sapUiTableRowSelectionCell::before,
54
+ &.sapUiTableRowSelectionHeaderCell::before {
55
+ left: @_sap_ui_table_RowHighlightWidth;
56
+ }
57
+ }
35
58
  }
36
59
 
37
60
  /*
@@ -82,7 +105,7 @@
82
105
 
83
106
  &.sapUiTableRowActionCell {
84
107
 
85
- .sapUiTableRowNavIndicator & {
108
+ .sapUiTableRowNavIndicator:not(.sapUiTableRAct) & {
86
109
  border-right: none;
87
110
  border-left: none;
88
111
  }
@@ -144,7 +167,7 @@
144
167
  }
145
168
  }
146
169
 
147
- .sapUiTableRowSelectionHeaderCell { /* Contains highlight and SelectAll selector. */
170
+ .sapUiTableRowSelectionHeaderCell { /* Contains highlight and header selector. */
148
171
  display: none;
149
172
  vertical-align: bottom;
150
173
  position: absolute;
@@ -195,19 +218,6 @@
195
218
  width: calc(@_sap_ui_table_RowSelectorWidthCozy ~"+" @_sap_ui_table_RowHighlightWidth);
196
219
  }
197
220
  }
198
-
199
- &.sapUiTableSelAllDisabled > * {
200
- opacity: 0.3;
201
- pointer-events: none;
202
- }
203
-
204
- &:not(.sapUiTableSelAllDisabled) {
205
- cursor: pointer;
206
-
207
- > * {
208
- cursor: pointer;
209
- }
210
- }
211
221
  }
212
222
 
213
223
  .sapUiTableHeaderDataCell {
@@ -435,7 +445,7 @@
435
445
  }
436
446
  }
437
447
 
438
- .sapUiTableRowNavIndicator & {
448
+ .sapUiTableRowNavIndicator:not(.sapUiTableRAct) & {
439
449
  min-width: @_sap_ui_table_NavIndicatorWidth;
440
450
  pointer-events: none;
441
451
  }
@@ -0,0 +1,51 @@
1
+ /* ================================== */
2
+ /* CSS for sap.ui.table/CheckBox */
3
+ /* Base theme */
4
+ /* ================================== */
5
+
6
+ @_sap_ui_table_CheckBox_Size: 1rem;
7
+ @_sap_ui_table_CheckBox_SizeCozy: 1.375rem;
8
+ @_sap_ui_table_CheckBox_CheckMarkColor: var(--sapContent_Selected_ForegroundColor);
9
+ @_sap_ui_table_CheckBox_BackgroundColorHover: var(--sapField_Selector_Hover_Background);
10
+
11
+ .sapUiTableCheckBox {
12
+ &::after {
13
+ display: flex;
14
+ justify-content: center;
15
+ align-items: center;
16
+ text-align: center;
17
+ content: '';
18
+ width: @_sap_ui_table_CheckBox_Size;
19
+ height: @_sap_ui_table_CheckBox_Size;
20
+ font-family: var(--sapContent_IconFontFamily);
21
+ font-size: 0.625rem;
22
+ border-radius: var(--sapField_BorderCornerRadius);
23
+ border: var(--sapField_BorderWidth) var(--sapField_Selector_BorderStyle) var(--sapField_BorderColor);
24
+ background-color: var(--sapField_Background);
25
+ color: @_sap_ui_table_CheckBox_CheckMarkColor;
26
+ box-sizing: border-box;
27
+ margin: auto;
28
+ position: absolute;
29
+ top: 0;
30
+ left: 0;
31
+ bottom: 0;
32
+ right: 0;
33
+
34
+ .sapUiSizeCozy & {
35
+ width: @_sap_ui_table_CheckBox_SizeCozy;
36
+ height: @_sap_ui_table_CheckBox_SizeCozy;
37
+ font-size: 1rem;
38
+ }
39
+ }
40
+
41
+ &.sapUiTableCheckBoxSelected::after {
42
+ content: '\e05b';
43
+ border-color: var(--sapContent_FocusColor);
44
+ }
45
+
46
+ &:hover::after {
47
+ border-color: var(--sapField_Hover_BorderColor);
48
+ background-color: @_sap_ui_table_CheckBox_BackgroundColorHover;
49
+ box-shadow: var(--sapContent_Interaction_Shadow);
50
+ }
51
+ }
@@ -0,0 +1,61 @@
1
+ /* ==================================== */
2
+ /* CSS for sap.ui.table/HeaderSelector */
3
+ /* Base theme */
4
+ /* ==================================== */
5
+
6
+ .sapUiTableHeaderSelector {
7
+ &.sapUiTableHeaderSelectorDisabled > * {
8
+ opacity: var(--sapContent_DisabledOpacity);
9
+ pointer-events: none;
10
+ }
11
+
12
+ &:not(.sapUiTableHeaderSelectorDisabled) {
13
+ cursor: pointer;
14
+
15
+ > * {
16
+ cursor: pointer;
17
+ }
18
+ }
19
+
20
+ > .sapUiTableCheckBox {
21
+ height: 100%;
22
+ width: 100%;
23
+
24
+ &::after {
25
+ /* The checkbox should always be at the bottom if a custom column header height is specified, or the table has multiple header rows */
26
+ top: auto;
27
+ bottom: calc(~"(" @_sap_ui_table_ColumnHeaderHeight ~"-" @_sap_ui_table_CheckBox_Size ~") / 2");
28
+
29
+ .sapUiSizeCozy & {
30
+ bottom: calc(~"(" @_sap_ui_table_ColumnHeaderHeightCozy ~"-" @_sap_ui_table_CheckBox_SizeCozy ~") / 2");
31
+ }
32
+ }
33
+ }
34
+
35
+ .sapUiTableHeaderSelectorIcon {
36
+ width: 100%;
37
+ height: 100%;
38
+
39
+ &::before {
40
+ display: block !important; /* otherwise will be overwritten by icon css rules in RTL */
41
+ position: absolute;
42
+ width: 100%;
43
+ font-size: 1rem;
44
+ line-height: @_sap_ui_table_CheckBox_SizeCozy;
45
+ bottom: calc(~"(" @_sap_ui_table_ColumnHeaderHeight ~"-" @_sap_ui_table_CheckBox_SizeCozy ~") / 2");
46
+
47
+ .sapUiSizeCozy & {
48
+ bottom: calc(~"(" @_sap_ui_table_ColumnHeaderHeightCozy ~"-" @_sap_ui_table_CheckBox_SizeCozy ~") / 2");
49
+ }
50
+
51
+ .sapUiTableRowHighlights.sapUiTableRowSelectors & {
52
+ padding: 0 calc(~"(" @_sap_ui_table_RowHighlightWidth ~") / 2");
53
+ }
54
+ }
55
+
56
+ &:active {
57
+ background-color: var(--sapList_Active_Background);
58
+ color: var(--sapList_Active_TextColor);
59
+ }
60
+ }
61
+ }