@openui5/sap.ui.table 1.138.0 → 1.139.1
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/README.md +1 -1
- package/REUSE.toml +8 -1
- package/THIRDPARTY.txt +73 -67
- package/package.json +4 -4
- package/src/sap/ui/table/.library +1 -1
- package/src/sap/ui/table/AnalyticalColumn.js +1 -1
- package/src/sap/ui/table/AnalyticalColumnMenu.js +1 -1
- package/src/sap/ui/table/AnalyticalTable.js +5 -9
- package/src/sap/ui/table/Column.js +1 -1
- 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 +5 -4
- package/src/sap/ui/table/TablePersoController.js +1 -1
- package/src/sap/ui/table/TableRenderer.js +2 -8
- package/src/sap/ui/table/TreeTable.js +2 -2
- package/src/sap/ui/table/extensions/Accessibility.js +39 -50
- package/src/sap/ui/table/extensions/AccessibilityRender.js +2 -2
- package/src/sap/ui/table/extensions/DragAndDrop.js +2 -2
- package/src/sap/ui/table/extensions/ExtensionBase.js +3 -33
- package/src/sap/ui/table/extensions/Keyboard.js +3 -3
- package/src/sap/ui/table/extensions/KeyboardDelegate.js +13 -26
- package/src/sap/ui/table/extensions/Pointer.js +2 -3
- package/src/sap/ui/table/extensions/Scrolling.js +2 -2
- package/src/sap/ui/table/extensions/ScrollingIOS.js +1 -1
- package/src/sap/ui/table/extensions/Synchronization.js +2 -2
- package/src/sap/ui/table/i18n/interaction.xml +4 -4
- package/src/sap/ui/table/i18n/interaction_ar.xml +22 -19
- package/src/sap/ui/table/i18n/interaction_bg.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_ca.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_cnr.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_cs.xml +9 -6
- package/src/sap/ui/table/i18n/interaction_cy.xml +8 -5
- package/src/sap/ui/table/i18n/interaction_da.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_de.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_el.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_en.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_en_GB.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_en_US_saprigi.xml +2 -2
- package/src/sap/ui/table/i18n/interaction_es.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_es_MX.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_et.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_fi.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_fr.xml +8 -5
- package/src/sap/ui/table/i18n/interaction_fr_CA.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_hi.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_hr.xml +13 -10
- package/src/sap/ui/table/i18n/interaction_hu.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_id.xml +8 -5
- package/src/sap/ui/table/i18n/interaction_it.xml +8 -5
- package/src/sap/ui/table/i18n/interaction_iw.xml +14 -11
- package/src/sap/ui/table/i18n/interaction_ja.xml +8 -5
- package/src/sap/ui/table/i18n/interaction_kk.xml +9 -6
- package/src/sap/ui/table/i18n/interaction_ko.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_lt.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_lv.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_mk.xml +9 -6
- package/src/sap/ui/table/i18n/interaction_ms.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_nl.xml +9 -6
- package/src/sap/ui/table/i18n/interaction_no.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_pl.xml +9 -6
- package/src/sap/ui/table/i18n/interaction_pt.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_pt_PT.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_ro.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_ru.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_sh.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_sk.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_sl.xml +8 -5
- package/src/sap/ui/table/i18n/interaction_sr.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_sv.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_th.xml +10 -7
- package/src/sap/ui/table/i18n/interaction_tr.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_uk.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_vi.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_zh_CN.xml +7 -4
- package/src/sap/ui/table/i18n/interaction_zh_TW.xml +11 -8
- package/src/sap/ui/table/library.js +10 -10
- package/src/sap/ui/table/menus/AnalyticalTableContextMenu.js +1 -1
- package/src/sap/ui/table/menus/ColumnHeaderMenuAdapter.js +1 -1
- package/src/sap/ui/table/menus/ContextMenu.js +1 -1
- package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +1 -1
- package/src/sap/ui/table/messagebundle_cy.properties +1 -1
- package/src/sap/ui/table/messagebundle_id.properties +2 -2
- package/src/sap/ui/table/messagebundle_lv.properties +1 -1
- package/src/sap/ui/table/messagebundle_ru.properties +1 -1
- package/src/sap/ui/table/plugins/BindingSelection.js +1 -1
- package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +28 -11
- package/src/sap/ui/table/plugins/ODataV4Selection.js +8 -15
- package/src/sap/ui/table/plugins/PluginBase.js +1 -1
- package/src/sap/ui/table/plugins/SelectionModelSelection.js +1 -1
- package/src/sap/ui/table/plugins/SelectionPlugin.js +1 -1
- package/src/sap/ui/table/plugins/V4Aggregation.js +1 -1
- package/src/sap/ui/table/rowmodes/Auto.js +1 -1
- package/src/sap/ui/table/rowmodes/Fixed.js +1 -1
- package/src/sap/ui/table/rowmodes/Interactive.js +1 -1
- 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/utils/TableUtils.js +1 -1
- package/src/sap/ui/table/utils/_ColumnUtils.js +13 -11
- package/src/sap/ui/table/utils/_GroupingUtils.js +1 -1
- package/src/sap/ui/table/utils/_HookUtils.js +1 -1
- package/src/sap/ui/table/utils/_MenuUtils.js +1 -1
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.139.1
|
|
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.139.1
|
|
31
31
|
*
|
|
32
32
|
* @constructor
|
|
33
33
|
* @public
|
|
@@ -106,7 +106,7 @@ sap.ui.define([
|
|
|
106
106
|
* the data model and binding being used.
|
|
107
107
|
* </p>
|
|
108
108
|
* @extends sap.ui.core.Control
|
|
109
|
-
* @version 1.
|
|
109
|
+
* @version 1.139.1
|
|
110
110
|
*
|
|
111
111
|
* @constructor
|
|
112
112
|
* @public
|
|
@@ -2506,12 +2506,13 @@ sap.ui.define([
|
|
|
2506
2506
|
* @see sap.ui.model.ListBinding#getContexts
|
|
2507
2507
|
*/
|
|
2508
2508
|
Table.prototype._getContexts = function(iStartIndex, iLength, iThreshold, bKeepCurrent) {
|
|
2509
|
-
|
|
2509
|
+
const oBinding = this.getBinding();
|
|
2510
|
+
|
|
2511
|
+
if (!oBinding || !this.getVisible() && oBinding.isSuspended()) {
|
|
2510
2512
|
return [];
|
|
2511
2513
|
}
|
|
2512
2514
|
|
|
2513
|
-
|
|
2514
|
-
return oBinding ? oBinding.getContexts(iStartIndex, iLength, iThreshold, bKeepCurrent) : [];
|
|
2515
|
+
return oBinding.getContexts(iStartIndex, iLength, iThreshold, bKeepCurrent);
|
|
2515
2516
|
};
|
|
2516
2517
|
|
|
2517
2518
|
/**
|
|
@@ -390,12 +390,8 @@ sap.ui.define([
|
|
|
390
390
|
rm.class("sapUiTableHeaderCell");
|
|
391
391
|
rm.class("sapUiTableRowActionHeaderCell");
|
|
392
392
|
rm.attr("tabindex", "-1");
|
|
393
|
+
rm.attr("aria-label", TableUtils.getResourceText("TBL_ROW_ACTION_COLUMN_LABEL"));
|
|
393
394
|
rm.openEnd();
|
|
394
|
-
rm.openStart("span");
|
|
395
|
-
|
|
396
|
-
rm.openEnd();
|
|
397
|
-
rm.text(TableUtils.getResourceText("TBL_ROW_ACTION_COLUMN_LABEL"));
|
|
398
|
-
rm.close("span");
|
|
399
395
|
|
|
400
396
|
rm.close("div");
|
|
401
397
|
}
|
|
@@ -508,8 +504,7 @@ sap.ui.define([
|
|
|
508
504
|
|
|
509
505
|
const mAccParams = {
|
|
510
506
|
column: oColumn,
|
|
511
|
-
headerId: sHeaderId
|
|
512
|
-
index: iIndex
|
|
507
|
+
headerId: sHeaderId
|
|
513
508
|
};
|
|
514
509
|
|
|
515
510
|
if (nSpan > 1) {
|
|
@@ -1151,7 +1146,6 @@ sap.ui.define([
|
|
|
1151
1146
|
const bIsLastFixedColumn = bFixedTable && iLastFixedColumnIndex === iColIndex;
|
|
1152
1147
|
|
|
1153
1148
|
const oParams = {
|
|
1154
|
-
index: iColIndex,
|
|
1155
1149
|
column: oColumn,
|
|
1156
1150
|
row: oRow,
|
|
1157
1151
|
fixed: bFixedTable,
|
|
@@ -36,7 +36,7 @@ sap.ui.define([
|
|
|
36
36
|
* @class
|
|
37
37
|
* The TreeTable control provides a comprehensive set of features to display hierarchical data.
|
|
38
38
|
* @extends sap.ui.table.Table
|
|
39
|
-
* @version 1.
|
|
39
|
+
* @version 1.139.1
|
|
40
40
|
*
|
|
41
41
|
* @constructor
|
|
42
42
|
* @public
|
|
@@ -265,7 +265,7 @@ sap.ui.define([
|
|
|
265
265
|
};
|
|
266
266
|
|
|
267
267
|
TreeTable.prototype._getContexts = function(iStartIndex, iLength, iThreshold, bKeepCurrent) {
|
|
268
|
-
if (!this.getVisible()) {
|
|
268
|
+
if (!this.getVisible() && this.getBinding()?.isSuspended()) {
|
|
269
269
|
return [];
|
|
270
270
|
}
|
|
271
271
|
|
|
@@ -371,9 +371,9 @@ sap.ui.define([
|
|
|
371
371
|
* @see ExtensionHelper.getRowColChange
|
|
372
372
|
* @see ExtensionHelper.storeDefaultsBeforeCellModifications
|
|
373
373
|
*/
|
|
374
|
-
performCellModifications: function(oExtension, $Cell, aDefaultLabels, aDefaultDescriptions, aLabels, aDescriptions, sText, fAdapt) {
|
|
374
|
+
performCellModifications: function(oExtension, $Cell, aDefaultLabels, aDefaultDescriptions, aLabels, aDescriptions, sText, oChangeInfo, fAdapt) {
|
|
375
375
|
ExtensionHelper.storeDefaultsBeforeCellModifications(oExtension, $Cell, aDefaultLabels, aDefaultDescriptions);
|
|
376
|
-
|
|
376
|
+
|
|
377
377
|
const oTable = oExtension.getTable();
|
|
378
378
|
const sTableId = oTable.getId();
|
|
379
379
|
oTable.$("cellacc").text(sText || "."); //set the custom text to the prepared hidden element
|
|
@@ -406,7 +406,7 @@ sap.ui.define([
|
|
|
406
406
|
* Modifies the labels and descriptions of a data cell.
|
|
407
407
|
* @see ExtensionHelper.performCellModifications
|
|
408
408
|
*/
|
|
409
|
-
modifyAccOfDataCell: function(oCellInfo) {
|
|
409
|
+
modifyAccOfDataCell: function(oCellInfo, oChangeInfo) {
|
|
410
410
|
const oTable = this.getTable();
|
|
411
411
|
const sTableId = oTable.getId();
|
|
412
412
|
const oIN = oTable._getItemNavigation();
|
|
@@ -424,13 +424,8 @@ sap.ui.define([
|
|
|
424
424
|
const sRowId = oRow.getId();
|
|
425
425
|
const bHidden = ExtensionHelper.isHiddenCell($Cell, oTableInstances.cell, oRow);
|
|
426
426
|
const bIsTreeColumnCell = ExtensionHelper.isTreeColumnCell(this, $Cell);
|
|
427
|
-
const aDefaultLabels = ExtensionHelper.getAriaAttributesForDataCell(this, {
|
|
428
|
-
index: iCol,
|
|
429
|
-
column: oTableInstances.column,
|
|
430
|
-
fixed: TableUtils.isFixedColumn(oTable, iCol)
|
|
431
|
-
})["aria-labelledby"] || [];
|
|
432
427
|
const aDescriptions = [];
|
|
433
|
-
|
|
428
|
+
const aLabels = [];
|
|
434
429
|
const bIsGroupHeader = oRow.isGroupHeader();
|
|
435
430
|
const bIsSummary = oRow.isSummary();
|
|
436
431
|
|
|
@@ -442,12 +437,10 @@ sap.ui.define([
|
|
|
442
437
|
aLabels.push(sTableId + "-ariagrouptotallabel");
|
|
443
438
|
}
|
|
444
439
|
|
|
445
|
-
if (TableUtils.hasRowHighlights(oTable) && !bIsGroupHeader && !bIsSummary) {
|
|
440
|
+
if (TableUtils.hasRowHighlights(oTable) && !bIsGroupHeader && !bIsSummary && oChangeInfo.rowChange) {
|
|
446
441
|
aLabels.push(sRowId + "-highlighttext");
|
|
447
442
|
}
|
|
448
443
|
|
|
449
|
-
aLabels = aLabels.concat(aDefaultLabels);
|
|
450
|
-
|
|
451
444
|
if (!bHidden && oTableInstances.cell) {
|
|
452
445
|
oInfo = ACCInfoHelper.getAccInfoOfControl(oTableInstances.cell);
|
|
453
446
|
aLabels.push(oInfo ? (sTableId + "-cellacc") : oTableInstances.cell.getId());
|
|
@@ -468,7 +461,7 @@ sap.ui.define([
|
|
|
468
461
|
}
|
|
469
462
|
}
|
|
470
463
|
|
|
471
|
-
ExtensionHelper.performCellModifications(this, $Cell,
|
|
464
|
+
ExtensionHelper.performCellModifications(this, $Cell, null, null, aLabels, aDescriptions, sText, oChangeInfo,
|
|
472
465
|
function(aLabels, aDescriptions, bRowChange, bColChange) {
|
|
473
466
|
if (bIsGroupHeader && bRowChange) {
|
|
474
467
|
aLabels.splice(1, 0, sRowId + "-groupHeader");
|
|
@@ -488,7 +481,7 @@ sap.ui.define([
|
|
|
488
481
|
* Modifies the labels and descriptions of a row header cell.
|
|
489
482
|
* @see ExtensionHelper.performCellModifications
|
|
490
483
|
*/
|
|
491
|
-
modifyAccOfRowHeader: function(oCellInfo) {
|
|
484
|
+
modifyAccOfRowHeader: function(oCellInfo, oChangeInfo) {
|
|
492
485
|
const oTable = this.getTable();
|
|
493
486
|
const sTableId = oTable.getId();
|
|
494
487
|
const $Cell = jQuery(oCellInfo.cell);
|
|
@@ -500,7 +493,7 @@ sap.ui.define([
|
|
|
500
493
|
if (!oRow.isSummary() && !oRow.isGroupHeader() && !oRow.isContentHidden()) {
|
|
501
494
|
aLabels.push(sRowId + "-rowselecttext");
|
|
502
495
|
|
|
503
|
-
if (TableUtils.hasRowHighlights(oTable)) {
|
|
496
|
+
if (TableUtils.hasRowHighlights(oTable) && oChangeInfo.rowChange) {
|
|
504
497
|
aLabels.push(sRowId + "-highlighttext");
|
|
505
498
|
}
|
|
506
499
|
}
|
|
@@ -517,31 +510,26 @@ sap.ui.define([
|
|
|
517
510
|
aLabels.push(sTableId + "-ariagrouptotallabel");
|
|
518
511
|
}
|
|
519
512
|
|
|
520
|
-
ExtensionHelper.performCellModifications(this, $Cell, aDefaultLabels, null, aLabels, null, null);
|
|
513
|
+
ExtensionHelper.performCellModifications(this, $Cell, aDefaultLabels, null, aLabels, null, null, oChangeInfo);
|
|
521
514
|
},
|
|
522
515
|
|
|
523
516
|
/*
|
|
524
517
|
* Modifies the labels and descriptions of a column header cell.
|
|
525
518
|
* @see ExtensionHelper.performCellModifications
|
|
526
519
|
*/
|
|
527
|
-
modifyAccOfColumnHeader: function(oCellInfo) {
|
|
520
|
+
modifyAccOfColumnHeader: function(oCellInfo, oChangeInfo) {
|
|
528
521
|
const oTable = this.getTable();
|
|
529
522
|
const $Cell = jQuery(oCellInfo.cell);
|
|
530
523
|
const oColumn = Element.getElementById($Cell.attr("data-sap-ui-colid"));
|
|
531
|
-
const oColumnLabel = TableUtils.Column.getHeaderLabel(oColumn);
|
|
532
524
|
const mAttributes = ExtensionHelper.getAriaAttributesForColumnHeader(this, {
|
|
533
525
|
headerId: $Cell.attr("id"),
|
|
534
526
|
column: oColumn,
|
|
535
|
-
index:
|
|
527
|
+
index: oTable._getVisibleColumns().indexOf(oColumn)
|
|
536
528
|
});
|
|
537
529
|
const sText = ExtensionHelper.getColumnTooltip(oColumn);
|
|
538
530
|
const aLabels = mAttributes["aria-labelledby"] || [];
|
|
539
531
|
const iSpan = oCellInfo.columnSpan;
|
|
540
532
|
|
|
541
|
-
if (oColumnLabel?.getRequired?.()) {
|
|
542
|
-
aLabels.push(oTable.getId() + "-ariarequired");
|
|
543
|
-
}
|
|
544
|
-
|
|
545
533
|
if (iSpan > 1) {
|
|
546
534
|
aLabels.push(oTable.getId() + "-ariacolspan");
|
|
547
535
|
// Update Span information
|
|
@@ -556,12 +544,8 @@ sap.ui.define([
|
|
|
556
544
|
aLabels.push(oTable.getId() + "-ariacolfiltered");
|
|
557
545
|
}
|
|
558
546
|
|
|
559
|
-
if (aLabels.length > 0) {
|
|
560
|
-
aLabels.unshift($Cell.attr("id") + "-inner");
|
|
561
|
-
}
|
|
562
|
-
|
|
563
547
|
ExtensionHelper.performCellModifications(this, $Cell, mAttributes["aria-labelledby"], mAttributes["aria-describedby"],
|
|
564
|
-
aLabels, mAttributes["aria-describedby"], sText
|
|
548
|
+
aLabels, mAttributes["aria-describedby"], sText, oChangeInfo
|
|
565
549
|
);
|
|
566
550
|
},
|
|
567
551
|
|
|
@@ -569,7 +553,7 @@ sap.ui.define([
|
|
|
569
553
|
* Modifies the labels and descriptions of the column row header.
|
|
570
554
|
* @see ExtensionHelper.performCellModifications
|
|
571
555
|
*/
|
|
572
|
-
modifyAccOfColumnRowHeader: function(oCellInfo) {
|
|
556
|
+
modifyAccOfColumnRowHeader: function(oCellInfo, oChangeInfo) {
|
|
573
557
|
const oTable = this.getTable();
|
|
574
558
|
const $Cell = jQuery(oCellInfo.cell);
|
|
575
559
|
const bEnabled = $Cell.hasClass("sapUiTableSelAllVisible");
|
|
@@ -580,7 +564,7 @@ sap.ui.define([
|
|
|
580
564
|
);
|
|
581
565
|
const aLabels = mAttributes["aria-labelledby"] || [];
|
|
582
566
|
ExtensionHelper.performCellModifications(this, $Cell, [], mAttributes["aria-describedby"],
|
|
583
|
-
aLabels, mAttributes["aria-describedby"], null
|
|
567
|
+
aLabels, mAttributes["aria-describedby"], null, oChangeInfo
|
|
584
568
|
);
|
|
585
569
|
},
|
|
586
570
|
|
|
@@ -588,7 +572,7 @@ sap.ui.define([
|
|
|
588
572
|
* Modifies the labels and descriptions of a row action cell.
|
|
589
573
|
* @see ExtensionHelper.performCellModifications
|
|
590
574
|
*/
|
|
591
|
-
modifyAccOfRowAction: function(oCellInfo) {
|
|
575
|
+
modifyAccOfRowAction: function(oCellInfo, oChangeInfo) {
|
|
592
576
|
const oTable = this.getTable();
|
|
593
577
|
const sTableId = oTable.getId();
|
|
594
578
|
const $Cell = jQuery(oCellInfo.cell);
|
|
@@ -611,7 +595,7 @@ sap.ui.define([
|
|
|
611
595
|
aLabels.push(sTableId + "-ariagrouptotallabel");
|
|
612
596
|
}
|
|
613
597
|
|
|
614
|
-
if (TableUtils.hasRowHighlights(oTable) && !oRow.isGroupHeader() && !oRow.isSummary()) {
|
|
598
|
+
if (TableUtils.hasRowHighlights(oTable) && !oRow.isGroupHeader() && !oRow.isSummary() && oChangeInfo.rowChange) {
|
|
615
599
|
aLabels.push(sRowId + "-highlighttext");
|
|
616
600
|
}
|
|
617
601
|
|
|
@@ -627,7 +611,7 @@ sap.ui.define([
|
|
|
627
611
|
}
|
|
628
612
|
}
|
|
629
613
|
|
|
630
|
-
ExtensionHelper.performCellModifications(this, $Cell, aDefaultLabels, [], aLabels, aDescriptions, sText,
|
|
614
|
+
ExtensionHelper.performCellModifications(this, $Cell, aDefaultLabels, [], aLabels, aDescriptions, sText, oChangeInfo,
|
|
631
615
|
function(aLabels, aDescriptions, bRowChange) {
|
|
632
616
|
if (bIsGroupHeader && bRowChange) {
|
|
633
617
|
const iIndex = aLabels.indexOf(sTableId + "-ariarowgrouplabel") + 1;
|
|
@@ -676,12 +660,12 @@ sap.ui.define([
|
|
|
676
660
|
if (mRenderConfig.headerSelector.visible) {
|
|
677
661
|
if (mRenderConfig.headerSelector.type === "toggle") {
|
|
678
662
|
mAttributes["role"] = ["checkbox"];
|
|
679
|
-
if (mParams
|
|
663
|
+
if (mParams.enabled) {
|
|
680
664
|
mAttributes["aria-checked"] = mParams.checked ? "true" : "false";
|
|
681
665
|
}
|
|
682
666
|
} else if (mRenderConfig.headerSelector.type === "custom") {
|
|
683
667
|
mAttributes["role"] = ["button"];
|
|
684
|
-
if (!mParams
|
|
668
|
+
if (!mParams.enabled) {
|
|
685
669
|
mAttributes["aria-disabled"] = "true";
|
|
686
670
|
}
|
|
687
671
|
}
|
|
@@ -750,14 +734,21 @@ sap.ui.define([
|
|
|
750
734
|
const oTable = oExtension.getTable();
|
|
751
735
|
const sTableId = oTable.getId();
|
|
752
736
|
|
|
753
|
-
const oColumn = mParams
|
|
754
|
-
const
|
|
737
|
+
const oColumn = mParams.column;
|
|
738
|
+
const iColIndex = oTable._getVisibleColumns().indexOf(oColumn);
|
|
739
|
+
const bHasColSpan = mParams.colspan;
|
|
740
|
+
const oColumnLabel = TableUtils.Column.getHeaderLabel(oColumn);
|
|
755
741
|
|
|
756
742
|
mAttributes["role"] = "columnheader";
|
|
757
|
-
mAttributes["aria-colindex"] =
|
|
743
|
+
mAttributes["aria-colindex"] = iColIndex + 1 + (TableUtils.hasRowHeader(oTable) ? 1 : 0);
|
|
758
744
|
|
|
759
|
-
|
|
760
|
-
|
|
745
|
+
mAttributes["aria-labelledby"] = [mParams.headerId + "-inner"];
|
|
746
|
+
if (iColIndex < oTable.getComputedFixedColumnCount()) {
|
|
747
|
+
mAttributes["aria-labelledby"].push([sTableId + "-ariafixedcolumn"]);
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
if (oColumnLabel?.getRequired?.()) {
|
|
751
|
+
mAttributes["aria-labelledby"].push(sTableId + "-ariarequired");
|
|
761
752
|
}
|
|
762
753
|
|
|
763
754
|
if (!bHasColSpan && oColumn) {
|
|
@@ -787,7 +778,7 @@ sap.ui.define([
|
|
|
787
778
|
* Returns the aria attributes for a data cell.
|
|
788
779
|
*
|
|
789
780
|
* @param {sap.ui.table.extensions.Accessibility} oExtension The accessibility extension
|
|
790
|
-
* @param {{index: int
|
|
781
|
+
* @param {{index: int}} mParams An object
|
|
791
782
|
* containing the index of the row, the instance of the column, the instance of the row, whether the column is fixed and whether the row is
|
|
792
783
|
* selected
|
|
793
784
|
* @returns {object} An object containing the aria attributes
|
|
@@ -795,14 +786,11 @@ sap.ui.define([
|
|
|
795
786
|
getAriaAttributesForDataCell: function(oExtension, mParams) {
|
|
796
787
|
const mAttributes = {};
|
|
797
788
|
const oTable = oExtension.getTable();
|
|
798
|
-
const
|
|
789
|
+
const oColumn = mParams.column;
|
|
799
790
|
|
|
800
791
|
mAttributes["role"] = "gridcell";
|
|
801
|
-
mAttributes["aria-colindex"] =
|
|
792
|
+
mAttributes["aria-colindex"] = oTable._getVisibleColumns().indexOf(oColumn) + 1 + (TableUtils.hasRowHeader(oTable) ? 1 : 0);
|
|
802
793
|
|
|
803
|
-
if (mParams.column && mParams.fixed) {
|
|
804
|
-
mAttributes["aria-labelledby"] = [sTableId + "-ariafixedcolumn"];
|
|
805
|
-
}
|
|
806
794
|
return mAttributes;
|
|
807
795
|
},
|
|
808
796
|
|
|
@@ -1024,7 +1012,7 @@ sap.ui.define([
|
|
|
1024
1012
|
"role": ""
|
|
1025
1013
|
};
|
|
1026
1014
|
if (oTable.getBinding()) {
|
|
1027
|
-
if (mParams
|
|
1015
|
+
if (mParams.row) {
|
|
1028
1016
|
if (mParams.row.isExpandable()) {
|
|
1029
1017
|
const sText = TableUtils.getResourceText("TBL_COLLAPSE_EXPAND");
|
|
1030
1018
|
mAttributes["title"] = sText;
|
|
@@ -1155,7 +1143,7 @@ sap.ui.define([
|
|
|
1155
1143
|
* @class Extension for sap.ui.table.Table which handles ACC related things.
|
|
1156
1144
|
* @extends sap.ui.table.extensions.ExtensionBase
|
|
1157
1145
|
* @author SAP SE
|
|
1158
|
-
* @version 1.
|
|
1146
|
+
* @version 1.139.1
|
|
1159
1147
|
* @constructor
|
|
1160
1148
|
* @private
|
|
1161
1149
|
* @alias sap.ui.table.extensions.Accessibility
|
|
@@ -1166,7 +1154,7 @@ sap.ui.define([
|
|
|
1166
1154
|
* @inheritDoc
|
|
1167
1155
|
* @returns {string} The name of this extension.
|
|
1168
1156
|
*/
|
|
1169
|
-
_init: function(oTable,
|
|
1157
|
+
_init: function(oTable, mSettings) {
|
|
1170
1158
|
this._accMode = ControlBehavior.isAccessibilityEnabled();
|
|
1171
1159
|
this._busyCells = [];
|
|
1172
1160
|
|
|
@@ -1379,7 +1367,8 @@ sap.ui.define([
|
|
|
1379
1367
|
}
|
|
1380
1368
|
}
|
|
1381
1369
|
|
|
1382
|
-
|
|
1370
|
+
const oChangeInfo = ExtensionHelper.getRowColChange(this);
|
|
1371
|
+
ExtensionHelper["modifyAccOf" + sCellType].apply(this, [oInfo, oChangeInfo]);
|
|
1383
1372
|
};
|
|
1384
1373
|
|
|
1385
1374
|
/**
|
|
@@ -44,7 +44,7 @@ sap.ui.define([
|
|
|
44
44
|
* @class Extension for sap.ui.table.TableRenderer which handles ACC related things.
|
|
45
45
|
* @extends sap.ui.table.extensions.ExtensionBase
|
|
46
46
|
* @author SAP SE
|
|
47
|
-
* @version 1.
|
|
47
|
+
* @version 1.139.1
|
|
48
48
|
* @constructor
|
|
49
49
|
* @private
|
|
50
50
|
* @alias sap.ui.table.extensions.AccessibilityRender
|
|
@@ -56,7 +56,7 @@ sap.ui.define([
|
|
|
56
56
|
* @inheritDoc
|
|
57
57
|
* @returns {string} The name of this extension.
|
|
58
58
|
*/
|
|
59
|
-
_init: function(oTable,
|
|
59
|
+
_init: function(oTable, mSettings) {
|
|
60
60
|
return "AccRenderExtension";
|
|
61
61
|
},
|
|
62
62
|
|
|
@@ -274,7 +274,7 @@ sap.ui.define([
|
|
|
274
274
|
*
|
|
275
275
|
* @extends sap.ui.table.extensions.ExtensionBase
|
|
276
276
|
* @author SAP SE
|
|
277
|
-
* @version 1.
|
|
277
|
+
* @version 1.139.1
|
|
278
278
|
* @constructor
|
|
279
279
|
* @private
|
|
280
280
|
* @alias sap.ui.table.extensions.DragAndDrop
|
|
@@ -286,7 +286,7 @@ sap.ui.define([
|
|
|
286
286
|
* @inheritDoc
|
|
287
287
|
* @returns {string} The name of this extension.
|
|
288
288
|
*/
|
|
289
|
-
_init: function(oTable,
|
|
289
|
+
_init: function(oTable, mSettings) {
|
|
290
290
|
this._oDelegate = ExtensionDelegate;
|
|
291
291
|
|
|
292
292
|
TableUtils.addDelegate(oTable, this._oDelegate, oTable);
|
|
@@ -19,7 +19,7 @@ sap.ui.define([
|
|
|
19
19
|
* @abstract
|
|
20
20
|
* @extends sap.ui.base.Object
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.139.1
|
|
23
23
|
* @constructor
|
|
24
24
|
* @private
|
|
25
25
|
* @alias sap.ui.table.extensions.ExtensionBase
|
|
@@ -33,14 +33,6 @@ sap.ui.define([
|
|
|
33
33
|
*/
|
|
34
34
|
_table: null,
|
|
35
35
|
|
|
36
|
-
/**
|
|
37
|
-
* The type of the table this extension is applied to.
|
|
38
|
-
*
|
|
39
|
-
* @type {sap.ui.table.extensions.ExtensionBase.TABLETYPES}
|
|
40
|
-
* @protected
|
|
41
|
-
*/
|
|
42
|
-
_type: null,
|
|
43
|
-
|
|
44
36
|
/**
|
|
45
37
|
* The settings this extension instance has been initialized with.
|
|
46
38
|
*
|
|
@@ -55,14 +47,7 @@ sap.ui.define([
|
|
|
55
47
|
this._table = oTable;
|
|
56
48
|
this._settings = mSettings || {};
|
|
57
49
|
|
|
58
|
-
|
|
59
|
-
if (oTable.isA("sap.ui.table.TreeTable")) {
|
|
60
|
-
this._type = ExtensionBase.TABLETYPES.TREE;
|
|
61
|
-
} else if (oTable.isA("sap.ui.table.AnalyticalTable")) {
|
|
62
|
-
this._type = ExtensionBase.TABLETYPES.ANALYTICAL;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const sExtensionName = this._init(this._table, this._type, this._settings);
|
|
50
|
+
const sExtensionName = this._init(this._table, this._settings);
|
|
66
51
|
|
|
67
52
|
// Attach a getter to the table to get the instance of this extension.
|
|
68
53
|
if (sExtensionName) {
|
|
@@ -77,7 +62,6 @@ sap.ui.define([
|
|
|
77
62
|
*/
|
|
78
63
|
destroy: function() {
|
|
79
64
|
this._table = null;
|
|
80
|
-
this._type = null;
|
|
81
65
|
this.bIsDestroyed = true;
|
|
82
66
|
BaseObject.prototype.destroy.apply(this, arguments);
|
|
83
67
|
},
|
|
@@ -89,19 +73,6 @@ sap.ui.define([
|
|
|
89
73
|
getInterface: function() { return this; }
|
|
90
74
|
});
|
|
91
75
|
|
|
92
|
-
/**
|
|
93
|
-
* Type of the table.
|
|
94
|
-
*
|
|
95
|
-
* @type {{TREE: string, ANALYTICAL: string, STANDARD: string}}
|
|
96
|
-
* @public
|
|
97
|
-
* @static
|
|
98
|
-
*/
|
|
99
|
-
ExtensionBase.TABLETYPES = {
|
|
100
|
-
TREE: "TREE",
|
|
101
|
-
ANALYTICAL: "ANALYTICAL",
|
|
102
|
-
STANDARD: "STANDARD"
|
|
103
|
-
};
|
|
104
|
-
|
|
105
76
|
/**
|
|
106
77
|
* Returns the related table control.
|
|
107
78
|
*
|
|
@@ -117,13 +88,12 @@ sap.ui.define([
|
|
|
117
88
|
* Initialize the extension.
|
|
118
89
|
*
|
|
119
90
|
* @param {sap.ui.table.Table} oTable Instance of the table.
|
|
120
|
-
* @param {sap.ui.table.extensions.ExtensionBase.TABLETYPES} sTableType The type of the table.
|
|
121
91
|
* @param {Object} [mSettings] Additional settings.
|
|
122
92
|
* @returns {string|null} Derived classes should return the name of the extension.
|
|
123
93
|
* @abstract
|
|
124
94
|
* @protected
|
|
125
95
|
*/
|
|
126
|
-
ExtensionBase.prototype._init = function(oTable,
|
|
96
|
+
ExtensionBase.prototype._init = function(oTable, mSettings) { return null; };
|
|
127
97
|
|
|
128
98
|
/**
|
|
129
99
|
* Hook which allows the extension to attach for additional native event listeners after the rendering of the table control.
|
|
@@ -265,7 +265,7 @@ sap.ui.define([
|
|
|
265
265
|
* @class Extension for sap.ui.table.Table which handles keyboard related things.
|
|
266
266
|
* @extends sap.ui.table.extensions.ExtensionBase
|
|
267
267
|
* @author SAP SE
|
|
268
|
-
* @version 1.
|
|
268
|
+
* @version 1.139.1
|
|
269
269
|
* @constructor
|
|
270
270
|
* @private
|
|
271
271
|
* @alias sap.ui.table.extensions.Keyboard
|
|
@@ -277,11 +277,11 @@ sap.ui.define([
|
|
|
277
277
|
* @inheritDoc
|
|
278
278
|
* @returns {string} The name of this extension.
|
|
279
279
|
*/
|
|
280
|
-
_init: function(oTable,
|
|
280
|
+
_init: function(oTable, mSettings) {
|
|
281
281
|
this._itemNavigation = null;
|
|
282
282
|
this._itemNavigationInvalidated = false; // determines whether item navigation should be reapplied from scratch
|
|
283
283
|
this._itemNavigationSuspended = false; // switch off event forwarding to item navigation
|
|
284
|
-
this._delegate = new KeyboardDelegate(
|
|
284
|
+
this._delegate = new KeyboardDelegate();
|
|
285
285
|
this._actionMode = false;
|
|
286
286
|
|
|
287
287
|
// Register the delegates in correct order
|
|
@@ -64,30 +64,12 @@ sap.ui.define([
|
|
|
64
64
|
*
|
|
65
65
|
* @extends sap.ui.base.Object
|
|
66
66
|
* @author SAP SE
|
|
67
|
-
* @version 1.
|
|
67
|
+
* @version 1.139.1
|
|
68
68
|
* @constructor
|
|
69
69
|
* @private
|
|
70
70
|
* @alias sap.ui.table.extensions.KeyboardDelegate
|
|
71
71
|
*/
|
|
72
|
-
const KeyboardDelegate = BaseObject.extend("sap.ui.table.extensions.KeyboardDelegate"
|
|
73
|
-
constructor: function(sType) {
|
|
74
|
-
BaseObject.call(this);
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
/*
|
|
78
|
-
* @see sap.ui.base.Object#destroy
|
|
79
|
-
*/
|
|
80
|
-
destroy: function() {
|
|
81
|
-
BaseObject.prototype.destroy.apply(this, arguments);
|
|
82
|
-
},
|
|
83
|
-
|
|
84
|
-
/*
|
|
85
|
-
* @see sap.ui.base.Object#getInterface
|
|
86
|
-
*/
|
|
87
|
-
getInterface: function() {
|
|
88
|
-
return this;
|
|
89
|
-
}
|
|
90
|
-
});
|
|
72
|
+
const KeyboardDelegate = BaseObject.extend("sap.ui.table.extensions.KeyboardDelegate");
|
|
91
73
|
|
|
92
74
|
/**
|
|
93
75
|
* Moves the focus one row down, but stays in the same column. The focus is set to the cell, or the first interactive element inside that cell.
|
|
@@ -406,6 +388,9 @@ sap.ui.define([
|
|
|
406
388
|
} else if (oCellInfo.isOfType(CellType.ROWHEADER)) {
|
|
407
389
|
selectItems();
|
|
408
390
|
|
|
391
|
+
} else if (oCellInfo.isOfType(CellType.COLUMNHEADER)) {
|
|
392
|
+
TableUtils.Menu.openContextMenu(oTable, oEvent);
|
|
393
|
+
|
|
409
394
|
} else if (oCellInfo.isOfType(CellType.DATACELL | CellType.ROWACTION)) {
|
|
410
395
|
// The action mode should only be entered when cellClick is not handled and no selection is performed.
|
|
411
396
|
let bEnterActionMode = !oTable.hasListeners("cellClick");
|
|
@@ -832,7 +817,13 @@ sap.ui.define([
|
|
|
832
817
|
const oBusyIndicator = this.getDomRef("busyIndicator");
|
|
833
818
|
if (oBusyIndicator) {
|
|
834
819
|
oKeyboardExtension.setSilentFocus(oBusyIndicator);
|
|
835
|
-
} else if (this.getColumnHeaderVisible()
|
|
820
|
+
} else if (!this.getColumnHeaderVisible()) {
|
|
821
|
+
if (this.getRows().length && !TableUtils.isNoDataVisible(this)) {
|
|
822
|
+
restoreFocusOnLastFocusedDataCell(this, oEvent);
|
|
823
|
+
} else if (bNoData) {
|
|
824
|
+
oKeyboardExtension.setSilentFocus(this.$("noDataCnt"));
|
|
825
|
+
}
|
|
826
|
+
} else if (TableUtils.getVisibleColumnCount(this) || TableUtils.hasRowHeader(this)) {
|
|
836
827
|
setFocusOnColumnHeaderOfLastFocusedDataCell(this, oEvent);
|
|
837
828
|
} else if (bNoData) {
|
|
838
829
|
oKeyboardExtension.setSilentFocus(this.$("noDataCnt"));
|
|
@@ -1024,11 +1015,7 @@ sap.ui.define([
|
|
|
1024
1015
|
delete this._oRangeSelection;
|
|
1025
1016
|
}
|
|
1026
1017
|
|
|
1027
|
-
if (
|
|
1028
|
-
if (KeyboardDelegate._isKeyCombination(oEvent, KeyCodes.SPACE) || KeyboardDelegate._isKeyCombination(oEvent, KeyCodes.ENTER)) {
|
|
1029
|
-
TableUtils.Menu.openContextMenu(this, oEvent);
|
|
1030
|
-
}
|
|
1031
|
-
} else if (KeyboardDelegate._isKeyCombination(oEvent, KeyCodes.SPACE)) {
|
|
1018
|
+
if (KeyboardDelegate._isKeyCombination(oEvent, KeyCodes.SPACE)) {
|
|
1032
1019
|
handleSpaceAndEnter(this, oEvent);
|
|
1033
1020
|
} else if (KeyboardDelegate._isKeyCombination(oEvent, KeyCodes.SPACE, ModKey.SHIFT)) {
|
|
1034
1021
|
TableUtils.toggleRowSelection(this, oCellInfo.rowIndex);
|
|
@@ -668,7 +668,7 @@ sap.ui.define([
|
|
|
668
668
|
* @class Extension for sap.ui.table.Table which handles mouse and touch related things.
|
|
669
669
|
* @extends sap.ui.table.extensions.ExtensionBase
|
|
670
670
|
* @author SAP SE
|
|
671
|
-
* @version 1.
|
|
671
|
+
* @version 1.139.1
|
|
672
672
|
* @constructor
|
|
673
673
|
* @private
|
|
674
674
|
* @alias sap.ui.table.extensions.Pointer
|
|
@@ -680,7 +680,7 @@ sap.ui.define([
|
|
|
680
680
|
* @inheritDoc
|
|
681
681
|
* @returns {string} The name of this extension.
|
|
682
682
|
*/
|
|
683
|
-
_init: function(oTable,
|
|
683
|
+
_init: function(oTable, mSettings) {
|
|
684
684
|
this._delegate = ExtensionDelegate;
|
|
685
685
|
|
|
686
686
|
// Register the delegate
|
|
@@ -688,7 +688,6 @@ sap.ui.define([
|
|
|
688
688
|
|
|
689
689
|
oTable._iLastHoveredVisibleColumnIndex = 0;
|
|
690
690
|
oTable._bIsColumnResizerMoving = false;
|
|
691
|
-
oTable._iFirstReorderableIndex = sTableType === ExtensionBase.TABLETYPES.TREE ? 1 : 0;
|
|
692
691
|
|
|
693
692
|
return "PointerExtension";
|
|
694
693
|
},
|
|
@@ -2327,7 +2327,7 @@ sap.ui.define([
|
|
|
2327
2327
|
* @class Extension for sap.ui.table.Table which handles scrolling.
|
|
2328
2328
|
* @extends sap.ui.table.extensions.ExtensionBase
|
|
2329
2329
|
* @author SAP SE
|
|
2330
|
-
* @version 1.
|
|
2330
|
+
* @version 1.139.1
|
|
2331
2331
|
* @constructor
|
|
2332
2332
|
* @private
|
|
2333
2333
|
* @alias sap.ui.table.extensions.Scrolling
|
|
@@ -2338,7 +2338,7 @@ sap.ui.define([
|
|
|
2338
2338
|
* @inheritDoc
|
|
2339
2339
|
* @returns {string} The name of this extension.
|
|
2340
2340
|
*/
|
|
2341
|
-
_init: function(oTable,
|
|
2341
|
+
_init: function(oTable, mSettings) {
|
|
2342
2342
|
const _ = _private(oTable);
|
|
2343
2343
|
|
|
2344
2344
|
// Horizontal scrolling
|
|
@@ -27,7 +27,7 @@ sap.ui.define([
|
|
|
27
27
|
* @class Extension for sap.ui.table.Table which handles the scrollbar on iOS.
|
|
28
28
|
* @extends sap.ui.table.extensions.ExtensionBase
|
|
29
29
|
* @author SAP SE
|
|
30
|
-
* @version 1.
|
|
30
|
+
* @version 1.139.1
|
|
31
31
|
* @constructor
|
|
32
32
|
* @private
|
|
33
33
|
* @alias sap.ui.table.extensions.ScrollingIOS
|