@syncfusion/ej2-filemanager 33.2.10 → 34.1.29
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/dist/ej2-filemanager.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js +2 -2
- package/dist/ej2-filemanager.umd.min.js.map +1 -1
- package/dist/es6/ej2-filemanager.es2015.js +297 -13
- package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
- package/dist/es6/ej2-filemanager.es5.js +297 -13
- package/dist/es6/ej2-filemanager.es5.js.map +1 -1
- package/dist/global/ej2-filemanager.min.js +2 -2
- package/dist/global/ej2-filemanager.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +11 -11
- package/src/file-manager/common/operations.js +1 -1
- package/src/file-manager/layout/details-view.d.ts +10 -0
- package/src/file-manager/layout/details-view.js +295 -11
- package/src/file-manager/layout/large-icons-view.js +1 -1
- package/styles/bds-lite.css +11 -347
- package/styles/bds-lite.scss +1 -13
- package/styles/bds.css +15 -362
- package/styles/bds.scss +2 -14
- package/styles/bootstrap-dark-lite.css +14 -58
- package/styles/bootstrap-dark-lite.scss +1 -13
- package/styles/bootstrap-dark.css +18 -65
- package/styles/bootstrap-dark.scss +2 -14
- package/styles/bootstrap-lite.css +8 -59
- package/styles/bootstrap-lite.scss +1 -13
- package/styles/bootstrap.css +12 -66
- package/styles/bootstrap.scss +2 -14
- package/styles/bootstrap4-lite.css +16 -64
- package/styles/bootstrap4-lite.scss +1 -13
- package/styles/bootstrap4.css +20 -71
- package/styles/bootstrap4.scss +2 -14
- package/styles/bootstrap5-dark-lite.css +17 -67
- package/styles/bootstrap5-dark-lite.scss +1 -13
- package/styles/bootstrap5-dark.css +21 -74
- package/styles/bootstrap5-dark.scss +2 -14
- package/styles/bootstrap5-lite.css +17 -67
- package/styles/bootstrap5-lite.scss +1 -14
- package/styles/bootstrap5.3-lite.css +8 -228
- package/styles/bootstrap5.3-lite.scss +1 -14
- package/styles/bootstrap5.3.css +12 -403
- package/styles/bootstrap5.3.scss +2 -15
- package/styles/bootstrap5.css +21 -74
- package/styles/bootstrap5.scss +2 -15
- package/styles/fabric-dark-lite.css +12 -60
- package/styles/fabric-dark-lite.scss +1 -14
- package/styles/fabric-dark.css +16 -67
- package/styles/fabric-dark.scss +2 -15
- package/styles/fabric-lite.css +12 -61
- package/styles/fabric-lite.scss +1 -14
- package/styles/fabric.css +16 -68
- package/styles/fabric.scss +2 -15
- package/styles/file-manager/_all.scss +2 -2
- package/styles/file-manager/_bds-definition.scss +1 -2
- package/styles/file-manager/_bigger.scss +14 -2
- package/styles/file-manager/_bootstrap-dark-definition.scss +1 -2
- package/styles/file-manager/_bootstrap-definition.scss +1 -2
- package/styles/file-manager/_bootstrap4-definition.scss +1 -2
- package/styles/file-manager/_bootstrap5-dark-definition.scss +1 -2
- package/styles/file-manager/_bootstrap5-definition.scss +1 -2
- package/styles/file-manager/_bootstrap5.3-definition.scss +1 -2
- package/styles/file-manager/_fabric-dark-definition.scss +1 -2
- package/styles/file-manager/_fabric-definition.scss +1 -2
- package/styles/file-manager/_fluent-dark-definition.scss +1 -2
- package/styles/file-manager/_fluent-definition.scss +1 -2
- package/styles/file-manager/_fluent2-definition.scss +1 -2
- package/styles/file-manager/_fusionnew-definition.scss +1 -2
- package/styles/file-manager/_highcontrast-definition.scss +1 -2
- package/styles/file-manager/_highcontrast-light-definition.scss +1 -2
- package/styles/file-manager/_layout.scss +7 -3
- package/styles/file-manager/_material-dark-definition.scss +1 -2
- package/styles/file-manager/_material-definition.scss +1 -2
- package/styles/file-manager/_material3-dark-definition.scss +2 -2
- package/styles/file-manager/_material3-definition.scss +2 -2
- package/styles/file-manager/_tailwind-dark-definition.scss +1 -2
- package/styles/file-manager/_tailwind-definition.scss +1 -2
- package/styles/file-manager/_tailwind3-definition.scss +1 -2
- package/styles/file-manager/_theme.scss +1 -1
- package/styles/file-manager/_variables.scss +2 -0
- package/styles/file-manager/bds.css +15 -362
- package/styles/file-manager/bds.scss +2 -15
- package/styles/file-manager/bootstrap-dark.css +18 -65
- package/styles/file-manager/bootstrap-dark.scss +2 -15
- package/styles/file-manager/bootstrap.css +12 -66
- package/styles/file-manager/bootstrap.scss +2 -15
- package/styles/file-manager/bootstrap4.css +20 -71
- package/styles/file-manager/bootstrap4.scss +2 -15
- package/styles/file-manager/bootstrap5-dark.css +21 -74
- package/styles/file-manager/bootstrap5-dark.scss +2 -15
- package/styles/file-manager/bootstrap5.3.css +12 -403
- package/styles/file-manager/bootstrap5.3.scss +2 -15
- package/styles/file-manager/bootstrap5.css +21 -74
- package/styles/file-manager/bootstrap5.scss +2 -15
- package/styles/file-manager/fabric-dark.css +16 -67
- package/styles/file-manager/fabric-dark.scss +2 -15
- package/styles/file-manager/fabric.css +16 -68
- package/styles/file-manager/fabric.scss +2 -15
- package/styles/file-manager/fluent-dark.css +12 -66
- package/styles/file-manager/fluent-dark.scss +2 -15
- package/styles/file-manager/fluent.css +12 -66
- package/styles/file-manager/fluent.scss +2 -15
- package/styles/file-manager/fluent2.css +19 -650
- package/styles/file-manager/fluent2.scss +2 -15
- package/styles/file-manager/highcontrast-light.css +12 -65
- package/styles/file-manager/highcontrast-light.scss +2 -15
- package/styles/file-manager/highcontrast.css +20 -74
- package/styles/file-manager/highcontrast.scss +2 -15
- package/styles/file-manager/icons/_bds.scss +1 -1
- package/styles/file-manager/icons/_bootstrap-dark.scss +1 -1
- package/styles/file-manager/icons/_bootstrap.scss +1 -1
- package/styles/file-manager/icons/_bootstrap4.scss +1 -1
- package/styles/file-manager/icons/_bootstrap5.3.scss +1 -1
- package/styles/file-manager/icons/_bootstrap5.scss +1 -1
- package/styles/file-manager/icons/_fabric-dark.scss +1 -1
- package/styles/file-manager/icons/_fabric.scss +1 -1
- package/styles/file-manager/icons/_fluent.scss +1 -1
- package/styles/file-manager/icons/_fluent2.scss +1 -1
- package/styles/file-manager/icons/_fusionnew.scss +1 -1
- package/styles/file-manager/icons/_highcontrast-light.scss +1 -1
- package/styles/file-manager/icons/_highcontrast.scss +1 -1
- package/styles/file-manager/icons/_material-dark.scss +1 -1
- package/styles/file-manager/icons/_material.scss +1 -1
- package/styles/file-manager/icons/_material3.scss +1 -1
- package/styles/file-manager/icons/_tailwind.scss +1 -1
- package/styles/file-manager/icons/_tailwind3.scss +1 -1
- package/styles/file-manager/material-dark.css +12 -101
- package/styles/file-manager/material-dark.scss +2 -15
- package/styles/file-manager/material.css +12 -123
- package/styles/file-manager/material.scss +2 -15
- package/styles/file-manager/material3-dark.css +15 -424
- package/styles/file-manager/material3-dark.scss +2 -15
- package/styles/file-manager/material3.css +15 -432
- package/styles/file-manager/material3.scss +2 -15
- package/styles/file-manager/tailwind-dark.css +15 -67
- package/styles/file-manager/tailwind-dark.scss +2 -15
- package/styles/file-manager/tailwind.css +15 -67
- package/styles/file-manager/tailwind.scss +2 -15
- package/styles/file-manager/tailwind3.css +14 -425
- package/styles/file-manager/tailwind3.scss +2 -15
- package/styles/fluent-dark-lite.css +8 -59
- package/styles/fluent-dark-lite.scss +1 -14
- package/styles/fluent-dark.css +12 -66
- package/styles/fluent-dark.scss +2 -15
- package/styles/fluent-lite.css +8 -59
- package/styles/fluent-lite.scss +1 -14
- package/styles/fluent.css +12 -66
- package/styles/fluent.scss +2 -15
- package/styles/fluent2-lite.css +15 -471
- package/styles/fluent2-lite.scss +1 -14
- package/styles/fluent2.css +19 -650
- package/styles/fluent2.scss +2 -15
- package/styles/highcontrast-light-lite.css +8 -58
- package/styles/highcontrast-light-lite.scss +1 -14
- package/styles/highcontrast-light.css +12 -65
- package/styles/highcontrast-light.scss +2 -15
- package/styles/highcontrast-lite.css +16 -67
- package/styles/highcontrast-lite.scss +1 -14
- package/styles/highcontrast.css +20 -74
- package/styles/highcontrast.scss +2 -15
- package/styles/material-dark-lite.css +8 -94
- package/styles/material-dark-lite.scss +1 -14
- package/styles/material-dark.css +12 -101
- package/styles/material-dark.scss +2 -15
- package/styles/material-lite.css +8 -116
- package/styles/material-lite.scss +1 -13
- package/styles/material.css +12 -123
- package/styles/material.scss +2 -14
- package/styles/material3-dark-lite.css +11 -255
- package/styles/material3-dark-lite.scss +1 -14
- package/styles/material3-dark.css +15 -424
- package/styles/material3-dark.scss +2 -15
- package/styles/material3-lite.css +11 -259
- package/styles/material3-lite.scss +1 -14
- package/styles/material3.css +15 -432
- package/styles/material3.scss +2 -15
- package/styles/tailwind-dark-lite.css +11 -60
- package/styles/tailwind-dark-lite.scss +1 -14
- package/styles/tailwind-dark.css +15 -67
- package/styles/tailwind-dark.scss +2 -15
- package/styles/tailwind-lite.css +11 -60
- package/styles/tailwind-lite.scss +1 -14
- package/styles/tailwind.css +15 -67
- package/styles/tailwind.scss +2 -15
- package/styles/tailwind3-lite.css +10 -270
- package/styles/tailwind3-lite.scss +1 -14
- package/styles/tailwind3.css +14 -425
- package/styles/tailwind3.scss +2 -15
- package/styles/file-manager/_all.bds.scss +0 -2
- package/styles/file-manager/_all.bootstrap-dark.scss +0 -2
- package/styles/file-manager/_all.bootstrap.scss +0 -2
- package/styles/file-manager/_all.bootstrap4.scss +0 -2
- package/styles/file-manager/_all.bootstrap5-dark.scss +0 -2
- package/styles/file-manager/_all.bootstrap5.3.scss +0 -2
- package/styles/file-manager/_all.bootstrap5.scss +0 -2
- package/styles/file-manager/_all.fabric-dark.scss +0 -2
- package/styles/file-manager/_all.fabric.scss +0 -2
- package/styles/file-manager/_all.fluent-dark.scss +0 -2
- package/styles/file-manager/_all.fluent.scss +0 -2
- package/styles/file-manager/_all.fluent2.scss +0 -2
- package/styles/file-manager/_all.highcontrast-light.scss +0 -2
- package/styles/file-manager/_all.highcontrast.scss +0 -2
- package/styles/file-manager/_all.material-dark.scss +0 -2
- package/styles/file-manager/_all.material.scss +0 -2
- package/styles/file-manager/_all.material3-dark.scss +0 -2
- package/styles/file-manager/_all.material3.scss +0 -2
- package/styles/file-manager/_all.tailwind-dark.scss +0 -2
- package/styles/file-manager/_all.tailwind.scss +0 -2
- package/styles/file-manager/_all.tailwind3.scss +0 -2
- package/styles/file-manager/_bigger.bds.scss +0 -4
- package/styles/file-manager/_bigger.bootstrap-dark.scss +0 -4
- package/styles/file-manager/_bigger.bootstrap.scss +0 -4
- package/styles/file-manager/_bigger.bootstrap4.scss +0 -4
- package/styles/file-manager/_bigger.bootstrap5-dark.scss +0 -4
- package/styles/file-manager/_bigger.bootstrap5.3.scss +0 -4
- package/styles/file-manager/_bigger.bootstrap5.scss +0 -4
- package/styles/file-manager/_bigger.fabric-dark.scss +0 -4
- package/styles/file-manager/_bigger.fabric.scss +0 -4
- package/styles/file-manager/_bigger.fluent-dark.scss +0 -4
- package/styles/file-manager/_bigger.fluent.scss +0 -4
- package/styles/file-manager/_bigger.fluent2.scss +0 -4
- package/styles/file-manager/_bigger.highcontrast-light.scss +0 -4
- package/styles/file-manager/_bigger.highcontrast.scss +0 -4
- package/styles/file-manager/_bigger.material-dark.scss +0 -4
- package/styles/file-manager/_bigger.material.scss +0 -4
- package/styles/file-manager/_bigger.material3-dark.scss +0 -4
- package/styles/file-manager/_bigger.material3.scss +0 -4
- package/styles/file-manager/_bigger.tailwind-dark.scss +0 -4
- package/styles/file-manager/_bigger.tailwind.scss +0 -4
- package/styles/file-manager/_bigger.tailwind3.scss +0 -4
- package/styles/file-manager/_layout.bds.scss +0 -3
- package/styles/file-manager/_layout.bootstrap-dark.scss +0 -3
- package/styles/file-manager/_layout.bootstrap.scss +0 -3
- package/styles/file-manager/_layout.bootstrap4.scss +0 -3
- package/styles/file-manager/_layout.bootstrap5-dark.scss +0 -3
- package/styles/file-manager/_layout.bootstrap5.3.scss +0 -3
- package/styles/file-manager/_layout.bootstrap5.scss +0 -3
- package/styles/file-manager/_layout.fabric-dark.scss +0 -3
- package/styles/file-manager/_layout.fabric.scss +0 -3
- package/styles/file-manager/_layout.fluent-dark.scss +0 -3
- package/styles/file-manager/_layout.fluent.scss +0 -3
- package/styles/file-manager/_layout.fluent2.scss +0 -3
- package/styles/file-manager/_layout.highcontrast-light.scss +0 -3
- package/styles/file-manager/_layout.highcontrast.scss +0 -3
- package/styles/file-manager/_layout.material-dark.scss +0 -3
- package/styles/file-manager/_layout.material.scss +0 -3
- package/styles/file-manager/_layout.material3-dark.scss +0 -3
- package/styles/file-manager/_layout.material3.scss +0 -3
- package/styles/file-manager/_layout.tailwind-dark.scss +0 -3
- package/styles/file-manager/_layout.tailwind.scss +0 -3
- package/styles/file-manager/_layout.tailwind3.scss +0 -3
- package/styles/file-manager/_theme-variables.bds.scss +0 -1
- package/styles/file-manager/_theme-variables.bootstrap-dark.scss +0 -1
- package/styles/file-manager/_theme-variables.bootstrap.scss +0 -1
- package/styles/file-manager/_theme-variables.bootstrap4.scss +0 -1
- package/styles/file-manager/_theme-variables.bootstrap5-dark.scss +0 -1
- package/styles/file-manager/_theme-variables.bootstrap5.3.scss +0 -1
- package/styles/file-manager/_theme-variables.bootstrap5.scss +0 -1
- package/styles/file-manager/_theme-variables.fabric-dark.scss +0 -1
- package/styles/file-manager/_theme-variables.fabric.scss +0 -1
- package/styles/file-manager/_theme-variables.fluent-dark.scss +0 -1
- package/styles/file-manager/_theme-variables.fluent.scss +0 -1
- package/styles/file-manager/_theme-variables.fluent2.scss +0 -1
- package/styles/file-manager/_theme-variables.highcontrast-light.scss +0 -1
- package/styles/file-manager/_theme-variables.highcontrast.scss +0 -1
- package/styles/file-manager/_theme-variables.material-dark.scss +0 -1
- package/styles/file-manager/_theme-variables.material.scss +0 -1
- package/styles/file-manager/_theme-variables.material3-dark.scss +0 -1
- package/styles/file-manager/_theme-variables.material3.scss +0 -1
- package/styles/file-manager/_theme-variables.tailwind-dark.scss +0 -1
- package/styles/file-manager/_theme-variables.tailwind.scss +0 -1
- package/styles/file-manager/_theme-variables.tailwind3.scss +0 -1
- package/styles/file-manager/_theme.bds.scss +0 -4
- package/styles/file-manager/_theme.bootstrap-dark.scss +0 -4
- package/styles/file-manager/_theme.bootstrap.scss +0 -4
- package/styles/file-manager/_theme.bootstrap4.scss +0 -4
- package/styles/file-manager/_theme.bootstrap5-dark.scss +0 -4
- package/styles/file-manager/_theme.bootstrap5.3.scss +0 -4
- package/styles/file-manager/_theme.bootstrap5.scss +0 -4
- package/styles/file-manager/_theme.fabric-dark.scss +0 -4
- package/styles/file-manager/_theme.fabric.scss +0 -4
- package/styles/file-manager/_theme.fluent-dark.scss +0 -4
- package/styles/file-manager/_theme.fluent.scss +0 -4
- package/styles/file-manager/_theme.fluent2.scss +0 -4
- package/styles/file-manager/_theme.highcontrast-light.scss +0 -4
- package/styles/file-manager/_theme.highcontrast.scss +0 -4
- package/styles/file-manager/_theme.material-dark.scss +0 -4
- package/styles/file-manager/_theme.material.scss +0 -4
- package/styles/file-manager/_theme.material3-dark.scss +0 -4
- package/styles/file-manager/_theme.material3.scss +0 -4
- package/styles/file-manager/_theme.tailwind-dark.scss +0 -4
- package/styles/file-manager/_theme.tailwind.scss +0 -4
- package/styles/file-manager/_theme.tailwind3.scss +0 -4
|
@@ -3189,7 +3189,7 @@ function performReadOperation(parent, result, fn, data, event, operation, target
|
|
|
3189
3189
|
setValue('location', location, result.details);
|
|
3190
3190
|
}
|
|
3191
3191
|
fn(parent, result, event, operation, targetPath);
|
|
3192
|
-
if (!isNullOrUndefined(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {
|
|
3192
|
+
if (!isNullOrUndefined(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path' || event === 'delete-end')) {
|
|
3193
3193
|
parent.notify(searchTextChange, result);
|
|
3194
3194
|
}
|
|
3195
3195
|
if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {
|
|
@@ -6027,7 +6027,7 @@ class LargeIconsView {
|
|
|
6027
6027
|
* @hidden
|
|
6028
6028
|
*/
|
|
6029
6029
|
getFirstItem() {
|
|
6030
|
-
return this.itemList[0];
|
|
6030
|
+
return !isNullOrUndefined(this.itemList) && this.itemList.length > 0 ? this.itemList[0] : null;
|
|
6031
6031
|
}
|
|
6032
6032
|
getLastItem() {
|
|
6033
6033
|
return this.itemList[this.itemList.length - 1];
|
|
@@ -11144,6 +11144,7 @@ class DetailsView {
|
|
|
11144
11144
|
this.dragObj = null;
|
|
11145
11145
|
this.startIndex = null;
|
|
11146
11146
|
this.firstItemIndex = null;
|
|
11147
|
+
this.currentColumnIndex = 0;
|
|
11147
11148
|
this.isSelectionUpdate = false;
|
|
11148
11149
|
this.currentSelectedItem = [];
|
|
11149
11150
|
this.count = 0;
|
|
@@ -11151,6 +11152,7 @@ class DetailsView {
|
|
|
11151
11152
|
this.isLoaded = false;
|
|
11152
11153
|
this.isNameWidth = false;
|
|
11153
11154
|
this.isMultiSelect = false;
|
|
11155
|
+
this.isTabKeypressed = false;
|
|
11154
11156
|
this.pasteOperation = false;
|
|
11155
11157
|
this.uploadOperation = false;
|
|
11156
11158
|
this.nextFocusIndex = null;
|
|
@@ -11162,6 +11164,7 @@ class DetailsView {
|
|
|
11162
11164
|
altEnter: 'alt+enter',
|
|
11163
11165
|
esc: 'escape',
|
|
11164
11166
|
tab: 'tab',
|
|
11167
|
+
shiftTab: 'shift+tab',
|
|
11165
11168
|
moveDown: 'downarrow',
|
|
11166
11169
|
ctrlEnd: 'ctrl+end',
|
|
11167
11170
|
ctrlHome: 'ctrl+home',
|
|
@@ -11184,6 +11187,8 @@ class DetailsView {
|
|
|
11184
11187
|
end: 'end',
|
|
11185
11188
|
home: 'home',
|
|
11186
11189
|
moveUp: 'uparrow',
|
|
11190
|
+
moveLeft: 'leftarrow',
|
|
11191
|
+
moveRight: 'rightarrow',
|
|
11187
11192
|
del: 'delete',
|
|
11188
11193
|
ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',
|
|
11189
11194
|
ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',
|
|
@@ -11397,6 +11402,9 @@ class DetailsView {
|
|
|
11397
11402
|
const pane = select('#' + this.parent.element.id + CONTENT_ID, this.parent.element);
|
|
11398
11403
|
const bar = select('#' + this.parent.element.id + BREADCRUMBBAR_ID, this.parent.element);
|
|
11399
11404
|
const gridHeader = select('.' + GRID_HEADER, this.parent.element);
|
|
11405
|
+
if (isNullOrUndefined(pane) || isNullOrUndefined(bar) || isNullOrUndefined(gridHeader)) {
|
|
11406
|
+
return;
|
|
11407
|
+
}
|
|
11400
11408
|
const height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);
|
|
11401
11409
|
this.gridObj.height = height;
|
|
11402
11410
|
this.gridObj.dataBind();
|
|
@@ -11605,9 +11613,11 @@ class DetailsView {
|
|
|
11605
11613
|
}
|
|
11606
11614
|
}
|
|
11607
11615
|
if (typeof this.nextFocusIndex === 'number') {
|
|
11608
|
-
|
|
11609
|
-
|
|
11610
|
-
|
|
11616
|
+
if (!isNullOrUndefined(this.gridObj.getRows())) {
|
|
11617
|
+
const rowCount = this.gridObj.getRows().length;
|
|
11618
|
+
if (rowCount > 0) {
|
|
11619
|
+
this.addFocus(this.nextFocusIndex >= rowCount ? rowCount : this.nextFocusIndex);
|
|
11620
|
+
}
|
|
11611
11621
|
}
|
|
11612
11622
|
this.nextFocusIndex = null;
|
|
11613
11623
|
}
|
|
@@ -12363,7 +12373,7 @@ class DetailsView {
|
|
|
12363
12373
|
this.openContent(args.data);
|
|
12364
12374
|
}
|
|
12365
12375
|
}
|
|
12366
|
-
this.parent.visitedItem = args.row;
|
|
12376
|
+
this.parent.visitedItem = (Array.isArray(args.row) ? args.row[args.row.length - 1] : args.row);
|
|
12367
12377
|
if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {
|
|
12368
12378
|
this.addFocus(this.gridObj.selectedRowIndex);
|
|
12369
12379
|
}
|
|
@@ -12509,8 +12519,21 @@ class DetailsView {
|
|
|
12509
12519
|
}
|
|
12510
12520
|
}
|
|
12511
12521
|
getFocusedItemIndex() {
|
|
12512
|
-
|
|
12513
|
-
|
|
12522
|
+
const focusedItem = this.getFocusedItem();
|
|
12523
|
+
if (isNullOrUndefined(focusedItem)) {
|
|
12524
|
+
return null;
|
|
12525
|
+
}
|
|
12526
|
+
if (focusedItem.classList.contains('e-rowcell')) {
|
|
12527
|
+
return this.getRowIndexFromParent(focusedItem);
|
|
12528
|
+
}
|
|
12529
|
+
return parseInt(focusedItem.getAttribute('aria-rowindex'), 10) - 1;
|
|
12530
|
+
}
|
|
12531
|
+
getRowIndexFromParent(focusedItem) {
|
|
12532
|
+
const parentRow = focusedItem.parentElement;
|
|
12533
|
+
if (parentRow && parentRow.classList.contains('e-row')) {
|
|
12534
|
+
return parseInt(parentRow.getAttribute('aria-rowindex'), 10) - 1;
|
|
12535
|
+
}
|
|
12536
|
+
return null;
|
|
12514
12537
|
}
|
|
12515
12538
|
/* istanbul ignore next */
|
|
12516
12539
|
keydownHandler(e) {
|
|
@@ -12539,6 +12562,8 @@ class DetailsView {
|
|
|
12539
12562
|
case 'ctrlLeft':
|
|
12540
12563
|
case 'shiftLeft':
|
|
12541
12564
|
case 'csLeft':
|
|
12565
|
+
case 'tab':
|
|
12566
|
+
case 'shiftTab':
|
|
12542
12567
|
case 'esc':
|
|
12543
12568
|
case 'del':
|
|
12544
12569
|
case 'shiftdel':
|
|
@@ -12548,6 +12573,8 @@ class DetailsView {
|
|
|
12548
12573
|
case 'f2':
|
|
12549
12574
|
case 'moveDown':
|
|
12550
12575
|
case 'moveUp':
|
|
12576
|
+
case 'moveLeft':
|
|
12577
|
+
case 'moveRight':
|
|
12551
12578
|
case 'ctrlD':
|
|
12552
12579
|
e.preventDefault();
|
|
12553
12580
|
break;
|
|
@@ -12628,12 +12655,18 @@ class DetailsView {
|
|
|
12628
12655
|
break;
|
|
12629
12656
|
case 'ctrlHome':
|
|
12630
12657
|
case 'tab':
|
|
12658
|
+
case 'shiftTab':
|
|
12631
12659
|
if (!isNullOrUndefined(gridItems[0])) {
|
|
12632
12660
|
if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {
|
|
12633
12661
|
this.gridObj.selectRow(0);
|
|
12634
12662
|
}
|
|
12635
|
-
else if (
|
|
12636
|
-
|
|
12663
|
+
else if (e.action === 'shiftTab') {
|
|
12664
|
+
this.handleReverseTabNavigation(e);
|
|
12665
|
+
}
|
|
12666
|
+
else if (e.action === 'tab') {
|
|
12667
|
+
this.isTabKeypressed = true;
|
|
12668
|
+
this.addHeaderFocus(e);
|
|
12669
|
+
this.isTabKeypressed = false;
|
|
12637
12670
|
}
|
|
12638
12671
|
else {
|
|
12639
12672
|
this.addHeaderFocus(e);
|
|
@@ -12703,6 +12736,10 @@ class DetailsView {
|
|
|
12703
12736
|
case 'moveDown':
|
|
12704
12737
|
this.moveFunction(gridItems, e, selIndex);
|
|
12705
12738
|
break;
|
|
12739
|
+
case 'moveLeft':
|
|
12740
|
+
case 'moveRight':
|
|
12741
|
+
this.moveColumn(e);
|
|
12742
|
+
break;
|
|
12706
12743
|
case 'end':
|
|
12707
12744
|
lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];
|
|
12708
12745
|
this.parent.setProperties({ selectedItems: lastItem }, true);
|
|
@@ -12833,6 +12870,72 @@ class DetailsView {
|
|
|
12833
12870
|
}
|
|
12834
12871
|
this.addFocus(nextItem);
|
|
12835
12872
|
}
|
|
12873
|
+
moveColumn(e) {
|
|
12874
|
+
const focusedItem = this.getFocusedItem();
|
|
12875
|
+
if (isNullOrUndefined(focusedItem)) {
|
|
12876
|
+
return;
|
|
12877
|
+
}
|
|
12878
|
+
const isHeaderFocused = focusedItem.classList.contains('e-headercell');
|
|
12879
|
+
const isRowFocused = focusedItem.classList.contains('e-row');
|
|
12880
|
+
const isCellFocused = focusedItem.classList.contains('e-rowcell');
|
|
12881
|
+
if (!isHeaderFocused && !isRowFocused && !isCellFocused) {
|
|
12882
|
+
return;
|
|
12883
|
+
}
|
|
12884
|
+
if (isHeaderFocused) {
|
|
12885
|
+
const headers = Array.from(this.element.querySelectorAll('th.e-headercell:not(.e-fe-checkbox)'));
|
|
12886
|
+
const currentIndex = headers.indexOf(focusedItem);
|
|
12887
|
+
if (currentIndex === -1) {
|
|
12888
|
+
return;
|
|
12889
|
+
}
|
|
12890
|
+
const nextIndex = this.getNextColumnIndex(currentIndex, headers.length, e.action === 'moveRight');
|
|
12891
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
12892
|
+
const headerElement = headers[nextIndex];
|
|
12893
|
+
focusedItem.setAttribute('tabindex', '-1');
|
|
12894
|
+
removeClass([focusedItem], [FOCUS, FOCUSED]);
|
|
12895
|
+
headerElement.setAttribute('tabindex', '0');
|
|
12896
|
+
headerElement.focus();
|
|
12897
|
+
addClass([headerElement], [FOCUS, FOCUSED]);
|
|
12898
|
+
}
|
|
12899
|
+
else if (isRowFocused || isCellFocused) {
|
|
12900
|
+
const row = (isRowFocused ? focusedItem : focusedItem.parentElement);
|
|
12901
|
+
if (!isRowFocused && (!row || !row.classList.contains('e-row'))) {
|
|
12902
|
+
return;
|
|
12903
|
+
}
|
|
12904
|
+
const cells = Array.from(row.querySelectorAll('.e-rowcell'));
|
|
12905
|
+
if (cells.length === 0) {
|
|
12906
|
+
return;
|
|
12907
|
+
}
|
|
12908
|
+
const currentCellIndex = this.currentColumnIndex || 0;
|
|
12909
|
+
const nextColumnIndex = this.getNextColumnIndex(currentCellIndex, cells.length, e.action === 'moveRight');
|
|
12910
|
+
this.currentColumnIndex = nextColumnIndex;
|
|
12911
|
+
if (isRowFocused) {
|
|
12912
|
+
removeClass([row], [FOCUS, FOCUSED]);
|
|
12913
|
+
row.setAttribute('tabindex', '-1');
|
|
12914
|
+
}
|
|
12915
|
+
else {
|
|
12916
|
+
removeClass([focusedItem], [FOCUS, FOCUSED]);
|
|
12917
|
+
focusedItem.setAttribute('tabindex', '-1');
|
|
12918
|
+
}
|
|
12919
|
+
this.clearCellFocus(cells);
|
|
12920
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
12921
|
+
const nextCell = cells[nextColumnIndex];
|
|
12922
|
+
nextCell.setAttribute('tabindex', '0');
|
|
12923
|
+
addClass([nextCell], [FOCUS, FOCUSED]);
|
|
12924
|
+
nextCell.focus();
|
|
12925
|
+
}
|
|
12926
|
+
}
|
|
12927
|
+
clearCellFocus(cells) {
|
|
12928
|
+
for (let i = 0; i < cells.length; i++) {
|
|
12929
|
+
cells[i].setAttribute('tabindex', '-1');
|
|
12930
|
+
removeClass([cells[i]], [FOCUS, FOCUSED]);
|
|
12931
|
+
}
|
|
12932
|
+
}
|
|
12933
|
+
getNextColumnIndex(currentIndex, maxLength, isRight) {
|
|
12934
|
+
if (isRight) {
|
|
12935
|
+
return Math.min(currentIndex + 1, maxLength - 1);
|
|
12936
|
+
}
|
|
12937
|
+
return Math.max(currentIndex - 1, 0);
|
|
12938
|
+
}
|
|
12836
12939
|
checkRowsKey(items, indexValue, focIndex, e) {
|
|
12837
12940
|
if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {
|
|
12838
12941
|
if (e.action !== 'csHome' && e.action !== 'csEnd') {
|
|
@@ -12918,18 +13021,58 @@ class DetailsView {
|
|
|
12918
13021
|
if (fItem) {
|
|
12919
13022
|
fItem.removeAttribute('tabindex');
|
|
12920
13023
|
removeClass([fItem], [FOCUS, FOCUSED]);
|
|
13024
|
+
if (fItem.classList.contains('e-rowcell')) {
|
|
13025
|
+
const parentRow = fItem.parentElement;
|
|
13026
|
+
if (parentRow) {
|
|
13027
|
+
removeClass([parentRow], [FOCUS, FOCUSED]);
|
|
13028
|
+
parentRow.removeAttribute('tabindex');
|
|
13029
|
+
}
|
|
13030
|
+
}
|
|
13031
|
+
if (fItem.classList.contains('e-row')) {
|
|
13032
|
+
const focusedCells = fItem.querySelectorAll('.e-rowcell');
|
|
13033
|
+
for (let i = 0; i < focusedCells.length; i++) {
|
|
13034
|
+
if (focusedCells[i].classList.contains('e-focus') || focusedCells[i].classList.contains('e-focused')) {
|
|
13035
|
+
focusedCells[i].removeAttribute('tabindex');
|
|
13036
|
+
removeClass([focusedCells[i]], [FOCUS, FOCUSED]);
|
|
13037
|
+
}
|
|
13038
|
+
}
|
|
13039
|
+
}
|
|
12921
13040
|
}
|
|
12922
13041
|
if (!isNullOrUndefined(itemElement)) {
|
|
12923
13042
|
this.gridObj.element.setAttribute('tabindex', '-1');
|
|
12924
|
-
itemElement
|
|
12925
|
-
|
|
12926
|
-
|
|
13043
|
+
const targetRow = itemElement;
|
|
13044
|
+
targetRow.setAttribute('tabindex', '0');
|
|
13045
|
+
const cells = targetRow.querySelectorAll('.e-rowcell');
|
|
13046
|
+
this.clearCellFocus(Array.from(cells));
|
|
13047
|
+
targetRow.focus();
|
|
13048
|
+
addClass([targetRow], [FOCUS, FOCUSED]);
|
|
13049
|
+
this.currentColumnIndex = 0;
|
|
12927
13050
|
}
|
|
12928
13051
|
}
|
|
12929
13052
|
addHeaderFocus(e) {
|
|
12930
13053
|
const treeFocus = select('.e-row', this.element);
|
|
12931
13054
|
this.gridObj.element.setAttribute('tabindex', '-1');
|
|
13055
|
+
const isHeaderFocused = this.getFocusedItem();
|
|
12932
13056
|
let nameFocus;
|
|
13057
|
+
const focusedRow = select('.e-row.e-focus', this.element);
|
|
13058
|
+
let gridIconCell;
|
|
13059
|
+
if (!isNullOrUndefined(focusedRow) && this.isTabKeypressed) {
|
|
13060
|
+
gridIconCell = select('.e-rowcell.e-fe-grid-icon', focusedRow);
|
|
13061
|
+
}
|
|
13062
|
+
else {
|
|
13063
|
+
if (this.isTabKeypressed) {
|
|
13064
|
+
const activeCell = this.getFocusedItem();
|
|
13065
|
+
if (activeCell && activeCell.classList.contains('e-rowcell')) {
|
|
13066
|
+
gridIconCell = select('.e-rowcell.e-fe-grid-icon', activeCell.closest('.e-row'));
|
|
13067
|
+
}
|
|
13068
|
+
else {
|
|
13069
|
+
gridIconCell = select('.e-rowcell.e-fe-grid-icon', this.element);
|
|
13070
|
+
}
|
|
13071
|
+
}
|
|
13072
|
+
}
|
|
13073
|
+
if (this.tryNavigateToNextCellInRow(focusedRow, gridIconCell, isHeaderFocused)) {
|
|
13074
|
+
return;
|
|
13075
|
+
}
|
|
12933
13076
|
if (!isNullOrUndefined(e.target) && e.target.classList.contains('e-defaultcursor')) {
|
|
12934
13077
|
this.addFocus(0);
|
|
12935
13078
|
nameFocus = e.target.nextElementSibling;
|
|
@@ -12951,6 +13094,147 @@ class DetailsView {
|
|
|
12951
13094
|
}
|
|
12952
13095
|
}
|
|
12953
13096
|
}
|
|
13097
|
+
tryNavigateToNextCellInRow(focusedRow, gridIconCell, isHeaderFocused) {
|
|
13098
|
+
if ((!isNullOrUndefined(focusedRow) || !isNullOrUndefined(gridIconCell)) && (!isNullOrUndefined(isHeaderFocused) && !isHeaderFocused.classList.contains('e-headercell'))) {
|
|
13099
|
+
if (!isNullOrUndefined(gridIconCell)) {
|
|
13100
|
+
const activeCell = this.getFocusedItem();
|
|
13101
|
+
if (activeCell && activeCell.classList.contains('e-rowcell')) {
|
|
13102
|
+
const row = activeCell.parentElement;
|
|
13103
|
+
const cells = row ? Array.from(row.querySelectorAll('.e-rowcell')) : [];
|
|
13104
|
+
const currentIndex = cells.indexOf(activeCell);
|
|
13105
|
+
const nextIndex = currentIndex + 1;
|
|
13106
|
+
if (nextIndex < cells.length) {
|
|
13107
|
+
this.currentColumnIndex = nextIndex;
|
|
13108
|
+
activeCell.setAttribute('tabindex', '-1');
|
|
13109
|
+
removeClass([activeCell], [FOCUS, FOCUSED]);
|
|
13110
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
13111
|
+
const nextCell = cells[nextIndex];
|
|
13112
|
+
nextCell.setAttribute('tabindex', '0');
|
|
13113
|
+
addClass([nextCell], [FOCUS, FOCUSED]);
|
|
13114
|
+
nextCell.focus();
|
|
13115
|
+
return true;
|
|
13116
|
+
}
|
|
13117
|
+
else {
|
|
13118
|
+
const currentRow = activeCell.parentElement;
|
|
13119
|
+
const rows = this.gridObj.getRows();
|
|
13120
|
+
const currentRowIndex = rows.indexOf(currentRow);
|
|
13121
|
+
if (currentRowIndex !== -1) {
|
|
13122
|
+
const nextRow = this.gridObj.getRowByIndex(currentRowIndex + 1);
|
|
13123
|
+
if (!isNullOrUndefined(nextRow)) {
|
|
13124
|
+
activeCell.setAttribute('tabindex', '-1');
|
|
13125
|
+
removeClass([activeCell], [FOCUS, FOCUSED]);
|
|
13126
|
+
this.addFocus(currentRowIndex + 1);
|
|
13127
|
+
return true;
|
|
13128
|
+
}
|
|
13129
|
+
else {
|
|
13130
|
+
activeCell.setAttribute('tabindex', '-1');
|
|
13131
|
+
removeClass([activeCell], [FOCUS, FOCUSED]);
|
|
13132
|
+
activeCell.blur();
|
|
13133
|
+
return true;
|
|
13134
|
+
}
|
|
13135
|
+
}
|
|
13136
|
+
return false;
|
|
13137
|
+
}
|
|
13138
|
+
}
|
|
13139
|
+
const focusedRow = this.getFocusedItem();
|
|
13140
|
+
if (!isNullOrUndefined(focusedRow) && focusedRow.classList.contains('e-row')) {
|
|
13141
|
+
focusedRow.setAttribute('tabindex', '-1');
|
|
13142
|
+
removeClass([focusedRow], [FOCUS, FOCUSED]);
|
|
13143
|
+
}
|
|
13144
|
+
gridIconCell.setAttribute('tabindex', '0');
|
|
13145
|
+
addClass([gridIconCell], [FOCUS, FOCUSED]);
|
|
13146
|
+
gridIconCell.focus();
|
|
13147
|
+
return true;
|
|
13148
|
+
}
|
|
13149
|
+
}
|
|
13150
|
+
return false;
|
|
13151
|
+
}
|
|
13152
|
+
handleReverseTabNavigation(e) {
|
|
13153
|
+
e.preventDefault();
|
|
13154
|
+
const focusedItem = this.getFocusedItem();
|
|
13155
|
+
const headers = Array.from(this.element.querySelectorAll('th.e-headercell:not(.e-fe-checkbox)'));
|
|
13156
|
+
if (headers.length === 0) {
|
|
13157
|
+
return;
|
|
13158
|
+
}
|
|
13159
|
+
if (!isNullOrUndefined(focusedItem) && focusedItem.classList.contains('e-rowcell')) {
|
|
13160
|
+
const row = focusedItem.parentElement;
|
|
13161
|
+
const cells = row ? Array.from(row.querySelectorAll('.e-rowcell:not(.e-gridchkbox)')) : [];
|
|
13162
|
+
const currentTargetIndex = cells.indexOf(focusedItem);
|
|
13163
|
+
const prevIndex = currentTargetIndex - 1;
|
|
13164
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
13165
|
+
const targetElement = prevIndex >= 0 ? cells[prevIndex] : row;
|
|
13166
|
+
focusedItem.setAttribute('tabindex', '-1');
|
|
13167
|
+
removeClass([focusedItem], [FOCUS, FOCUSED]);
|
|
13168
|
+
targetElement.setAttribute('tabindex', '0');
|
|
13169
|
+
addClass([targetElement], [FOCUS, FOCUSED]);
|
|
13170
|
+
targetElement.focus();
|
|
13171
|
+
return;
|
|
13172
|
+
}
|
|
13173
|
+
if (!isNullOrUndefined(focusedItem) && focusedItem.classList.contains('e-row')) {
|
|
13174
|
+
const rows = this.gridObj.getRows();
|
|
13175
|
+
const currentRowIndex = rows.indexOf(focusedItem);
|
|
13176
|
+
if (currentRowIndex > 0) {
|
|
13177
|
+
const previousRow = rows[currentRowIndex - 1];
|
|
13178
|
+
const previousRowCells = Array.from(previousRow.querySelectorAll('.e-rowcell:not(.e-gridchkbox)'));
|
|
13179
|
+
const lastCell = previousRowCells[previousRowCells.length - 1];
|
|
13180
|
+
focusedItem.setAttribute('tabindex', '-1');
|
|
13181
|
+
removeClass([focusedItem], [FOCUS, FOCUSED]);
|
|
13182
|
+
lastCell.setAttribute('tabindex', '0');
|
|
13183
|
+
addClass([lastCell], [FOCUS, FOCUSED]);
|
|
13184
|
+
lastCell.focus();
|
|
13185
|
+
return;
|
|
13186
|
+
}
|
|
13187
|
+
focusedItem.setAttribute('tabindex', '-1');
|
|
13188
|
+
removeClass([focusedItem], [FOCUS, FOCUSED]);
|
|
13189
|
+
this.moveFocusToHeader(headers[headers.length - 1]);
|
|
13190
|
+
return;
|
|
13191
|
+
}
|
|
13192
|
+
if (!isNullOrUndefined(focusedItem) && focusedItem.classList.contains('e-headercell')) {
|
|
13193
|
+
const currentIndex = headers.indexOf(focusedItem);
|
|
13194
|
+
if (currentIndex > 0) {
|
|
13195
|
+
this.moveFocusToHeader(headers[currentIndex - 1]);
|
|
13196
|
+
}
|
|
13197
|
+
else if (currentIndex === 0) {
|
|
13198
|
+
this.clearDetailsFocus();
|
|
13199
|
+
}
|
|
13200
|
+
return;
|
|
13201
|
+
}
|
|
13202
|
+
if (!isNullOrUndefined(focusedItem)) {
|
|
13203
|
+
this.moveFocusToHeader(headers[headers.length - 1]);
|
|
13204
|
+
}
|
|
13205
|
+
}
|
|
13206
|
+
moveFocusToHeader(header) {
|
|
13207
|
+
const focusedItem = this.getFocusedItem();
|
|
13208
|
+
if (!isNullOrUndefined(focusedItem)) {
|
|
13209
|
+
focusedItem.setAttribute('tabindex', '-1');
|
|
13210
|
+
removeClass([focusedItem], [FOCUS, FOCUSED]);
|
|
13211
|
+
}
|
|
13212
|
+
header.setAttribute('tabindex', '0');
|
|
13213
|
+
header.focus();
|
|
13214
|
+
addClass([header], [FOCUS, FOCUSED]);
|
|
13215
|
+
}
|
|
13216
|
+
clearDetailsFocus() {
|
|
13217
|
+
const focusedItem = this.getFocusedItem();
|
|
13218
|
+
if (!isNullOrUndefined(focusedItem)) {
|
|
13219
|
+
focusedItem.setAttribute('tabindex', '-1');
|
|
13220
|
+
removeClass([focusedItem], [FOCUS, FOCUSED]);
|
|
13221
|
+
}
|
|
13222
|
+
const breadcrumbBar = select('.' + BREADCRUMBS, this.parent.element);
|
|
13223
|
+
if (!isNullOrUndefined(breadcrumbBar)) {
|
|
13224
|
+
const searchInput = breadcrumbBar.querySelector('input[aria-label="Search"]');
|
|
13225
|
+
if (!isNullOrUndefined(searchInput)) {
|
|
13226
|
+
searchInput.setAttribute('tabindex', '0');
|
|
13227
|
+
searchInput.focus();
|
|
13228
|
+
}
|
|
13229
|
+
else {
|
|
13230
|
+
const lastBreadcrumb = breadcrumbBar.querySelector('.e-address-list-item:last-child');
|
|
13231
|
+
if (!isNullOrUndefined(lastBreadcrumb)) {
|
|
13232
|
+
lastBreadcrumb.setAttribute('tabindex', '0');
|
|
13233
|
+
lastBreadcrumb.focus();
|
|
13234
|
+
}
|
|
13235
|
+
}
|
|
13236
|
+
}
|
|
13237
|
+
}
|
|
12954
13238
|
getFocusedItem() {
|
|
12955
13239
|
return select('.' + FOCUSED, this.element);
|
|
12956
13240
|
}
|