@openui5/sap.ui.table 1.127.1 → 1.129.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 +1 -1
- package/src/sap/ui/table/AnalyticalColumn.js +18 -10
- package/src/sap/ui/table/AnalyticalColumnMenu.js +1 -1
- package/src/sap/ui/table/AnalyticalTable.js +24 -246
- package/src/sap/ui/table/Column.js +33 -16
- package/src/sap/ui/table/ColumnMenu.js +1 -1
- package/src/sap/ui/table/CreationRow.js +1 -1
- package/src/sap/ui/table/Row.js +1 -1
- package/src/sap/ui/table/RowAction.js +1 -1
- package/src/sap/ui/table/RowActionItem.js +1 -1
- package/src/sap/ui/table/RowSettings.js +1 -1
- package/src/sap/ui/table/Table.js +74 -9
- package/src/sap/ui/table/TablePersoController.js +1 -1
- package/src/sap/ui/table/TableRenderer.js +7 -14
- package/src/sap/ui/table/TreeTable.js +1 -1
- package/src/sap/ui/table/extensions/Accessibility.js +1 -1
- package/src/sap/ui/table/extensions/AccessibilityRender.js +1 -1
- package/src/sap/ui/table/extensions/DragAndDrop.js +1 -1
- package/src/sap/ui/table/extensions/ExtensionBase.js +1 -1
- package/src/sap/ui/table/extensions/Keyboard.js +1 -1
- package/src/sap/ui/table/extensions/KeyboardDelegate.js +25 -5
- package/src/sap/ui/table/extensions/Pointer.js +5 -38
- package/src/sap/ui/table/extensions/Scrolling.js +1 -1
- package/src/sap/ui/table/extensions/ScrollingIOS.js +1 -1
- package/src/sap/ui/table/extensions/Synchronization.js +1 -1
- package/src/sap/ui/table/library.js +13 -13
- package/src/sap/ui/table/menus/ColumnHeaderMenuAdapter.js +3 -3
- package/src/sap/ui/table/menus/GroupHeaderContextMenuAdapter.js +332 -0
- package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +1 -1
- package/src/sap/ui/table/messagebundle.properties +40 -3
- package/src/sap/ui/table/messagebundle_ar.properties +23 -0
- package/src/sap/ui/table/messagebundle_bg.properties +23 -0
- package/src/sap/ui/table/messagebundle_ca.properties +23 -0
- package/src/sap/ui/table/messagebundle_cnr.properties +23 -0
- package/src/sap/ui/table/messagebundle_cs.properties +23 -0
- package/src/sap/ui/table/messagebundle_cy.properties +23 -0
- package/src/sap/ui/table/messagebundle_da.properties +24 -1
- package/src/sap/ui/table/messagebundle_de.properties +23 -0
- package/src/sap/ui/table/messagebundle_el.properties +23 -0
- package/src/sap/ui/table/messagebundle_en.properties +23 -0
- package/src/sap/ui/table/messagebundle_en_GB.properties +23 -0
- package/src/sap/ui/table/messagebundle_en_US_saprigi.properties +23 -0
- package/src/sap/ui/table/messagebundle_es.properties +23 -0
- package/src/sap/ui/table/messagebundle_es_MX.properties +23 -0
- package/src/sap/ui/table/messagebundle_et.properties +23 -0
- package/src/sap/ui/table/messagebundle_fi.properties +23 -0
- package/src/sap/ui/table/messagebundle_fr.properties +25 -2
- package/src/sap/ui/table/messagebundle_fr_CA.properties +25 -2
- package/src/sap/ui/table/messagebundle_hi.properties +23 -0
- package/src/sap/ui/table/messagebundle_hr.properties +23 -0
- package/src/sap/ui/table/messagebundle_hu.properties +25 -2
- package/src/sap/ui/table/messagebundle_id.properties +25 -2
- package/src/sap/ui/table/messagebundle_it.properties +23 -0
- package/src/sap/ui/table/messagebundle_iw.properties +23 -0
- package/src/sap/ui/table/messagebundle_ja.properties +23 -0
- package/src/sap/ui/table/messagebundle_kk.properties +49 -26
- package/src/sap/ui/table/messagebundle_ko.properties +23 -0
- package/src/sap/ui/table/messagebundle_lt.properties +23 -0
- package/src/sap/ui/table/messagebundle_lv.properties +23 -0
- package/src/sap/ui/table/messagebundle_mk.properties +23 -0
- package/src/sap/ui/table/messagebundle_ms.properties +23 -0
- package/src/sap/ui/table/messagebundle_nl.properties +23 -0
- package/src/sap/ui/table/messagebundle_no.properties +23 -0
- package/src/sap/ui/table/messagebundle_pl.properties +23 -0
- package/src/sap/ui/table/messagebundle_pt.properties +25 -2
- package/src/sap/ui/table/messagebundle_pt_PT.properties +23 -0
- package/src/sap/ui/table/messagebundle_ro.properties +23 -0
- package/src/sap/ui/table/messagebundle_ru.properties +23 -0
- package/src/sap/ui/table/messagebundle_sh.properties +23 -0
- package/src/sap/ui/table/messagebundle_sk.properties +23 -0
- package/src/sap/ui/table/messagebundle_sl.properties +23 -0
- package/src/sap/ui/table/messagebundle_sr.properties +23 -0
- package/src/sap/ui/table/messagebundle_sv.properties +23 -0
- package/src/sap/ui/table/messagebundle_th.properties +23 -0
- package/src/sap/ui/table/messagebundle_tr.properties +23 -0
- package/src/sap/ui/table/messagebundle_uk.properties +23 -0
- package/src/sap/ui/table/messagebundle_vi.properties +23 -0
- package/src/sap/ui/table/messagebundle_zh_CN.properties +23 -0
- package/src/sap/ui/table/messagebundle_zh_TW.properties +25 -2
- package/src/sap/ui/table/plugins/BindingSelection.js +4 -4
- package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +2 -2
- package/src/sap/ui/table/plugins/ODataV4Selection.js +132 -96
- package/src/sap/ui/table/plugins/PluginBase.js +1 -1
- package/src/sap/ui/table/plugins/SelectionModelSelection.js +3 -3
- package/src/sap/ui/table/plugins/SelectionPlugin.js +1 -1
- package/src/sap/ui/table/plugins/V4Aggregation.js +3 -2
- package/src/sap/ui/table/rowmodes/Auto.js +3 -1
- package/src/sap/ui/table/rowmodes/Fixed.js +1 -1
- package/src/sap/ui/table/rowmodes/Interactive.js +249 -116
- package/src/sap/ui/table/rowmodes/RowMode.js +1 -1
- package/src/sap/ui/table/rowmodes/Variable.js +1 -1
- package/src/sap/ui/table/themes/base/AnalyticalTable.less +0 -20
- package/src/sap/ui/table/themes/base/DragDrop.less +84 -23
- package/src/sap/ui/table/themes/base/Grouping.less +21 -11
- package/src/sap/ui/table/themes/base/Table.less +4 -0
- package/src/sap/ui/table/themes/sap_hcb/base_AnalyticalTable.less +0 -20
- package/src/sap/ui/table/utils/TableUtils.js +44 -4
- package/src/sap/ui/table/utils/_BindingUtils.js +1 -1
- package/src/sap/ui/table/utils/_ColumnUtils.js +3 -32
- package/src/sap/ui/table/utils/_GroupingUtils.js +1 -21
- package/src/sap/ui/table/utils/_HookUtils.js +1 -1
- package/src/sap/ui/table/utils/_MenuUtils.js +2 -2
package/THIRDPARTY.txt
CHANGED
|
@@ -468,7 +468,7 @@ License: Apache-2.0
|
|
|
468
468
|
License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
|
|
469
469
|
Contained in: lib/jsdoc/ui5/plugin.js
|
|
470
470
|
|
|
471
|
-
Component: SAP Theming Base Content, version: 11.
|
|
471
|
+
Component: SAP Theming Base Content, version: 11.18.0
|
|
472
472
|
Copyright: SAP SE or an SAP affiliate company and Theming Base Content contributors
|
|
473
473
|
License: Apache-2.0
|
|
474
474
|
License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openui5/sap.ui.table",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.129.0",
|
|
4
4
|
"description": "OpenUI5 UI Library sap.ui.table",
|
|
5
5
|
"author": "SAP SE (https://www.sap.com)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"url": "https://github.com/SAP/openui5.git"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@openui5/sap.ui.core": "1.
|
|
18
|
-
"@openui5/sap.ui.unified": "1.
|
|
17
|
+
"@openui5/sap.ui.core": "1.129.0",
|
|
18
|
+
"@openui5/sap.ui.unified": "1.129.0"
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<copyright>OpenUI5
|
|
7
7
|
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
8
8
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
|
|
9
|
-
<version>1.
|
|
9
|
+
<version>1.129.0</version>
|
|
10
10
|
|
|
11
11
|
<documentation>Table-like controls, mainly for desktop scenarios.</documentation>
|
|
12
12
|
|
|
@@ -47,7 +47,7 @@ sap.ui.define([
|
|
|
47
47
|
* @extends sap.ui.table.Column
|
|
48
48
|
*
|
|
49
49
|
* @author SAP SE
|
|
50
|
-
* @version 1.
|
|
50
|
+
* @version 1.129.0
|
|
51
51
|
*
|
|
52
52
|
* @constructor
|
|
53
53
|
* @public
|
|
@@ -59,7 +59,9 @@ sap.ui.define([
|
|
|
59
59
|
properties: {
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
|
-
* Defines the primary model property which is used inside the Column. In case of the
|
|
62
|
+
* Defines the primary model property which is used inside the Column. In case of the
|
|
63
|
+
* analytical extension this means the property which is grouped by for dimensions or
|
|
64
|
+
* the property which is summed for measures.
|
|
63
65
|
*/
|
|
64
66
|
leadingProperty: {type: "string", group: "Misc", defaultValue: null},
|
|
65
67
|
|
|
@@ -69,12 +71,15 @@ sap.ui.define([
|
|
|
69
71
|
summed: {type: "boolean", group: "Misc", defaultValue: false},
|
|
70
72
|
|
|
71
73
|
/**
|
|
72
|
-
* Specifies that the dimension referred to by the column shall be included in the
|
|
74
|
+
* Specifies that the dimension referred to by the column shall be included in the
|
|
75
|
+
* granularity of the data result. It allows a finer distinction between a
|
|
76
|
+
* visible/grouped/(included)inResult column.
|
|
73
77
|
*/
|
|
74
78
|
inResult: {type: "boolean", group: "Misc", defaultValue: false},
|
|
75
79
|
|
|
76
80
|
/**
|
|
77
|
-
* Specifies whether the column is displayed within the table even if it is grouped or
|
|
81
|
+
* Specifies whether the column is displayed within the table even if it is grouped or
|
|
82
|
+
* not. A grouped column has the same value for every rows within the group.
|
|
78
83
|
*/
|
|
79
84
|
showIfGrouped: {type: "boolean", group: "Appearance", defaultValue: false},
|
|
80
85
|
|
|
@@ -298,7 +303,7 @@ sap.ui.define([
|
|
|
298
303
|
* - The filter property must be a property of the bound collection however it may differ from the leading property
|
|
299
304
|
* - The analytical column must be a child of an AnalyticalTable
|
|
300
305
|
*
|
|
301
|
-
* @returns {boolean}
|
|
306
|
+
* @returns {boolean} Whether the column can be filtered by the menu
|
|
302
307
|
*/
|
|
303
308
|
AnalyticalColumn.prototype.isFilterableByMenu = function() {
|
|
304
309
|
const sFilterProperty = this.getFilterProperty();
|
|
@@ -314,11 +319,14 @@ sap.ui.define([
|
|
|
314
319
|
// metadata must be evaluated which can only be done when the collection is known and the metadata is loaded
|
|
315
320
|
// this is usually the case when a binding exists.
|
|
316
321
|
if (oBinding) {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
+
/*
|
|
323
|
+
* The OData4SAP specification defines in section 3.3.3.2.2.3 how a filter condition on a measure property has to be used
|
|
324
|
+
* for data selection at runtime: “Conditions on measure properties refer to the aggregated measure value based on the
|
|
325
|
+
* selected dimensions” Although the generic OData providers (BW, SADL) do not support filtering measures, there may be
|
|
326
|
+
* specialized implementations that do support it. Conclusion for a fix therefore is to make sure that the AnalyticalTable
|
|
327
|
+
* solely checks sap:filterable=”false” for providing the filter function. Check for measure is hence removed. For more
|
|
328
|
+
* details, see BCP: 1770355530
|
|
329
|
+
*/
|
|
322
330
|
if (oBinding.getFilterablePropertyNames().indexOf(sFilterProperty) > -1 &&
|
|
323
331
|
oBinding.getProperty(sFilterProperty)) {
|
|
324
332
|
return true;
|
|
@@ -6,41 +6,36 @@
|
|
|
6
6
|
|
|
7
7
|
// Provides control sap.ui.table.AnalyticalTable.
|
|
8
8
|
sap.ui.define([
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
"./AnalyticalColumn",
|
|
10
|
+
"./Column",
|
|
11
|
+
"./Table",
|
|
12
|
+
"./TreeTable",
|
|
13
13
|
"./TableRenderer",
|
|
14
|
-
|
|
14
|
+
"./menus/GroupHeaderContextMenuAdapter",
|
|
15
15
|
"sap/ui/core/Element",
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
'./utils/TableUtils',
|
|
16
|
+
"sap/ui/model/analytics/ODataModelAdapter",
|
|
17
|
+
"./utils/TableUtils",
|
|
19
18
|
"./plugins/BindingSelection",
|
|
20
19
|
"sap/base/Log",
|
|
21
20
|
"sap/ui/thirdparty/jquery",
|
|
22
|
-
"sap/ui/model/controlhelper/TreeBindingProxy"
|
|
23
|
-
"sap/ui/core/library"
|
|
21
|
+
"sap/ui/model/controlhelper/TreeBindingProxy"
|
|
24
22
|
], function(
|
|
25
23
|
AnalyticalColumn,
|
|
26
24
|
Column,
|
|
27
25
|
Table,
|
|
28
26
|
TreeTable,
|
|
29
27
|
TableRenderer,
|
|
30
|
-
|
|
28
|
+
GroupHeaderContextMenuAdapter,
|
|
31
29
|
Element,
|
|
32
30
|
ODataModelAdapter,
|
|
33
|
-
MenuItem,
|
|
34
31
|
TableUtils,
|
|
35
32
|
BindingSelectionPlugin,
|
|
36
33
|
Log,
|
|
37
34
|
jQuery,
|
|
38
|
-
TreeBindingProxy
|
|
39
|
-
CoreLibrary
|
|
35
|
+
TreeBindingProxy
|
|
40
36
|
) {
|
|
41
37
|
"use strict";
|
|
42
38
|
|
|
43
|
-
const GroupEventType = library.GroupEventType;
|
|
44
39
|
const _private = TableUtils.createWeakMapFacade();
|
|
45
40
|
|
|
46
41
|
/**
|
|
@@ -55,7 +50,7 @@ sap.ui.define([
|
|
|
55
50
|
* @see https://github.com/SAP/odata-vocabularies/blob/main/docs/v2-annotations.md
|
|
56
51
|
*
|
|
57
52
|
* @extends sap.ui.table.Table
|
|
58
|
-
* @version 1.
|
|
53
|
+
* @version 1.129.0
|
|
59
54
|
*
|
|
60
55
|
* @constructor
|
|
61
56
|
* @public
|
|
@@ -160,7 +155,13 @@ sap.ui.define([
|
|
|
160
155
|
* If dirty the content of the Table will be overlayed.
|
|
161
156
|
* @deprecated As of version 1.21.2, replaced by {@link sap.ui.table.Table#setShowOverlay}
|
|
162
157
|
*/
|
|
163
|
-
dirty: {type: "boolean", group: "Appearance", defaultValue: null, deprecated: true}
|
|
158
|
+
dirty: {type: "boolean", group: "Appearance", defaultValue: null, deprecated: true},
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* If set to <code>true</code>, the full set of <code>MenuItem</code> instances shown in to the group header menu. The value
|
|
162
|
+
* <code>false</code> means that only a reduced set of group header menu items is shown.
|
|
163
|
+
*/
|
|
164
|
+
extendedGroupHeaderMenu: {type: "boolean", group: "Behavior", defaultValue: true, visibility: "hidden"}
|
|
164
165
|
},
|
|
165
166
|
events: {
|
|
166
167
|
/**
|
|
@@ -222,7 +223,7 @@ sap.ui.define([
|
|
|
222
223
|
});
|
|
223
224
|
this._aGroupedColumns = [];
|
|
224
225
|
this._bSuspendUpdateAnalyticalInfo = false;
|
|
225
|
-
this.
|
|
226
|
+
this._oGroupHeaderMenuAdapter = new GroupHeaderContextMenuAdapter(this);
|
|
226
227
|
|
|
227
228
|
TableUtils.Grouping.setToDefaultGroupMode(this);
|
|
228
229
|
TableUtils.Hook.register(this, TableUtils.Hook.Keys.Row.UpdateState, updateRowState, this);
|
|
@@ -235,13 +236,14 @@ sap.ui.define([
|
|
|
235
236
|
|
|
236
237
|
AnalyticalTable.prototype.exit = function() {
|
|
237
238
|
Table.prototype.exit.apply(this, arguments);
|
|
238
|
-
this.
|
|
239
|
+
this._oGroupHeaderMenuAdapter.destroy();
|
|
239
240
|
};
|
|
240
241
|
|
|
241
242
|
AnalyticalTable.prototype._adaptLocalization = function(bRtlChanged, bLangChanged) {
|
|
242
243
|
return Table.prototype._adaptLocalization.apply(this, arguments).then(function() {
|
|
243
244
|
if (bLangChanged) {
|
|
244
|
-
this.
|
|
245
|
+
this._oGroupHeaderMenuAdapter.destroy();
|
|
246
|
+
this._oGroupHeaderMenuAdapter = new GroupHeaderContextMenuAdapter(this);
|
|
245
247
|
}
|
|
246
248
|
}.bind(this));
|
|
247
249
|
};
|
|
@@ -519,238 +521,14 @@ sap.ui.define([
|
|
|
519
521
|
const oRow = oCellInfo.isOfType(TableUtils.CELLTYPE.ANYCONTENTCELL) ? this.getRows()[oCellInfo.rowIndex] : null;
|
|
520
522
|
|
|
521
523
|
if (!oRow || !oRow.isGroupHeader()) {
|
|
522
|
-
this.
|
|
524
|
+
this._oGroupHeaderMenuAdapter.removeItemsFrom(oMenu);
|
|
523
525
|
return;
|
|
524
526
|
}
|
|
525
527
|
|
|
526
528
|
this._iGroupedLevel = oRow.getLevel();
|
|
527
|
-
this.
|
|
529
|
+
this._oGroupHeaderMenuAdapter.addItemsTo(oMenu, this.getProperty("extendedGroupHeaderMenu"));
|
|
528
530
|
}
|
|
529
531
|
|
|
530
|
-
AnalyticalTable.prototype._addGroupHeaderMenuItems = function(oMenu) {
|
|
531
|
-
const that = this;
|
|
532
|
-
|
|
533
|
-
function getGroupColumnInfo() {
|
|
534
|
-
const iIndex = that._iGroupedLevel - 1;
|
|
535
|
-
|
|
536
|
-
if (that._aGroupedColumns[iIndex]) {
|
|
537
|
-
const oGroupedColumn = that.getColumns().filter(function(oColumn) {
|
|
538
|
-
return that._aGroupedColumns[iIndex] === oColumn.getId();
|
|
539
|
-
})[0];
|
|
540
|
-
|
|
541
|
-
return {
|
|
542
|
-
column: oGroupedColumn,
|
|
543
|
-
index: iIndex
|
|
544
|
-
};
|
|
545
|
-
} else {
|
|
546
|
-
return undefined;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
if (!this._mGroupHeaderMenuItems) {
|
|
551
|
-
this._mGroupHeaderMenuItems = {};
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
if (!this._mGroupHeaderMenuItems["visibility"]) {
|
|
555
|
-
this._mGroupHeaderMenuItems["visibility"] = new MenuItem({
|
|
556
|
-
text: TableUtils.getResourceText("TBL_SHOW_COLUMN"),
|
|
557
|
-
select: function() {
|
|
558
|
-
const oGroupColumnInfo = getGroupColumnInfo();
|
|
559
|
-
|
|
560
|
-
if (oGroupColumnInfo) {
|
|
561
|
-
const oColumn = oGroupColumnInfo.column;
|
|
562
|
-
const bShowIfGrouped = oColumn.getShowIfGrouped();
|
|
563
|
-
oColumn.setShowIfGrouped(!bShowIfGrouped);
|
|
564
|
-
|
|
565
|
-
that.fireGroup({column: oColumn, groupedColumns: oColumn.getParent()._aGroupedColumns, type: (!bShowIfGrouped ? GroupEventType.showGroupedColumn : GroupEventType.hideGroupedColumn)});
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
});
|
|
569
|
-
}
|
|
570
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["visibility"]);
|
|
571
|
-
|
|
572
|
-
if (!this._mGroupHeaderMenuItems["ungroup"]) {
|
|
573
|
-
this._mGroupHeaderMenuItems["ungroup"] = new MenuItem({
|
|
574
|
-
text: TableUtils.getResourceText("TBL_UNGROUP"),
|
|
575
|
-
select: function() {
|
|
576
|
-
const oGroupColumnInfo = getGroupColumnInfo();
|
|
577
|
-
|
|
578
|
-
if (oGroupColumnInfo && oGroupColumnInfo.column) {
|
|
579
|
-
const oUngroupedColumn = oGroupColumnInfo.column;
|
|
580
|
-
|
|
581
|
-
oUngroupedColumn.setGrouped(false);
|
|
582
|
-
that.fireGroup({column: oUngroupedColumn, groupedColumns: that._aGroupedColumns, type: GroupEventType.ungroup});
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
});
|
|
586
|
-
}
|
|
587
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["ungroup"]);
|
|
588
|
-
|
|
589
|
-
if (!this._mGroupHeaderMenuItems["ungroupall"]) {
|
|
590
|
-
this._mGroupHeaderMenuItems["ungroupall"] = new MenuItem({
|
|
591
|
-
text: TableUtils.getResourceText("TBL_UNGROUP_ALL"),
|
|
592
|
-
select: function() {
|
|
593
|
-
const aColumns = that.getColumns();
|
|
594
|
-
|
|
595
|
-
that.suspendUpdateAnalyticalInfo();
|
|
596
|
-
|
|
597
|
-
for (let i = 0; i < aColumns.length; i++) {
|
|
598
|
-
aColumns[i].setGrouped(false);
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
that.resumeUpdateAnalyticalInfo();
|
|
602
|
-
that.fireGroup({column: undefined, groupedColumns: [], type: GroupEventType.ungroupAll});
|
|
603
|
-
}
|
|
604
|
-
});
|
|
605
|
-
}
|
|
606
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["ungroupall"]);
|
|
607
|
-
|
|
608
|
-
if (!this._mGroupHeaderMenuItems["moveup"]) {
|
|
609
|
-
this._mGroupHeaderMenuItems["moveup"] = new MenuItem({
|
|
610
|
-
text: TableUtils.getResourceText("TBL_MOVE_UP"),
|
|
611
|
-
select: function() {
|
|
612
|
-
const oGroupColumnInfo = getGroupColumnInfo();
|
|
613
|
-
|
|
614
|
-
if (oGroupColumnInfo) {
|
|
615
|
-
const oColumn = oGroupColumnInfo.column;
|
|
616
|
-
const iIndex = that._aGroupedColumns.indexOf(oColumn.getId());
|
|
617
|
-
if (iIndex > 0) {
|
|
618
|
-
that._aGroupedColumns[iIndex] = that._aGroupedColumns.splice(iIndex - 1, 1, that._aGroupedColumns[iIndex])[0];
|
|
619
|
-
that.updateAnalyticalInfo();
|
|
620
|
-
that.fireGroup({column: oColumn, groupedColumns: oColumn.getParent()._aGroupedColumns, type: GroupEventType.moveUp});
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
},
|
|
624
|
-
icon: "sap-icon://arrow-top"
|
|
625
|
-
});
|
|
626
|
-
}
|
|
627
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["moveup"]);
|
|
628
|
-
|
|
629
|
-
if (!this._mGroupHeaderMenuItems["movedown"]) {
|
|
630
|
-
this._mGroupHeaderMenuItems["movedown"] = new MenuItem({
|
|
631
|
-
text: TableUtils.getResourceText("TBL_MOVE_DOWN"),
|
|
632
|
-
select: function() {
|
|
633
|
-
const oGroupColumnInfo = getGroupColumnInfo();
|
|
634
|
-
|
|
635
|
-
if (oGroupColumnInfo) {
|
|
636
|
-
const oColumn = oGroupColumnInfo.column;
|
|
637
|
-
const iIndex = that._aGroupedColumns.indexOf(oColumn.getId());
|
|
638
|
-
if (iIndex < that._aGroupedColumns.length) {
|
|
639
|
-
that._aGroupedColumns[iIndex] = that._aGroupedColumns.splice(iIndex + 1, 1, that._aGroupedColumns[iIndex])[0];
|
|
640
|
-
that.updateAnalyticalInfo();
|
|
641
|
-
that.fireGroup({column: oColumn, groupedColumns: oColumn.getParent()._aGroupedColumns, type: GroupEventType.moveDown});
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
},
|
|
645
|
-
icon: "sap-icon://arrow-bottom"
|
|
646
|
-
});
|
|
647
|
-
}
|
|
648
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["movedown"]);
|
|
649
|
-
|
|
650
|
-
if (!this._mGroupHeaderMenuItems["sortasc"]) {
|
|
651
|
-
this._mGroupHeaderMenuItems["sortasc"] = new MenuItem({
|
|
652
|
-
text: TableUtils.getResourceText("TBL_SORT_ASC"),
|
|
653
|
-
select: function() {
|
|
654
|
-
getGroupColumnInfo()?.column._sort(CoreLibrary.SortOrder.Ascending);
|
|
655
|
-
},
|
|
656
|
-
icon: "sap-icon://up"
|
|
657
|
-
});
|
|
658
|
-
}
|
|
659
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["sortasc"]);
|
|
660
|
-
|
|
661
|
-
if (!this._mGroupHeaderMenuItems["sortdesc"]) {
|
|
662
|
-
this._mGroupHeaderMenuItems["sortdesc"] = new MenuItem({
|
|
663
|
-
text: TableUtils.getResourceText("TBL_SORT_DESC"),
|
|
664
|
-
select: function() {
|
|
665
|
-
getGroupColumnInfo()?.column._sort(CoreLibrary.SortOrder.Descending);
|
|
666
|
-
},
|
|
667
|
-
icon: "sap-icon://down"
|
|
668
|
-
});
|
|
669
|
-
}
|
|
670
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["sortdesc"]);
|
|
671
|
-
|
|
672
|
-
if (!this._mGroupHeaderMenuItems["collapse"]) {
|
|
673
|
-
this._mGroupHeaderMenuItems["collapse"] = new MenuItem({
|
|
674
|
-
text: TableUtils.getResourceText("TBL_COLLAPSE_LEVEL"),
|
|
675
|
-
select: function() {
|
|
676
|
-
// Why -1? Because the "Collapse Level" Menu Entry should collapse TO the given level - 1
|
|
677
|
-
// So collapsing level 1 means actually all nodes up TO level 0 will be collapsed.
|
|
678
|
-
// Potential negative values are handled by the binding.
|
|
679
|
-
that.getBinding().collapseToLevel(that._iGroupedLevel - 1);
|
|
680
|
-
that.setFirstVisibleRow(0); //scroll to top after collapsing (so no rows vanish)
|
|
681
|
-
that._getSelectionPlugin().clearSelection();
|
|
682
|
-
}
|
|
683
|
-
});
|
|
684
|
-
}
|
|
685
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["collapse"]);
|
|
686
|
-
|
|
687
|
-
if (!this._mGroupHeaderMenuItems["collapseall"]) {
|
|
688
|
-
this._mGroupHeaderMenuItems["collapseall"] = new MenuItem({
|
|
689
|
-
text: TableUtils.getResourceText("TBL_COLLAPSE_ALL"),
|
|
690
|
-
select: function() {
|
|
691
|
-
that.getBinding().collapseToLevel(0);
|
|
692
|
-
that.setFirstVisibleRow(0); //scroll to top after collapsing (so no rows vanish)
|
|
693
|
-
that._getSelectionPlugin().clearSelection();
|
|
694
|
-
}
|
|
695
|
-
});
|
|
696
|
-
}
|
|
697
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["collapseall"]);
|
|
698
|
-
|
|
699
|
-
if (!this._mGroupHeaderMenuItems["expand"]) {
|
|
700
|
-
this._mGroupHeaderMenuItems["expand"] = new MenuItem({
|
|
701
|
-
text: TableUtils.getResourceText("TBL_EXPAND_LEVEL"),
|
|
702
|
-
select: function() {
|
|
703
|
-
that.getBinding().expandToLevel(that._iGroupedLevel);
|
|
704
|
-
that.setFirstVisibleRow(0);
|
|
705
|
-
that._getSelectionPlugin().clearSelection();
|
|
706
|
-
}
|
|
707
|
-
});
|
|
708
|
-
}
|
|
709
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["expand"]);
|
|
710
|
-
|
|
711
|
-
if (!this._mGroupHeaderMenuItems["expandall"]) {
|
|
712
|
-
this._mGroupHeaderMenuItems["expandall"] = new MenuItem({
|
|
713
|
-
text: TableUtils.getResourceText("TBL_EXPAND_ALL"),
|
|
714
|
-
select: function() {
|
|
715
|
-
that.expandAll();
|
|
716
|
-
}
|
|
717
|
-
});
|
|
718
|
-
}
|
|
719
|
-
oMenu.addItem(this._mGroupHeaderMenuItems["expandall"]);
|
|
720
|
-
|
|
721
|
-
const oGroupColumnInfo = getGroupColumnInfo();
|
|
722
|
-
if (oGroupColumnInfo) {
|
|
723
|
-
const oColumn = oGroupColumnInfo.column;
|
|
724
|
-
if (oColumn.getShowIfGrouped()) {
|
|
725
|
-
this._mGroupHeaderMenuItems["visibility"].setText(TableUtils.getResourceText("TBL_HIDE_COLUMN"));
|
|
726
|
-
} else {
|
|
727
|
-
this._mGroupHeaderMenuItems["visibility"].setText(TableUtils.getResourceText("TBL_SHOW_COLUMN"));
|
|
728
|
-
}
|
|
729
|
-
this._mGroupHeaderMenuItems["moveup"].setEnabled(oGroupColumnInfo.index > 0);
|
|
730
|
-
this._mGroupHeaderMenuItems["movedown"].setEnabled(oGroupColumnInfo.index < this._aGroupedColumns.length - 1);
|
|
731
|
-
} else {
|
|
732
|
-
this._mGroupHeaderMenuItems["moveup"].setEnabled(true);
|
|
733
|
-
this._mGroupHeaderMenuItems["movedown"].setEnabled(true);
|
|
734
|
-
}
|
|
735
|
-
};
|
|
736
|
-
|
|
737
|
-
AnalyticalTable.prototype._removeGroupHeaderMenuItems = function(oMenu) {
|
|
738
|
-
if (!this._mGroupHeaderMenuItems) {
|
|
739
|
-
return;
|
|
740
|
-
}
|
|
741
|
-
|
|
742
|
-
for (const sItemKey in this._mGroupHeaderMenuItems) {
|
|
743
|
-
oMenu.removeItem(this._mGroupHeaderMenuItems[sItemKey]);
|
|
744
|
-
}
|
|
745
|
-
};
|
|
746
|
-
|
|
747
|
-
AnalyticalTable.prototype._cleanupGroupHeaderMenuItems = function() {
|
|
748
|
-
for (const sItemKey in this._mGroupHeaderMenuItems) {
|
|
749
|
-
this._mGroupHeaderMenuItems[sItemKey].destroy();
|
|
750
|
-
}
|
|
751
|
-
this._mGroupHeaderMenuItems = null;
|
|
752
|
-
};
|
|
753
|
-
|
|
754
532
|
/**
|
|
755
533
|
* @inheritDoc
|
|
756
534
|
*/
|
|
@@ -63,7 +63,7 @@ sap.ui.define([
|
|
|
63
63
|
* @class
|
|
64
64
|
* The column allows you to define column specific properties that will be applied when rendering the table.
|
|
65
65
|
* @extends sap.ui.core.Element
|
|
66
|
-
* @version 1.
|
|
66
|
+
* @version 1.129.0
|
|
67
67
|
*
|
|
68
68
|
* @constructor
|
|
69
69
|
* @public
|
|
@@ -142,7 +142,7 @@ sap.ui.define([
|
|
|
142
142
|
* For example, if the first name and last name are displayed in the same column, only one of the two can be defined as
|
|
143
143
|
* <code>sortProperty</code>.
|
|
144
144
|
*
|
|
145
|
-
* A column menu entry for sorting can only be generated if the <code>sortProperty</code>
|
|
145
|
+
* A column menu entry for sorting can only be generated if the <code>headerMenu</code> association and <code>sortProperty</code> are set.
|
|
146
146
|
*/
|
|
147
147
|
sortProperty: {type: "string", group: "Behavior", defaultValue: null},
|
|
148
148
|
|
|
@@ -159,8 +159,8 @@ sap.ui.define([
|
|
|
159
159
|
* For example, if the first name and last name are displayed in the same column, only one of the two can be defined as
|
|
160
160
|
* <code>filterProperty</code>.
|
|
161
161
|
*
|
|
162
|
-
* A column menu entry for filtering can only be generated if the <code>
|
|
163
|
-
* default menu entry is a text input field.
|
|
162
|
+
* A column menu entry for filtering can only be generated if the <code>headerMenu</code> association and <code>filterProperty</code> are
|
|
163
|
+
* set. The default menu entry is a text input field.
|
|
164
164
|
*/
|
|
165
165
|
filterProperty: {type: "string", group: "Behavior", defaultValue: null},
|
|
166
166
|
|
|
@@ -235,13 +235,15 @@ sap.ui.define([
|
|
|
235
235
|
name: {type: "string", group: "Appearance", defaultValue: null},
|
|
236
236
|
|
|
237
237
|
/**
|
|
238
|
-
* Defines if the filter menu entry is displayed
|
|
238
|
+
* Defines if the filter menu entry is displayed.
|
|
239
|
+
* <b>Note</b>: It only takes effect if the <code>headerMenu</code> association is set.
|
|
239
240
|
* @since 1.13.0
|
|
240
241
|
*/
|
|
241
242
|
showFilterMenuEntry: {type: "boolean", group: "Appearance", defaultValue: true},
|
|
242
243
|
|
|
243
244
|
/**
|
|
244
|
-
* Defines if the sort menu entries are displayed
|
|
245
|
+
* Defines if the sort menu entries are displayed.
|
|
246
|
+
* <b>Note</b>: It only takes effect if the <code>headerMenu</code> association is set.
|
|
245
247
|
* @since 1.13.0
|
|
246
248
|
*/
|
|
247
249
|
showSortMenuEntry: {type: "boolean", group: "Appearance", defaultValue: true},
|
|
@@ -290,15 +292,18 @@ sap.ui.define([
|
|
|
290
292
|
|
|
291
293
|
/**
|
|
292
294
|
* Template (cell renderer) of this column.
|
|
295
|
+
*
|
|
293
296
|
* A template is decoupled from the column. Each time the template's properties or aggregations have been changed, the template has to be
|
|
294
297
|
* applied again via <code>setTemplate</code> for the changes to take effect.
|
|
295
|
-
*
|
|
296
|
-
* template depends on the libraries loaded.
|
|
298
|
+
*
|
|
297
299
|
* If there is no template, the column will not be rendered in the table.
|
|
300
|
+
*
|
|
298
301
|
* The set of supported controls is limited. See section "{@link topic:148892ff9aea4a18b912829791e38f3e Tables: Which One Should I
|
|
299
302
|
* Choose?}" in the documentation for more details. While it is technically possible to also use other controls, doing so might lead to
|
|
300
303
|
* issues with regards to scrolling, alignment, condensed mode, screen reader support, and keyboard support.
|
|
301
304
|
*
|
|
305
|
+
* If a string is defined, this string is interpreted as the binding path. Internally, a default text control will be created with its
|
|
306
|
+
* <code>text</code> property bound to the value of the string. The default template depends on the libraries loaded.
|
|
302
307
|
* <b>Note:</b> The <code>altType</code> string is deprecated as of version 1.118. Use a <code>Control</code> instead.
|
|
303
308
|
*/
|
|
304
309
|
template: {type: "sap.ui.core.Control", altTypes: ["string"], multiple: false},
|
|
@@ -594,7 +599,7 @@ sap.ui.define([
|
|
|
594
599
|
* - filterProperty must be defined
|
|
595
600
|
* - showFilterMenuEntry must be true (which is the default)
|
|
596
601
|
*
|
|
597
|
-
* @returns {boolean}
|
|
602
|
+
* @returns {boolean} Whether the <code>Column</code> can be filterd via menu
|
|
598
603
|
*/
|
|
599
604
|
Column.prototype.isFilterableByMenu = function() {
|
|
600
605
|
return !!(this.getFilterProperty() && this.getShowFilterMenuEntry());
|
|
@@ -608,12 +613,13 @@ sap.ui.define([
|
|
|
608
613
|
* - sortProperty must be defined
|
|
609
614
|
* - showSortMenuEntry must be true (which is the default)
|
|
610
615
|
*
|
|
611
|
-
* @returns {boolean}
|
|
616
|
+
* @returns {boolean} Whether the <code>Column</code> can be sorted via menu
|
|
612
617
|
*/
|
|
613
618
|
Column.prototype.isSortableByMenu = function() {
|
|
614
619
|
return !!(this.getSortProperty() && this.getShowSortMenuEntry());
|
|
615
620
|
};
|
|
616
621
|
|
|
622
|
+
// eslint-disable-next-line valid-jsdoc
|
|
617
623
|
/**
|
|
618
624
|
* This function checks whether a grouping column menu item will be created. Although it evaluates some column
|
|
619
625
|
* properties, it does not check the metadata. Since a property of the table must be checked, this function will
|
|
@@ -676,11 +682,10 @@ sap.ui.define([
|
|
|
676
682
|
|
|
677
683
|
Column.prototype._isHeaderMenuOpen = function() {
|
|
678
684
|
const oHeaderMenu = this.getHeaderMenuInstance();
|
|
679
|
-
|
|
680
|
-
return oHeaderMenu.isOpen();
|
|
681
|
-
}
|
|
685
|
+
return oHeaderMenu?.isOpen() || false;
|
|
682
686
|
};
|
|
683
687
|
|
|
688
|
+
// eslint-disable-next-line valid-jsdoc
|
|
684
689
|
/**
|
|
685
690
|
* @deprecated As of version 1.118.
|
|
686
691
|
* @private
|
|
@@ -706,6 +711,7 @@ sap.ui.define([
|
|
|
706
711
|
this.sort(this.getSorted() && this.getSortOrder() === SortOrder.Ascending);
|
|
707
712
|
};
|
|
708
713
|
|
|
714
|
+
// eslint-disable-next-line valid-jsdoc
|
|
709
715
|
/**
|
|
710
716
|
* Sorts the current column ascending or descending.
|
|
711
717
|
*
|
|
@@ -1000,8 +1006,8 @@ sap.ui.define([
|
|
|
1000
1006
|
* @public
|
|
1001
1007
|
*
|
|
1002
1008
|
* @example <caption>Class name of a type.</caption>
|
|
1003
|
-
* // The usage of string-based type definitions without explicitly loading these types (<code>sap.ui.require</code>) in the controller has been
|
|
1004
|
-
* // Please ensure that the types are requested correctly before setting this property.
|
|
1009
|
+
* // The usage of string-based type definitions without explicitly loading these types (<code>sap.ui.require</code>) in the controller has been
|
|
1010
|
+
* // deprecated and might no longer work in future releases. Please ensure that the types are requested correctly before setting this property.
|
|
1005
1011
|
* oColumn.setFilterType("sap.ui.model.type.Date");
|
|
1006
1012
|
*
|
|
1007
1013
|
* @example <caption>Module path of a type.</caption>
|
|
@@ -1071,6 +1077,7 @@ sap.ui.define([
|
|
|
1071
1077
|
/**
|
|
1072
1078
|
* A hook getting called by the DragInfo to determine whether the column allows dragging.
|
|
1073
1079
|
* @param {sap.ui.core.dnd.IDragInfo} oDragInfo drag information
|
|
1080
|
+
* @returns {boolean} Whether dragging is allowed
|
|
1074
1081
|
* @private
|
|
1075
1082
|
*/
|
|
1076
1083
|
Column.prototype.isDragAllowed = function(oDragInfo) {
|
|
@@ -1128,6 +1135,11 @@ sap.ui.define([
|
|
|
1128
1135
|
|
|
1129
1136
|
if (oTemplate) {
|
|
1130
1137
|
oClone = oTemplate.clone();
|
|
1138
|
+
|
|
1139
|
+
if (!oClone.getFieldHelpDisplay()) {
|
|
1140
|
+
oClone.setFieldHelpDisplay(this);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1131
1143
|
this._mTemplateClones[sTemplateType].push(oClone);
|
|
1132
1144
|
}
|
|
1133
1145
|
}
|
|
@@ -1320,6 +1332,11 @@ sap.ui.define([
|
|
|
1320
1332
|
TableUtils.Column.autoResizeColumn(this);
|
|
1321
1333
|
};
|
|
1322
1334
|
|
|
1323
|
-
|
|
1335
|
+
Column.prototype.getFieldHelpInfo = function() {
|
|
1336
|
+
return {
|
|
1337
|
+
label: TableUtils.Column.getHeaderText(this)
|
|
1338
|
+
};
|
|
1339
|
+
};
|
|
1324
1340
|
|
|
1341
|
+
return Column;
|
|
1325
1342
|
});
|
package/src/sap/ui/table/Row.js
CHANGED
|
@@ -35,7 +35,7 @@ sap.ui.define([
|
|
|
35
35
|
* If more action items are available as the available space allows to display an overflow mechanism is provided.
|
|
36
36
|
* This control must only be used in the context of the <code>sap.ui.table.Table</code> control to define row actions.
|
|
37
37
|
* @extends sap.ui.core.Control
|
|
38
|
-
* @version 1.
|
|
38
|
+
* @version 1.129.0
|
|
39
39
|
*
|
|
40
40
|
* @constructor
|
|
41
41
|
* @public
|
|
@@ -27,7 +27,7 @@ sap.ui.define([
|
|
|
27
27
|
* The <code>RowSettings</code> control allows you to configure a row.
|
|
28
28
|
* You can only use this control in the context of the <code>sap.ui.table.Table</code> control to define row settings.
|
|
29
29
|
* @extends sap.ui.core.Element
|
|
30
|
-
* @version 1.
|
|
30
|
+
* @version 1.129.0
|
|
31
31
|
*
|
|
32
32
|
* @constructor
|
|
33
33
|
* @public
|