@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.
- package/THIRDPARTY.txt +1 -1
- package/package.json +3 -3
- package/src/sap/ui/table/.library +2 -2
- package/src/sap/ui/table/AnalyticalColumn.js +2 -2
- package/src/sap/ui/table/AnalyticalColumnMenu.js +2 -2
- package/src/sap/ui/table/AnalyticalTable.js +2 -2
- package/src/sap/ui/table/Column.js +2 -2
- package/src/sap/ui/table/ColumnMenu.js +2 -2
- package/src/sap/ui/table/CreationRow.js +2 -2
- package/src/sap/ui/table/CreationRowRenderer.js +2 -2
- package/src/sap/ui/table/HeaderSelector.js +90 -0
- package/src/sap/ui/table/HeaderSelectorRenderer.js +88 -0
- package/src/sap/ui/table/Row.js +2 -2
- package/src/sap/ui/table/RowAction.js +2 -2
- package/src/sap/ui/table/RowActionItem.js +2 -2
- package/src/sap/ui/table/RowActionRenderer.js +1 -1
- package/src/sap/ui/table/RowSettings.js +2 -2
- package/src/sap/ui/table/Table.js +37 -60
- package/src/sap/ui/table/TablePersoController.js +2 -2
- package/src/sap/ui/table/TableRenderer.js +1624 -718
- package/src/sap/ui/table/TreeTable.js +2 -2
- package/src/sap/ui/table/designtime/AnalyticalTable.designtime.js +5 -1
- package/src/sap/ui/table/designtime/Table.designtime.js +5 -1
- package/src/sap/ui/table/designtime/library.designtime.js +1 -1
- package/src/sap/ui/table/designtime/messagebundle.properties +6 -0
- package/src/sap/ui/table/extensions/Accessibility.js +28 -53
- package/src/sap/ui/table/extensions/AccessibilityRender.js +3 -4
- package/src/sap/ui/table/extensions/DragAndDrop.js +2 -2
- package/src/sap/ui/table/extensions/ExtensionBase.js +2 -2
- package/src/sap/ui/table/extensions/Keyboard.js +5 -31
- package/src/sap/ui/table/extensions/KeyboardDelegate.js +2 -2
- package/src/sap/ui/table/extensions/Pointer.js +2 -2
- package/src/sap/ui/table/extensions/Scrolling.js +2 -10
- package/src/sap/ui/table/extensions/ScrollingIOS.js +2 -2
- package/src/sap/ui/table/extensions/Synchronization.js +16 -18
- package/src/sap/ui/table/library.js +11 -11
- package/src/sap/ui/table/library.support.js +1 -1
- package/src/sap/ui/table/menus/AnalyticalTableContextMenu.js +2 -2
- package/src/sap/ui/table/menus/ColumnHeaderMenuAdapter.js +2 -2
- package/src/sap/ui/table/menus/ContextMenu.js +2 -2
- package/src/sap/ui/table/menus/LegacyColumnMenuAdapter.js +1 -1
- package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +2 -2
- package/src/sap/ui/table/plugins/BindingSelection.js +27 -13
- package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +63 -52
- package/src/sap/ui/table/plugins/ODataV4Aggregation.js +2 -2
- package/src/sap/ui/table/plugins/ODataV4Hierarchy.js +2 -2
- package/src/sap/ui/table/plugins/ODataV4MultiLevel.js +2 -2
- package/src/sap/ui/table/plugins/ODataV4MultiSelection.js +78 -71
- package/src/sap/ui/table/plugins/ODataV4Selection.js +2 -2
- package/src/sap/ui/table/plugins/ODataV4SingleSelection.js +2 -2
- package/src/sap/ui/table/plugins/PluginBase.js +2 -2
- package/src/sap/ui/table/plugins/SelectionModelSelection.js +26 -13
- package/src/sap/ui/table/plugins/SelectionPlugin.js +16 -14
- package/src/sap/ui/table/rowmodes/Auto.js +5 -13
- package/src/sap/ui/table/rowmodes/Fixed.js +3 -4
- package/src/sap/ui/table/rowmodes/Interactive.js +21 -27
- package/src/sap/ui/table/rowmodes/RowMode.js +20 -88
- package/src/sap/ui/table/rowmodes/Type.js +1 -1
- package/src/sap/ui/table/rowmodes/Variable.js +2 -2
- package/src/sap/ui/table/rules/Accessibility.support.js +1 -1
- package/src/sap/ui/table/rules/Binding.support.js +1 -1
- package/src/sap/ui/table/rules/ColumnTemplate.support.js +1 -1
- package/src/sap/ui/table/rules/Plugins.support.js +1 -1
- package/src/sap/ui/table/rules/Rows.support.js +1 -1
- package/src/sap/ui/table/rules/TableHelper.support.js +1 -1
- package/src/sap/ui/table/themes/base/Cell.less +26 -16
- package/src/sap/ui/table/themes/base/CheckBox.less +51 -0
- package/src/sap/ui/table/themes/base/HeaderSelector.less +61 -0
- package/src/sap/ui/table/themes/base/RowSelection.less +9 -138
- package/src/sap/ui/table/themes/base/library.source.less +3 -1
- package/src/sap/ui/table/themes/sap_hcb/base_Cell.less +1 -1
- package/src/sap/ui/table/themes/sap_hcb/base_RowSelection.less +1 -1
- package/src/sap/ui/table/themes/sap_hcb/library.source.less +1 -1
- package/src/sap/ui/table/utils/TableUtils.js +2 -2
- package/src/sap/ui/table/utils/_ColumnUtils.js +2 -2
- package/src/sap/ui/table/utils/_GroupingUtils.js +2 -2
- package/src/sap/ui/table/utils/_HookUtils.js +2 -2
- package/src/sap/ui/table/utils/_MenuUtils.js +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright
|
|
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.
|
|
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)
|
|
102
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
//
|
|
261
|
-
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
26
|
+
* @version 1.144.0
|
|
27
27
|
*
|
|
28
28
|
* @constructor
|
|
29
29
|
* @private
|
|
@@ -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
|
|
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
|
+
}
|