@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.
Files changed (291) hide show
  1. package/dist/ej2-filemanager.min.js +2 -2
  2. package/dist/ej2-filemanager.umd.min.js +2 -2
  3. package/dist/ej2-filemanager.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-filemanager.es2015.js +297 -13
  5. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  6. package/dist/es6/ej2-filemanager.es5.js +297 -13
  7. package/dist/es6/ej2-filemanager.es5.js.map +1 -1
  8. package/dist/global/ej2-filemanager.min.js +2 -2
  9. package/dist/global/ej2-filemanager.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +11 -11
  12. package/src/file-manager/common/operations.js +1 -1
  13. package/src/file-manager/layout/details-view.d.ts +10 -0
  14. package/src/file-manager/layout/details-view.js +295 -11
  15. package/src/file-manager/layout/large-icons-view.js +1 -1
  16. package/styles/bds-lite.css +11 -347
  17. package/styles/bds-lite.scss +1 -13
  18. package/styles/bds.css +15 -362
  19. package/styles/bds.scss +2 -14
  20. package/styles/bootstrap-dark-lite.css +14 -58
  21. package/styles/bootstrap-dark-lite.scss +1 -13
  22. package/styles/bootstrap-dark.css +18 -65
  23. package/styles/bootstrap-dark.scss +2 -14
  24. package/styles/bootstrap-lite.css +8 -59
  25. package/styles/bootstrap-lite.scss +1 -13
  26. package/styles/bootstrap.css +12 -66
  27. package/styles/bootstrap.scss +2 -14
  28. package/styles/bootstrap4-lite.css +16 -64
  29. package/styles/bootstrap4-lite.scss +1 -13
  30. package/styles/bootstrap4.css +20 -71
  31. package/styles/bootstrap4.scss +2 -14
  32. package/styles/bootstrap5-dark-lite.css +17 -67
  33. package/styles/bootstrap5-dark-lite.scss +1 -13
  34. package/styles/bootstrap5-dark.css +21 -74
  35. package/styles/bootstrap5-dark.scss +2 -14
  36. package/styles/bootstrap5-lite.css +17 -67
  37. package/styles/bootstrap5-lite.scss +1 -14
  38. package/styles/bootstrap5.3-lite.css +8 -228
  39. package/styles/bootstrap5.3-lite.scss +1 -14
  40. package/styles/bootstrap5.3.css +12 -403
  41. package/styles/bootstrap5.3.scss +2 -15
  42. package/styles/bootstrap5.css +21 -74
  43. package/styles/bootstrap5.scss +2 -15
  44. package/styles/fabric-dark-lite.css +12 -60
  45. package/styles/fabric-dark-lite.scss +1 -14
  46. package/styles/fabric-dark.css +16 -67
  47. package/styles/fabric-dark.scss +2 -15
  48. package/styles/fabric-lite.css +12 -61
  49. package/styles/fabric-lite.scss +1 -14
  50. package/styles/fabric.css +16 -68
  51. package/styles/fabric.scss +2 -15
  52. package/styles/file-manager/_all.scss +2 -2
  53. package/styles/file-manager/_bds-definition.scss +1 -2
  54. package/styles/file-manager/_bigger.scss +14 -2
  55. package/styles/file-manager/_bootstrap-dark-definition.scss +1 -2
  56. package/styles/file-manager/_bootstrap-definition.scss +1 -2
  57. package/styles/file-manager/_bootstrap4-definition.scss +1 -2
  58. package/styles/file-manager/_bootstrap5-dark-definition.scss +1 -2
  59. package/styles/file-manager/_bootstrap5-definition.scss +1 -2
  60. package/styles/file-manager/_bootstrap5.3-definition.scss +1 -2
  61. package/styles/file-manager/_fabric-dark-definition.scss +1 -2
  62. package/styles/file-manager/_fabric-definition.scss +1 -2
  63. package/styles/file-manager/_fluent-dark-definition.scss +1 -2
  64. package/styles/file-manager/_fluent-definition.scss +1 -2
  65. package/styles/file-manager/_fluent2-definition.scss +1 -2
  66. package/styles/file-manager/_fusionnew-definition.scss +1 -2
  67. package/styles/file-manager/_highcontrast-definition.scss +1 -2
  68. package/styles/file-manager/_highcontrast-light-definition.scss +1 -2
  69. package/styles/file-manager/_layout.scss +7 -3
  70. package/styles/file-manager/_material-dark-definition.scss +1 -2
  71. package/styles/file-manager/_material-definition.scss +1 -2
  72. package/styles/file-manager/_material3-dark-definition.scss +2 -2
  73. package/styles/file-manager/_material3-definition.scss +2 -2
  74. package/styles/file-manager/_tailwind-dark-definition.scss +1 -2
  75. package/styles/file-manager/_tailwind-definition.scss +1 -2
  76. package/styles/file-manager/_tailwind3-definition.scss +1 -2
  77. package/styles/file-manager/_theme.scss +1 -1
  78. package/styles/file-manager/_variables.scss +2 -0
  79. package/styles/file-manager/bds.css +15 -362
  80. package/styles/file-manager/bds.scss +2 -15
  81. package/styles/file-manager/bootstrap-dark.css +18 -65
  82. package/styles/file-manager/bootstrap-dark.scss +2 -15
  83. package/styles/file-manager/bootstrap.css +12 -66
  84. package/styles/file-manager/bootstrap.scss +2 -15
  85. package/styles/file-manager/bootstrap4.css +20 -71
  86. package/styles/file-manager/bootstrap4.scss +2 -15
  87. package/styles/file-manager/bootstrap5-dark.css +21 -74
  88. package/styles/file-manager/bootstrap5-dark.scss +2 -15
  89. package/styles/file-manager/bootstrap5.3.css +12 -403
  90. package/styles/file-manager/bootstrap5.3.scss +2 -15
  91. package/styles/file-manager/bootstrap5.css +21 -74
  92. package/styles/file-manager/bootstrap5.scss +2 -15
  93. package/styles/file-manager/fabric-dark.css +16 -67
  94. package/styles/file-manager/fabric-dark.scss +2 -15
  95. package/styles/file-manager/fabric.css +16 -68
  96. package/styles/file-manager/fabric.scss +2 -15
  97. package/styles/file-manager/fluent-dark.css +12 -66
  98. package/styles/file-manager/fluent-dark.scss +2 -15
  99. package/styles/file-manager/fluent.css +12 -66
  100. package/styles/file-manager/fluent.scss +2 -15
  101. package/styles/file-manager/fluent2.css +19 -650
  102. package/styles/file-manager/fluent2.scss +2 -15
  103. package/styles/file-manager/highcontrast-light.css +12 -65
  104. package/styles/file-manager/highcontrast-light.scss +2 -15
  105. package/styles/file-manager/highcontrast.css +20 -74
  106. package/styles/file-manager/highcontrast.scss +2 -15
  107. package/styles/file-manager/icons/_bds.scss +1 -1
  108. package/styles/file-manager/icons/_bootstrap-dark.scss +1 -1
  109. package/styles/file-manager/icons/_bootstrap.scss +1 -1
  110. package/styles/file-manager/icons/_bootstrap4.scss +1 -1
  111. package/styles/file-manager/icons/_bootstrap5.3.scss +1 -1
  112. package/styles/file-manager/icons/_bootstrap5.scss +1 -1
  113. package/styles/file-manager/icons/_fabric-dark.scss +1 -1
  114. package/styles/file-manager/icons/_fabric.scss +1 -1
  115. package/styles/file-manager/icons/_fluent.scss +1 -1
  116. package/styles/file-manager/icons/_fluent2.scss +1 -1
  117. package/styles/file-manager/icons/_fusionnew.scss +1 -1
  118. package/styles/file-manager/icons/_highcontrast-light.scss +1 -1
  119. package/styles/file-manager/icons/_highcontrast.scss +1 -1
  120. package/styles/file-manager/icons/_material-dark.scss +1 -1
  121. package/styles/file-manager/icons/_material.scss +1 -1
  122. package/styles/file-manager/icons/_material3.scss +1 -1
  123. package/styles/file-manager/icons/_tailwind.scss +1 -1
  124. package/styles/file-manager/icons/_tailwind3.scss +1 -1
  125. package/styles/file-manager/material-dark.css +12 -101
  126. package/styles/file-manager/material-dark.scss +2 -15
  127. package/styles/file-manager/material.css +12 -123
  128. package/styles/file-manager/material.scss +2 -15
  129. package/styles/file-manager/material3-dark.css +15 -424
  130. package/styles/file-manager/material3-dark.scss +2 -15
  131. package/styles/file-manager/material3.css +15 -432
  132. package/styles/file-manager/material3.scss +2 -15
  133. package/styles/file-manager/tailwind-dark.css +15 -67
  134. package/styles/file-manager/tailwind-dark.scss +2 -15
  135. package/styles/file-manager/tailwind.css +15 -67
  136. package/styles/file-manager/tailwind.scss +2 -15
  137. package/styles/file-manager/tailwind3.css +14 -425
  138. package/styles/file-manager/tailwind3.scss +2 -15
  139. package/styles/fluent-dark-lite.css +8 -59
  140. package/styles/fluent-dark-lite.scss +1 -14
  141. package/styles/fluent-dark.css +12 -66
  142. package/styles/fluent-dark.scss +2 -15
  143. package/styles/fluent-lite.css +8 -59
  144. package/styles/fluent-lite.scss +1 -14
  145. package/styles/fluent.css +12 -66
  146. package/styles/fluent.scss +2 -15
  147. package/styles/fluent2-lite.css +15 -471
  148. package/styles/fluent2-lite.scss +1 -14
  149. package/styles/fluent2.css +19 -650
  150. package/styles/fluent2.scss +2 -15
  151. package/styles/highcontrast-light-lite.css +8 -58
  152. package/styles/highcontrast-light-lite.scss +1 -14
  153. package/styles/highcontrast-light.css +12 -65
  154. package/styles/highcontrast-light.scss +2 -15
  155. package/styles/highcontrast-lite.css +16 -67
  156. package/styles/highcontrast-lite.scss +1 -14
  157. package/styles/highcontrast.css +20 -74
  158. package/styles/highcontrast.scss +2 -15
  159. package/styles/material-dark-lite.css +8 -94
  160. package/styles/material-dark-lite.scss +1 -14
  161. package/styles/material-dark.css +12 -101
  162. package/styles/material-dark.scss +2 -15
  163. package/styles/material-lite.css +8 -116
  164. package/styles/material-lite.scss +1 -13
  165. package/styles/material.css +12 -123
  166. package/styles/material.scss +2 -14
  167. package/styles/material3-dark-lite.css +11 -255
  168. package/styles/material3-dark-lite.scss +1 -14
  169. package/styles/material3-dark.css +15 -424
  170. package/styles/material3-dark.scss +2 -15
  171. package/styles/material3-lite.css +11 -259
  172. package/styles/material3-lite.scss +1 -14
  173. package/styles/material3.css +15 -432
  174. package/styles/material3.scss +2 -15
  175. package/styles/tailwind-dark-lite.css +11 -60
  176. package/styles/tailwind-dark-lite.scss +1 -14
  177. package/styles/tailwind-dark.css +15 -67
  178. package/styles/tailwind-dark.scss +2 -15
  179. package/styles/tailwind-lite.css +11 -60
  180. package/styles/tailwind-lite.scss +1 -14
  181. package/styles/tailwind.css +15 -67
  182. package/styles/tailwind.scss +2 -15
  183. package/styles/tailwind3-lite.css +10 -270
  184. package/styles/tailwind3-lite.scss +1 -14
  185. package/styles/tailwind3.css +14 -425
  186. package/styles/tailwind3.scss +2 -15
  187. package/styles/file-manager/_all.bds.scss +0 -2
  188. package/styles/file-manager/_all.bootstrap-dark.scss +0 -2
  189. package/styles/file-manager/_all.bootstrap.scss +0 -2
  190. package/styles/file-manager/_all.bootstrap4.scss +0 -2
  191. package/styles/file-manager/_all.bootstrap5-dark.scss +0 -2
  192. package/styles/file-manager/_all.bootstrap5.3.scss +0 -2
  193. package/styles/file-manager/_all.bootstrap5.scss +0 -2
  194. package/styles/file-manager/_all.fabric-dark.scss +0 -2
  195. package/styles/file-manager/_all.fabric.scss +0 -2
  196. package/styles/file-manager/_all.fluent-dark.scss +0 -2
  197. package/styles/file-manager/_all.fluent.scss +0 -2
  198. package/styles/file-manager/_all.fluent2.scss +0 -2
  199. package/styles/file-manager/_all.highcontrast-light.scss +0 -2
  200. package/styles/file-manager/_all.highcontrast.scss +0 -2
  201. package/styles/file-manager/_all.material-dark.scss +0 -2
  202. package/styles/file-manager/_all.material.scss +0 -2
  203. package/styles/file-manager/_all.material3-dark.scss +0 -2
  204. package/styles/file-manager/_all.material3.scss +0 -2
  205. package/styles/file-manager/_all.tailwind-dark.scss +0 -2
  206. package/styles/file-manager/_all.tailwind.scss +0 -2
  207. package/styles/file-manager/_all.tailwind3.scss +0 -2
  208. package/styles/file-manager/_bigger.bds.scss +0 -4
  209. package/styles/file-manager/_bigger.bootstrap-dark.scss +0 -4
  210. package/styles/file-manager/_bigger.bootstrap.scss +0 -4
  211. package/styles/file-manager/_bigger.bootstrap4.scss +0 -4
  212. package/styles/file-manager/_bigger.bootstrap5-dark.scss +0 -4
  213. package/styles/file-manager/_bigger.bootstrap5.3.scss +0 -4
  214. package/styles/file-manager/_bigger.bootstrap5.scss +0 -4
  215. package/styles/file-manager/_bigger.fabric-dark.scss +0 -4
  216. package/styles/file-manager/_bigger.fabric.scss +0 -4
  217. package/styles/file-manager/_bigger.fluent-dark.scss +0 -4
  218. package/styles/file-manager/_bigger.fluent.scss +0 -4
  219. package/styles/file-manager/_bigger.fluent2.scss +0 -4
  220. package/styles/file-manager/_bigger.highcontrast-light.scss +0 -4
  221. package/styles/file-manager/_bigger.highcontrast.scss +0 -4
  222. package/styles/file-manager/_bigger.material-dark.scss +0 -4
  223. package/styles/file-manager/_bigger.material.scss +0 -4
  224. package/styles/file-manager/_bigger.material3-dark.scss +0 -4
  225. package/styles/file-manager/_bigger.material3.scss +0 -4
  226. package/styles/file-manager/_bigger.tailwind-dark.scss +0 -4
  227. package/styles/file-manager/_bigger.tailwind.scss +0 -4
  228. package/styles/file-manager/_bigger.tailwind3.scss +0 -4
  229. package/styles/file-manager/_layout.bds.scss +0 -3
  230. package/styles/file-manager/_layout.bootstrap-dark.scss +0 -3
  231. package/styles/file-manager/_layout.bootstrap.scss +0 -3
  232. package/styles/file-manager/_layout.bootstrap4.scss +0 -3
  233. package/styles/file-manager/_layout.bootstrap5-dark.scss +0 -3
  234. package/styles/file-manager/_layout.bootstrap5.3.scss +0 -3
  235. package/styles/file-manager/_layout.bootstrap5.scss +0 -3
  236. package/styles/file-manager/_layout.fabric-dark.scss +0 -3
  237. package/styles/file-manager/_layout.fabric.scss +0 -3
  238. package/styles/file-manager/_layout.fluent-dark.scss +0 -3
  239. package/styles/file-manager/_layout.fluent.scss +0 -3
  240. package/styles/file-manager/_layout.fluent2.scss +0 -3
  241. package/styles/file-manager/_layout.highcontrast-light.scss +0 -3
  242. package/styles/file-manager/_layout.highcontrast.scss +0 -3
  243. package/styles/file-manager/_layout.material-dark.scss +0 -3
  244. package/styles/file-manager/_layout.material.scss +0 -3
  245. package/styles/file-manager/_layout.material3-dark.scss +0 -3
  246. package/styles/file-manager/_layout.material3.scss +0 -3
  247. package/styles/file-manager/_layout.tailwind-dark.scss +0 -3
  248. package/styles/file-manager/_layout.tailwind.scss +0 -3
  249. package/styles/file-manager/_layout.tailwind3.scss +0 -3
  250. package/styles/file-manager/_theme-variables.bds.scss +0 -1
  251. package/styles/file-manager/_theme-variables.bootstrap-dark.scss +0 -1
  252. package/styles/file-manager/_theme-variables.bootstrap.scss +0 -1
  253. package/styles/file-manager/_theme-variables.bootstrap4.scss +0 -1
  254. package/styles/file-manager/_theme-variables.bootstrap5-dark.scss +0 -1
  255. package/styles/file-manager/_theme-variables.bootstrap5.3.scss +0 -1
  256. package/styles/file-manager/_theme-variables.bootstrap5.scss +0 -1
  257. package/styles/file-manager/_theme-variables.fabric-dark.scss +0 -1
  258. package/styles/file-manager/_theme-variables.fabric.scss +0 -1
  259. package/styles/file-manager/_theme-variables.fluent-dark.scss +0 -1
  260. package/styles/file-manager/_theme-variables.fluent.scss +0 -1
  261. package/styles/file-manager/_theme-variables.fluent2.scss +0 -1
  262. package/styles/file-manager/_theme-variables.highcontrast-light.scss +0 -1
  263. package/styles/file-manager/_theme-variables.highcontrast.scss +0 -1
  264. package/styles/file-manager/_theme-variables.material-dark.scss +0 -1
  265. package/styles/file-manager/_theme-variables.material.scss +0 -1
  266. package/styles/file-manager/_theme-variables.material3-dark.scss +0 -1
  267. package/styles/file-manager/_theme-variables.material3.scss +0 -1
  268. package/styles/file-manager/_theme-variables.tailwind-dark.scss +0 -1
  269. package/styles/file-manager/_theme-variables.tailwind.scss +0 -1
  270. package/styles/file-manager/_theme-variables.tailwind3.scss +0 -1
  271. package/styles/file-manager/_theme.bds.scss +0 -4
  272. package/styles/file-manager/_theme.bootstrap-dark.scss +0 -4
  273. package/styles/file-manager/_theme.bootstrap.scss +0 -4
  274. package/styles/file-manager/_theme.bootstrap4.scss +0 -4
  275. package/styles/file-manager/_theme.bootstrap5-dark.scss +0 -4
  276. package/styles/file-manager/_theme.bootstrap5.3.scss +0 -4
  277. package/styles/file-manager/_theme.bootstrap5.scss +0 -4
  278. package/styles/file-manager/_theme.fabric-dark.scss +0 -4
  279. package/styles/file-manager/_theme.fabric.scss +0 -4
  280. package/styles/file-manager/_theme.fluent-dark.scss +0 -4
  281. package/styles/file-manager/_theme.fluent.scss +0 -4
  282. package/styles/file-manager/_theme.fluent2.scss +0 -4
  283. package/styles/file-manager/_theme.highcontrast-light.scss +0 -4
  284. package/styles/file-manager/_theme.highcontrast.scss +0 -4
  285. package/styles/file-manager/_theme.material-dark.scss +0 -4
  286. package/styles/file-manager/_theme.material.scss +0 -4
  287. package/styles/file-manager/_theme.material3-dark.scss +0 -4
  288. package/styles/file-manager/_theme.material3.scss +0 -4
  289. package/styles/file-manager/_theme.tailwind-dark.scss +0 -4
  290. package/styles/file-manager/_theme.tailwind.scss +0 -4
  291. package/styles/file-manager/_theme.tailwind3.scss +0 -4
@@ -3342,7 +3342,7 @@ function performReadOperation(parent, result, fn, data, event, operation, target
3342
3342
  setValue('location', location_1, result.details);
3343
3343
  }
3344
3344
  fn(parent, result, event, operation, targetPath);
3345
- if (!isNullOrUndefined(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {
3345
+ if (!isNullOrUndefined(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path' || event === 'delete-end')) {
3346
3346
  parent.notify(searchTextChange, result);
3347
3347
  }
3348
3348
  if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {
@@ -6190,7 +6190,7 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
6190
6190
  * @hidden
6191
6191
  */
6192
6192
  LargeIconsView.prototype.getFirstItem = function () {
6193
- return this.itemList[0];
6193
+ return !isNullOrUndefined(this.itemList) && this.itemList.length > 0 ? this.itemList[0] : null;
6194
6194
  };
6195
6195
  LargeIconsView.prototype.getLastItem = function () {
6196
6196
  return this.itemList[this.itemList.length - 1];
@@ -11364,6 +11364,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11364
11364
  this.dragObj = null;
11365
11365
  this.startIndex = null;
11366
11366
  this.firstItemIndex = null;
11367
+ this.currentColumnIndex = 0;
11367
11368
  this.isSelectionUpdate = false;
11368
11369
  this.currentSelectedItem = [];
11369
11370
  this.count = 0;
@@ -11371,6 +11372,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11371
11372
  this.isLoaded = false;
11372
11373
  this.isNameWidth = false;
11373
11374
  this.isMultiSelect = false;
11375
+ this.isTabKeypressed = false;
11374
11376
  this.pasteOperation = false;
11375
11377
  this.uploadOperation = false;
11376
11378
  this.nextFocusIndex = null;
@@ -11382,6 +11384,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11382
11384
  altEnter: 'alt+enter',
11383
11385
  esc: 'escape',
11384
11386
  tab: 'tab',
11387
+ shiftTab: 'shift+tab',
11385
11388
  moveDown: 'downarrow',
11386
11389
  ctrlEnd: 'ctrl+end',
11387
11390
  ctrlHome: 'ctrl+home',
@@ -11404,6 +11407,8 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11404
11407
  end: 'end',
11405
11408
  home: 'home',
11406
11409
  moveUp: 'uparrow',
11410
+ moveLeft: 'leftarrow',
11411
+ moveRight: 'rightarrow',
11407
11412
  del: 'delete',
11408
11413
  ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',
11409
11414
  ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',
@@ -11622,6 +11627,9 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11622
11627
  var pane = select('#' + this.parent.element.id + CONTENT_ID, this.parent.element);
11623
11628
  var bar = select('#' + this.parent.element.id + BREADCRUMBBAR_ID, this.parent.element);
11624
11629
  var gridHeader = select('.' + GRID_HEADER, this.parent.element);
11630
+ if (isNullOrUndefined(pane) || isNullOrUndefined(bar) || isNullOrUndefined(gridHeader)) {
11631
+ return;
11632
+ }
11625
11633
  var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);
11626
11634
  this.gridObj.height = height;
11627
11635
  this.gridObj.dataBind();
@@ -11831,9 +11839,11 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11831
11839
  }
11832
11840
  }
11833
11841
  if (typeof this.nextFocusIndex === 'number') {
11834
- var rowCount = this.gridObj.getRows().length;
11835
- if (rowCount > 0) {
11836
- this.addFocus(this.nextFocusIndex >= rowCount ? rowCount : this.nextFocusIndex);
11842
+ if (!isNullOrUndefined(this.gridObj.getRows())) {
11843
+ var rowCount = this.gridObj.getRows().length;
11844
+ if (rowCount > 0) {
11845
+ this.addFocus(this.nextFocusIndex >= rowCount ? rowCount : this.nextFocusIndex);
11846
+ }
11837
11847
  }
11838
11848
  this.nextFocusIndex = null;
11839
11849
  }
@@ -12594,7 +12604,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
12594
12604
  this.openContent(args.data);
12595
12605
  }
12596
12606
  }
12597
- this.parent.visitedItem = args.row;
12607
+ this.parent.visitedItem = (Array.isArray(args.row) ? args.row[args.row.length - 1] : args.row);
12598
12608
  if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {
12599
12609
  this.addFocus(this.gridObj.selectedRowIndex);
12600
12610
  }
@@ -12741,8 +12751,21 @@ var DetailsView = /** @__PURE__ @class */ (function () {
12741
12751
  }
12742
12752
  };
12743
12753
  DetailsView.prototype.getFocusedItemIndex = function () {
12744
- return (!isNullOrUndefined(this.getFocusedItem())) ?
12745
- parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) - 1 : null;
12754
+ var focusedItem = this.getFocusedItem();
12755
+ if (isNullOrUndefined(focusedItem)) {
12756
+ return null;
12757
+ }
12758
+ if (focusedItem.classList.contains('e-rowcell')) {
12759
+ return this.getRowIndexFromParent(focusedItem);
12760
+ }
12761
+ return parseInt(focusedItem.getAttribute('aria-rowindex'), 10) - 1;
12762
+ };
12763
+ DetailsView.prototype.getRowIndexFromParent = function (focusedItem) {
12764
+ var parentRow = focusedItem.parentElement;
12765
+ if (parentRow && parentRow.classList.contains('e-row')) {
12766
+ return parseInt(parentRow.getAttribute('aria-rowindex'), 10) - 1;
12767
+ }
12768
+ return null;
12746
12769
  };
12747
12770
  /* istanbul ignore next */
12748
12771
  DetailsView.prototype.keydownHandler = function (e) {
@@ -12771,6 +12794,8 @@ var DetailsView = /** @__PURE__ @class */ (function () {
12771
12794
  case 'ctrlLeft':
12772
12795
  case 'shiftLeft':
12773
12796
  case 'csLeft':
12797
+ case 'tab':
12798
+ case 'shiftTab':
12774
12799
  case 'esc':
12775
12800
  case 'del':
12776
12801
  case 'shiftdel':
@@ -12780,6 +12805,8 @@ var DetailsView = /** @__PURE__ @class */ (function () {
12780
12805
  case 'f2':
12781
12806
  case 'moveDown':
12782
12807
  case 'moveUp':
12808
+ case 'moveLeft':
12809
+ case 'moveRight':
12783
12810
  case 'ctrlD':
12784
12811
  e.preventDefault();
12785
12812
  break;
@@ -12860,12 +12887,18 @@ var DetailsView = /** @__PURE__ @class */ (function () {
12860
12887
  break;
12861
12888
  case 'ctrlHome':
12862
12889
  case 'tab':
12890
+ case 'shiftTab':
12863
12891
  if (!isNullOrUndefined(gridItems[0])) {
12864
12892
  if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {
12865
12893
  this.gridObj.selectRow(0);
12866
12894
  }
12867
- else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {
12868
- return;
12895
+ else if (e.action === 'shiftTab') {
12896
+ this.handleReverseTabNavigation(e);
12897
+ }
12898
+ else if (e.action === 'tab') {
12899
+ this.isTabKeypressed = true;
12900
+ this.addHeaderFocus(e);
12901
+ this.isTabKeypressed = false;
12869
12902
  }
12870
12903
  else {
12871
12904
  this.addHeaderFocus(e);
@@ -12935,6 +12968,10 @@ var DetailsView = /** @__PURE__ @class */ (function () {
12935
12968
  case 'moveDown':
12936
12969
  this.moveFunction(gridItems, e, selIndex);
12937
12970
  break;
12971
+ case 'moveLeft':
12972
+ case 'moveRight':
12973
+ this.moveColumn(e);
12974
+ break;
12938
12975
  case 'end':
12939
12976
  lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];
12940
12977
  this.parent.setProperties({ selectedItems: lastItem }, true);
@@ -13065,6 +13102,72 @@ var DetailsView = /** @__PURE__ @class */ (function () {
13065
13102
  }
13066
13103
  this.addFocus(nextItem);
13067
13104
  };
13105
+ DetailsView.prototype.moveColumn = function (e) {
13106
+ var focusedItem = this.getFocusedItem();
13107
+ if (isNullOrUndefined(focusedItem)) {
13108
+ return;
13109
+ }
13110
+ var isHeaderFocused = focusedItem.classList.contains('e-headercell');
13111
+ var isRowFocused = focusedItem.classList.contains('e-row');
13112
+ var isCellFocused = focusedItem.classList.contains('e-rowcell');
13113
+ if (!isHeaderFocused && !isRowFocused && !isCellFocused) {
13114
+ return;
13115
+ }
13116
+ if (isHeaderFocused) {
13117
+ var headers = Array.from(this.element.querySelectorAll('th.e-headercell:not(.e-fe-checkbox)'));
13118
+ var currentIndex = headers.indexOf(focusedItem);
13119
+ if (currentIndex === -1) {
13120
+ return;
13121
+ }
13122
+ var nextIndex = this.getNextColumnIndex(currentIndex, headers.length, e.action === 'moveRight');
13123
+ // eslint-disable-next-line security/detect-object-injection
13124
+ var headerElement = headers[nextIndex];
13125
+ focusedItem.setAttribute('tabindex', '-1');
13126
+ removeClass([focusedItem], [FOCUS, FOCUSED]);
13127
+ headerElement.setAttribute('tabindex', '0');
13128
+ headerElement.focus();
13129
+ addClass([headerElement], [FOCUS, FOCUSED]);
13130
+ }
13131
+ else if (isRowFocused || isCellFocused) {
13132
+ var row = (isRowFocused ? focusedItem : focusedItem.parentElement);
13133
+ if (!isRowFocused && (!row || !row.classList.contains('e-row'))) {
13134
+ return;
13135
+ }
13136
+ var cells = Array.from(row.querySelectorAll('.e-rowcell'));
13137
+ if (cells.length === 0) {
13138
+ return;
13139
+ }
13140
+ var currentCellIndex = this.currentColumnIndex || 0;
13141
+ var nextColumnIndex = this.getNextColumnIndex(currentCellIndex, cells.length, e.action === 'moveRight');
13142
+ this.currentColumnIndex = nextColumnIndex;
13143
+ if (isRowFocused) {
13144
+ removeClass([row], [FOCUS, FOCUSED]);
13145
+ row.setAttribute('tabindex', '-1');
13146
+ }
13147
+ else {
13148
+ removeClass([focusedItem], [FOCUS, FOCUSED]);
13149
+ focusedItem.setAttribute('tabindex', '-1');
13150
+ }
13151
+ this.clearCellFocus(cells);
13152
+ // eslint-disable-next-line security/detect-object-injection
13153
+ var nextCell = cells[nextColumnIndex];
13154
+ nextCell.setAttribute('tabindex', '0');
13155
+ addClass([nextCell], [FOCUS, FOCUSED]);
13156
+ nextCell.focus();
13157
+ }
13158
+ };
13159
+ DetailsView.prototype.clearCellFocus = function (cells) {
13160
+ for (var i = 0; i < cells.length; i++) {
13161
+ cells[i].setAttribute('tabindex', '-1');
13162
+ removeClass([cells[i]], [FOCUS, FOCUSED]);
13163
+ }
13164
+ };
13165
+ DetailsView.prototype.getNextColumnIndex = function (currentIndex, maxLength, isRight) {
13166
+ if (isRight) {
13167
+ return Math.min(currentIndex + 1, maxLength - 1);
13168
+ }
13169
+ return Math.max(currentIndex - 1, 0);
13170
+ };
13068
13171
  DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {
13069
13172
  if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {
13070
13173
  if (e.action !== 'csHome' && e.action !== 'csEnd') {
@@ -13150,18 +13253,58 @@ var DetailsView = /** @__PURE__ @class */ (function () {
13150
13253
  if (fItem) {
13151
13254
  fItem.removeAttribute('tabindex');
13152
13255
  removeClass([fItem], [FOCUS, FOCUSED]);
13256
+ if (fItem.classList.contains('e-rowcell')) {
13257
+ var parentRow = fItem.parentElement;
13258
+ if (parentRow) {
13259
+ removeClass([parentRow], [FOCUS, FOCUSED]);
13260
+ parentRow.removeAttribute('tabindex');
13261
+ }
13262
+ }
13263
+ if (fItem.classList.contains('e-row')) {
13264
+ var focusedCells = fItem.querySelectorAll('.e-rowcell');
13265
+ for (var i = 0; i < focusedCells.length; i++) {
13266
+ if (focusedCells[i].classList.contains('e-focus') || focusedCells[i].classList.contains('e-focused')) {
13267
+ focusedCells[i].removeAttribute('tabindex');
13268
+ removeClass([focusedCells[i]], [FOCUS, FOCUSED]);
13269
+ }
13270
+ }
13271
+ }
13153
13272
  }
13154
13273
  if (!isNullOrUndefined(itemElement)) {
13155
13274
  this.gridObj.element.setAttribute('tabindex', '-1');
13156
- itemElement.setAttribute('tabindex', '0');
13157
- itemElement.focus();
13158
- addClass([itemElement], [FOCUS, FOCUSED]);
13275
+ var targetRow = itemElement;
13276
+ targetRow.setAttribute('tabindex', '0');
13277
+ var cells = targetRow.querySelectorAll('.e-rowcell');
13278
+ this.clearCellFocus(Array.from(cells));
13279
+ targetRow.focus();
13280
+ addClass([targetRow], [FOCUS, FOCUSED]);
13281
+ this.currentColumnIndex = 0;
13159
13282
  }
13160
13283
  };
13161
13284
  DetailsView.prototype.addHeaderFocus = function (e) {
13162
13285
  var treeFocus = select('.e-row', this.element);
13163
13286
  this.gridObj.element.setAttribute('tabindex', '-1');
13287
+ var isHeaderFocused = this.getFocusedItem();
13164
13288
  var nameFocus;
13289
+ var focusedRow = select('.e-row.e-focus', this.element);
13290
+ var gridIconCell;
13291
+ if (!isNullOrUndefined(focusedRow) && this.isTabKeypressed) {
13292
+ gridIconCell = select('.e-rowcell.e-fe-grid-icon', focusedRow);
13293
+ }
13294
+ else {
13295
+ if (this.isTabKeypressed) {
13296
+ var activeCell = this.getFocusedItem();
13297
+ if (activeCell && activeCell.classList.contains('e-rowcell')) {
13298
+ gridIconCell = select('.e-rowcell.e-fe-grid-icon', activeCell.closest('.e-row'));
13299
+ }
13300
+ else {
13301
+ gridIconCell = select('.e-rowcell.e-fe-grid-icon', this.element);
13302
+ }
13303
+ }
13304
+ }
13305
+ if (this.tryNavigateToNextCellInRow(focusedRow, gridIconCell, isHeaderFocused)) {
13306
+ return;
13307
+ }
13165
13308
  if (!isNullOrUndefined(e.target) && e.target.classList.contains('e-defaultcursor')) {
13166
13309
  this.addFocus(0);
13167
13310
  nameFocus = e.target.nextElementSibling;
@@ -13183,6 +13326,147 @@ var DetailsView = /** @__PURE__ @class */ (function () {
13183
13326
  }
13184
13327
  }
13185
13328
  };
13329
+ DetailsView.prototype.tryNavigateToNextCellInRow = function (focusedRow, gridIconCell, isHeaderFocused) {
13330
+ if ((!isNullOrUndefined(focusedRow) || !isNullOrUndefined(gridIconCell)) && (!isNullOrUndefined(isHeaderFocused) && !isHeaderFocused.classList.contains('e-headercell'))) {
13331
+ if (!isNullOrUndefined(gridIconCell)) {
13332
+ var activeCell = this.getFocusedItem();
13333
+ if (activeCell && activeCell.classList.contains('e-rowcell')) {
13334
+ var row = activeCell.parentElement;
13335
+ var cells = row ? Array.from(row.querySelectorAll('.e-rowcell')) : [];
13336
+ var currentIndex = cells.indexOf(activeCell);
13337
+ var nextIndex = currentIndex + 1;
13338
+ if (nextIndex < cells.length) {
13339
+ this.currentColumnIndex = nextIndex;
13340
+ activeCell.setAttribute('tabindex', '-1');
13341
+ removeClass([activeCell], [FOCUS, FOCUSED]);
13342
+ // eslint-disable-next-line security/detect-object-injection
13343
+ var nextCell = cells[nextIndex];
13344
+ nextCell.setAttribute('tabindex', '0');
13345
+ addClass([nextCell], [FOCUS, FOCUSED]);
13346
+ nextCell.focus();
13347
+ return true;
13348
+ }
13349
+ else {
13350
+ var currentRow = activeCell.parentElement;
13351
+ var rows = this.gridObj.getRows();
13352
+ var currentRowIndex = rows.indexOf(currentRow);
13353
+ if (currentRowIndex !== -1) {
13354
+ var nextRow = this.gridObj.getRowByIndex(currentRowIndex + 1);
13355
+ if (!isNullOrUndefined(nextRow)) {
13356
+ activeCell.setAttribute('tabindex', '-1');
13357
+ removeClass([activeCell], [FOCUS, FOCUSED]);
13358
+ this.addFocus(currentRowIndex + 1);
13359
+ return true;
13360
+ }
13361
+ else {
13362
+ activeCell.setAttribute('tabindex', '-1');
13363
+ removeClass([activeCell], [FOCUS, FOCUSED]);
13364
+ activeCell.blur();
13365
+ return true;
13366
+ }
13367
+ }
13368
+ return false;
13369
+ }
13370
+ }
13371
+ var focusedRow_1 = this.getFocusedItem();
13372
+ if (!isNullOrUndefined(focusedRow_1) && focusedRow_1.classList.contains('e-row')) {
13373
+ focusedRow_1.setAttribute('tabindex', '-1');
13374
+ removeClass([focusedRow_1], [FOCUS, FOCUSED]);
13375
+ }
13376
+ gridIconCell.setAttribute('tabindex', '0');
13377
+ addClass([gridIconCell], [FOCUS, FOCUSED]);
13378
+ gridIconCell.focus();
13379
+ return true;
13380
+ }
13381
+ }
13382
+ return false;
13383
+ };
13384
+ DetailsView.prototype.handleReverseTabNavigation = function (e) {
13385
+ e.preventDefault();
13386
+ var focusedItem = this.getFocusedItem();
13387
+ var headers = Array.from(this.element.querySelectorAll('th.e-headercell:not(.e-fe-checkbox)'));
13388
+ if (headers.length === 0) {
13389
+ return;
13390
+ }
13391
+ if (!isNullOrUndefined(focusedItem) && focusedItem.classList.contains('e-rowcell')) {
13392
+ var row = focusedItem.parentElement;
13393
+ var cells = row ? Array.from(row.querySelectorAll('.e-rowcell:not(.e-gridchkbox)')) : [];
13394
+ var currentTargetIndex = cells.indexOf(focusedItem);
13395
+ var prevIndex = currentTargetIndex - 1;
13396
+ // eslint-disable-next-line security/detect-object-injection
13397
+ var targetElement = prevIndex >= 0 ? cells[prevIndex] : row;
13398
+ focusedItem.setAttribute('tabindex', '-1');
13399
+ removeClass([focusedItem], [FOCUS, FOCUSED]);
13400
+ targetElement.setAttribute('tabindex', '0');
13401
+ addClass([targetElement], [FOCUS, FOCUSED]);
13402
+ targetElement.focus();
13403
+ return;
13404
+ }
13405
+ if (!isNullOrUndefined(focusedItem) && focusedItem.classList.contains('e-row')) {
13406
+ var rows = this.gridObj.getRows();
13407
+ var currentRowIndex = rows.indexOf(focusedItem);
13408
+ if (currentRowIndex > 0) {
13409
+ var previousRow = rows[currentRowIndex - 1];
13410
+ var previousRowCells = Array.from(previousRow.querySelectorAll('.e-rowcell:not(.e-gridchkbox)'));
13411
+ var lastCell = previousRowCells[previousRowCells.length - 1];
13412
+ focusedItem.setAttribute('tabindex', '-1');
13413
+ removeClass([focusedItem], [FOCUS, FOCUSED]);
13414
+ lastCell.setAttribute('tabindex', '0');
13415
+ addClass([lastCell], [FOCUS, FOCUSED]);
13416
+ lastCell.focus();
13417
+ return;
13418
+ }
13419
+ focusedItem.setAttribute('tabindex', '-1');
13420
+ removeClass([focusedItem], [FOCUS, FOCUSED]);
13421
+ this.moveFocusToHeader(headers[headers.length - 1]);
13422
+ return;
13423
+ }
13424
+ if (!isNullOrUndefined(focusedItem) && focusedItem.classList.contains('e-headercell')) {
13425
+ var currentIndex = headers.indexOf(focusedItem);
13426
+ if (currentIndex > 0) {
13427
+ this.moveFocusToHeader(headers[currentIndex - 1]);
13428
+ }
13429
+ else if (currentIndex === 0) {
13430
+ this.clearDetailsFocus();
13431
+ }
13432
+ return;
13433
+ }
13434
+ if (!isNullOrUndefined(focusedItem)) {
13435
+ this.moveFocusToHeader(headers[headers.length - 1]);
13436
+ }
13437
+ };
13438
+ DetailsView.prototype.moveFocusToHeader = function (header) {
13439
+ var focusedItem = this.getFocusedItem();
13440
+ if (!isNullOrUndefined(focusedItem)) {
13441
+ focusedItem.setAttribute('tabindex', '-1');
13442
+ removeClass([focusedItem], [FOCUS, FOCUSED]);
13443
+ }
13444
+ header.setAttribute('tabindex', '0');
13445
+ header.focus();
13446
+ addClass([header], [FOCUS, FOCUSED]);
13447
+ };
13448
+ DetailsView.prototype.clearDetailsFocus = function () {
13449
+ var focusedItem = this.getFocusedItem();
13450
+ if (!isNullOrUndefined(focusedItem)) {
13451
+ focusedItem.setAttribute('tabindex', '-1');
13452
+ removeClass([focusedItem], [FOCUS, FOCUSED]);
13453
+ }
13454
+ var breadcrumbBar = select('.' + BREADCRUMBS, this.parent.element);
13455
+ if (!isNullOrUndefined(breadcrumbBar)) {
13456
+ var searchInput = breadcrumbBar.querySelector('input[aria-label="Search"]');
13457
+ if (!isNullOrUndefined(searchInput)) {
13458
+ searchInput.setAttribute('tabindex', '0');
13459
+ searchInput.focus();
13460
+ }
13461
+ else {
13462
+ var lastBreadcrumb = breadcrumbBar.querySelector('.e-address-list-item:last-child');
13463
+ if (!isNullOrUndefined(lastBreadcrumb)) {
13464
+ lastBreadcrumb.setAttribute('tabindex', '0');
13465
+ lastBreadcrumb.focus();
13466
+ }
13467
+ }
13468
+ }
13469
+ };
13186
13470
  DetailsView.prototype.getFocusedItem = function () {
13187
13471
  return select('.' + FOCUSED, this.element);
13188
13472
  };