@syncfusion/ej2-filemanager 20.1.47 → 20.1.52-10459

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 (203) hide show
  1. package/.eslintrc.json +20 -3
  2. package/README.md +54 -43
  3. package/dist/ej2-filemanager.min.js +1 -0
  4. package/dist/ej2-filemanager.umd.min.js +1 -10
  5. package/dist/ej2-filemanager.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-filemanager.es2015.js +2353 -659
  7. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  8. package/dist/es6/ej2-filemanager.es5.js +2422 -709
  9. package/dist/es6/ej2-filemanager.es5.js.map +1 -1
  10. package/dist/global/ej2-filemanager.min.js +1 -10
  11. package/dist/global/ej2-filemanager.min.js.map +1 -1
  12. package/dist/global/index.d.ts +0 -9
  13. package/helpers/e2e/filemanagerHelper.js +183 -166
  14. package/package.json +71 -71
  15. package/src/file-manager/actions/breadcrumb-bar.js +1 -5
  16. package/src/file-manager/actions/index.d.ts +1 -0
  17. package/src/file-manager/actions/index.js +1 -0
  18. package/src/file-manager/actions/toolbar.d.ts +1 -0
  19. package/src/file-manager/actions/toolbar.js +129 -17
  20. package/src/file-manager/actions/virtualization.d.ts +93 -0
  21. package/src/file-manager/actions/virtualization.js +279 -0
  22. package/src/file-manager/base/file-manager-model.d.ts +154 -28
  23. package/src/file-manager/base/file-manager.d.ts +176 -27
  24. package/src/file-manager/base/file-manager.js +244 -28
  25. package/src/file-manager/base/interface.d.ts +329 -3
  26. package/src/file-manager/base/interface.js +0 -1
  27. package/src/file-manager/common/operations.d.ts +7 -0
  28. package/src/file-manager/common/operations.js +830 -185
  29. package/src/file-manager/common/utility.d.ts +46 -3
  30. package/src/file-manager/common/utility.js +249 -73
  31. package/src/file-manager/index.d.ts +1 -0
  32. package/src/file-manager/index.js +1 -0
  33. package/src/file-manager/layout/details-view.d.ts +10 -0
  34. package/src/file-manager/layout/details-view.js +203 -94
  35. package/src/file-manager/layout/large-icons-view.d.ts +4 -2
  36. package/src/file-manager/layout/large-icons-view.js +122 -73
  37. package/src/file-manager/layout/navigation-pane.d.ts +2 -0
  38. package/src/file-manager/layout/navigation-pane.js +97 -73
  39. package/src/file-manager/models/column-model.d.ts +23 -5
  40. package/src/file-manager/models/column.d.ts +21 -2
  41. package/src/file-manager/models/column.js +6 -0
  42. package/src/file-manager/models/default-locale.js +0 -1
  43. package/src/file-manager/models/details-view-settings-model.d.ts +1 -1
  44. package/src/file-manager/models/details-view-settings.js +8 -3
  45. package/src/file-manager/models/search-settings.d.ts +5 -0
  46. package/src/file-manager/models/toolbar-settings-model.d.ts +177 -2
  47. package/src/file-manager/models/toolbar-settings.d.ts +157 -2
  48. package/src/file-manager/models/toolbar-settings.js +64 -2
  49. package/src/file-manager/models/upload-settings-model.d.ts +13 -0
  50. package/src/file-manager/models/upload-settings.d.ts +12 -0
  51. package/src/file-manager/models/upload-settings.js +3 -0
  52. package/src/file-manager/pop-up/context-menu.d.ts +2 -1
  53. package/src/file-manager/pop-up/context-menu.js +111 -36
  54. package/src/file-manager/pop-up/dialog.d.ts +1 -2
  55. package/src/file-manager/pop-up/dialog.js +19 -40
  56. package/src/global.js +1 -1
  57. package/styles/bootstrap-dark-lite.css +1058 -0
  58. package/styles/bootstrap-dark-lite.scss +16 -0
  59. package/styles/bootstrap-dark.css +371 -665
  60. package/styles/bootstrap-dark.scss +17 -1
  61. package/styles/bootstrap-lite.css +1040 -0
  62. package/styles/bootstrap-lite.scss +16 -0
  63. package/styles/bootstrap.css +353 -644
  64. package/styles/bootstrap.scss +17 -1
  65. package/styles/bootstrap4-lite.css +1068 -0
  66. package/styles/bootstrap4-lite.scss +16 -0
  67. package/styles/bootstrap4.css +381 -680
  68. package/styles/bootstrap4.scss +17 -1
  69. package/styles/bootstrap5-dark-lite.css +1078 -0
  70. package/styles/bootstrap5-dark-lite.scss +16 -0
  71. package/styles/bootstrap5-dark.css +376 -694
  72. package/styles/bootstrap5-dark.scss +17 -1
  73. package/styles/bootstrap5-lite.css +1078 -0
  74. package/styles/bootstrap5-lite.scss +16 -0
  75. package/styles/bootstrap5.3-lite.css +1035 -0
  76. package/styles/bootstrap5.3-lite.scss +16 -0
  77. package/styles/bootstrap5.3.css +1603 -0
  78. package/styles/bootstrap5.3.scss +17 -0
  79. package/styles/bootstrap5.css +376 -694
  80. package/styles/bootstrap5.scss +17 -1
  81. package/styles/fabric-dark-lite.css +1039 -0
  82. package/styles/fabric-dark-lite.scss +16 -0
  83. package/styles/fabric-dark.css +358 -642
  84. package/styles/fabric-dark.scss +17 -1
  85. package/styles/fabric-lite.css +1039 -0
  86. package/styles/fabric-lite.scss +16 -0
  87. package/styles/fabric.css +357 -641
  88. package/styles/fabric.scss +17 -1
  89. package/styles/file-manager/_all.scss +1 -1
  90. package/styles/file-manager/_bds-definition.scss +236 -0
  91. package/styles/file-manager/_bigger.scss +758 -0
  92. package/styles/file-manager/_bootstrap-dark-definition.scss +6 -2
  93. package/styles/file-manager/_bootstrap-definition.scss +6 -2
  94. package/styles/file-manager/_bootstrap4-definition.scss +6 -2
  95. package/styles/file-manager/_bootstrap5-definition.scss +20 -15
  96. package/styles/file-manager/_bootstrap5.3-definition.scss +242 -0
  97. package/styles/file-manager/_fabric-dark-definition.scss +6 -2
  98. package/styles/file-manager/_fabric-definition.scss +6 -2
  99. package/styles/file-manager/_fluent-definition.scss +20 -16
  100. package/styles/file-manager/_fluent2-definition.scss +255 -0
  101. package/styles/file-manager/_fusionnew-definition.scss +241 -0
  102. package/styles/file-manager/_highcontrast-definition.scss +6 -2
  103. package/styles/file-manager/_highcontrast-light-definition.scss +6 -2
  104. package/styles/file-manager/_layout.scss +367 -921
  105. package/styles/file-manager/_material-dark-definition.scss +7 -2
  106. package/styles/file-manager/_material-definition.scss +7 -2
  107. package/styles/file-manager/_material3-dark-definition.scss +1 -0
  108. package/styles/file-manager/_material3-definition.scss +235 -0
  109. package/styles/file-manager/_tailwind-definition.scss +20 -16
  110. package/styles/file-manager/_theme.scss +126 -102
  111. package/styles/file-manager/bootstrap-dark.css +371 -665
  112. package/styles/file-manager/bootstrap-dark.scss +2 -1
  113. package/styles/file-manager/bootstrap.css +353 -644
  114. package/styles/file-manager/bootstrap.scss +2 -1
  115. package/styles/file-manager/bootstrap4.css +381 -680
  116. package/styles/file-manager/bootstrap4.scss +2 -1
  117. package/styles/file-manager/bootstrap5-dark.css +376 -694
  118. package/styles/file-manager/bootstrap5-dark.scss +2 -1
  119. package/styles/file-manager/bootstrap5.3.css +1603 -0
  120. package/styles/file-manager/bootstrap5.3.scss +17 -0
  121. package/styles/file-manager/bootstrap5.css +376 -694
  122. package/styles/file-manager/bootstrap5.scss +2 -1
  123. package/styles/file-manager/fabric-dark.css +358 -642
  124. package/styles/file-manager/fabric-dark.scss +2 -1
  125. package/styles/file-manager/fabric.css +357 -641
  126. package/styles/file-manager/fabric.scss +2 -1
  127. package/styles/file-manager/fluent-dark.css +359 -641
  128. package/styles/file-manager/fluent-dark.scss +2 -1
  129. package/styles/file-manager/fluent.css +358 -641
  130. package/styles/file-manager/fluent.scss +2 -1
  131. package/styles/file-manager/fluent2.css +1886 -0
  132. package/styles/file-manager/fluent2.scss +17 -0
  133. package/styles/file-manager/highcontrast-light.css +354 -644
  134. package/styles/file-manager/highcontrast-light.scss +2 -1
  135. package/styles/file-manager/highcontrast.css +377 -647
  136. package/styles/file-manager/highcontrast.scss +2 -1
  137. package/styles/file-manager/icons/_bds.scss +235 -0
  138. package/styles/file-manager/icons/_bootstrap.scss +0 -1
  139. package/styles/file-manager/icons/_bootstrap4.scss +0 -1
  140. package/styles/file-manager/icons/_bootstrap5.3.scss +235 -0
  141. package/styles/file-manager/icons/_fabric-dark.scss +0 -1
  142. package/styles/file-manager/icons/_fabric.scss +0 -1
  143. package/styles/file-manager/icons/_fluent2.scss +235 -0
  144. package/styles/file-manager/icons/_fusionnew.scss +235 -0
  145. package/styles/file-manager/icons/_material3-dark.scss +1 -0
  146. package/styles/file-manager/icons/_material3.scss +235 -0
  147. package/styles/file-manager/material-dark.css +392 -671
  148. package/styles/file-manager/material-dark.scss +2 -1
  149. package/styles/file-manager/material.css +391 -654
  150. package/styles/file-manager/material.scss +2 -1
  151. package/styles/file-manager/material3-dark.css +1633 -0
  152. package/styles/file-manager/material3-dark.scss +18 -0
  153. package/styles/file-manager/material3.css +1635 -0
  154. package/styles/file-manager/material3.scss +18 -0
  155. package/styles/file-manager/tailwind-dark.css +347 -664
  156. package/styles/file-manager/tailwind-dark.scss +2 -1
  157. package/styles/file-manager/tailwind.css +347 -664
  158. package/styles/file-manager/tailwind.scss +2 -1
  159. package/styles/fluent-dark-lite.css +1037 -0
  160. package/styles/fluent-dark-lite.scss +16 -0
  161. package/styles/fluent-dark.css +359 -641
  162. package/styles/fluent-dark.scss +17 -1
  163. package/styles/fluent-lite.css +1036 -0
  164. package/styles/fluent-lite.scss +16 -0
  165. package/styles/fluent.css +358 -641
  166. package/styles/fluent.scss +17 -1
  167. package/styles/fluent2-lite.css +1272 -0
  168. package/styles/fluent2-lite.scss +16 -0
  169. package/styles/fluent2.css +1886 -0
  170. package/styles/fluent2.scss +17 -0
  171. package/styles/highcontrast-light-lite.css +1039 -0
  172. package/styles/highcontrast-light-lite.scss +16 -0
  173. package/styles/highcontrast-light.css +354 -644
  174. package/styles/highcontrast-light.scss +17 -1
  175. package/styles/highcontrast-lite.css +1059 -0
  176. package/styles/highcontrast-lite.scss +16 -0
  177. package/styles/highcontrast.css +377 -647
  178. package/styles/highcontrast.scss +17 -1
  179. package/styles/material-dark-lite.css +1092 -0
  180. package/styles/material-dark-lite.scss +16 -0
  181. package/styles/material-dark.css +392 -671
  182. package/styles/material-dark.scss +17 -1
  183. package/styles/material-lite.css +1097 -0
  184. package/styles/material-lite.scss +16 -0
  185. package/styles/material.css +391 -654
  186. package/styles/material.scss +17 -1
  187. package/styles/material3-dark-lite.css +1090 -0
  188. package/styles/material3-dark-lite.scss +16 -0
  189. package/styles/material3-dark.css +1633 -0
  190. package/styles/material3-dark.scss +19 -0
  191. package/styles/material3-lite.css +1092 -0
  192. package/styles/material3-lite.scss +16 -0
  193. package/styles/material3.css +1635 -0
  194. package/styles/material3.scss +19 -0
  195. package/styles/tailwind-dark-lite.css +1060 -0
  196. package/styles/tailwind-dark-lite.scss +16 -0
  197. package/styles/tailwind-dark.css +347 -664
  198. package/styles/tailwind-dark.scss +17 -1
  199. package/styles/tailwind-lite.css +1060 -0
  200. package/styles/tailwind-lite.scss +16 -0
  201. package/styles/tailwind.css +347 -664
  202. package/styles/tailwind.scss +17 -1
  203. package/CHANGELOG.md +0 -404
@@ -1,7 +1,7 @@
1
1
  import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';
2
2
  import { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';
3
3
  import { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';
4
- import { Internationalization, closest, Draggable } from '@syncfusion/ej2-base';
4
+ import { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';
5
5
  import { DataManager, Query } from '@syncfusion/ej2-data';
6
6
  import { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';
7
7
  import * as events from '../base/constant';
@@ -14,6 +14,7 @@ import { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHand
14
14
  import { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';
15
15
  import { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';
16
16
  import { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';
17
+ /* eslint-disable @typescript-eslint/no-explicit-any */
17
18
  /**
18
19
  * DetailsView module
19
20
  */
@@ -71,15 +72,16 @@ var DetailsView = /** @class */ (function () {
71
72
  home: 'home',
72
73
  moveUp: 'uparrow',
73
74
  del: 'delete',
74
- ctrlX: 'ctrl+x',
75
- ctrlC: 'ctrl+c',
76
- ctrlV: 'ctrl+v',
75
+ ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',
76
+ ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',
77
+ ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',
77
78
  ctrlShiftN: 'ctrl+shift+n',
78
79
  shiftdel: 'shift+delete',
79
80
  ctrlD: 'ctrl+d',
80
81
  f2: 'f2',
81
82
  ctrlA: 'ctrl+a',
82
- enter: 'enter'
83
+ enter: 'enter',
84
+ back: 'backspace'
83
85
  };
84
86
  }
85
87
  /* istanbul ignore next */
@@ -87,7 +89,6 @@ var DetailsView = /** @class */ (function () {
87
89
  showSpinner(this.parent.element);
88
90
  if (this.parent.view === 'Details') {
89
91
  removeClass([this.parent.element], CLS.MULTI_SELECT);
90
- // eslint-disable-next-line
91
92
  var items = getSortedData(this.parent, args.files);
92
93
  this.checkNameWidth();
93
94
  var columns = this.getColumns();
@@ -114,6 +115,9 @@ var DetailsView = /** @class */ (function () {
114
115
  },
115
116
  enableRtl: this.parent.enableRtl,
116
117
  pageSettings: { pageSize: 20 },
118
+ enableVirtualization: this.parent.enableVirtualization,
119
+ enablePersistence: this.parent.enablePersistence,
120
+ enableVirtualMaskRow: true,
117
121
  sortSettings: { allowUnsort: false, columns: sortSettings },
118
122
  columns: columns,
119
123
  recordDoubleClick: this.DblClickEvents.bind(this),
@@ -123,13 +127,18 @@ var DetailsView = /** @class */ (function () {
123
127
  actionBegin: this.onActionBegin.bind(this),
124
128
  headerCellInfo: this.onHeaderCellInfo.bind(this),
125
129
  width: '100%',
130
+ height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',
126
131
  beforeCopy: function (args) { args.cancel = true; },
127
- // eslint-disable-next-line
128
- load: function (args) {
132
+ load: function () {
129
133
  this.focusModule.destroy();
130
134
  },
131
135
  locale: this.parent.locale
132
136
  });
137
+ if (this.parent.isReact) {
138
+ this.gridObj.isReact = true;
139
+ this.gridObj.portals = [];
140
+ this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);
141
+ }
133
142
  this.gridObj.isStringTemplate = true;
134
143
  this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);
135
144
  this.wireEvents();
@@ -137,6 +146,30 @@ var DetailsView = /** @class */ (function () {
137
146
  this.emptyArgs = args;
138
147
  }
139
148
  };
149
+ DetailsView.prototype.reactTemplateRender = function (args) {
150
+ this.parent['portals'] = args;
151
+ if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&
152
+ this.parent.toolbarModule.toolbarObj.portals) {
153
+ this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);
154
+ }
155
+ this.parent.notify('renderReactTemplate', this.parent['portals']);
156
+ this.parent['renderReactTemplates']();
157
+ };
158
+ /**
159
+ * Gets the grid height.
160
+ *
161
+ * @returns {number} - The grid height.
162
+ * @private
163
+ */
164
+ DetailsView.prototype.getGridHeight = function () {
165
+ // Get the content pane and breadcrumb bar elements
166
+ var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);
167
+ var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);
168
+ // The maximum height of the header is 36
169
+ var headerMaxHeight = 36;
170
+ // Calculate and return the grid height
171
+ return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);
172
+ };
140
173
  DetailsView.prototype.checkNameWidth = function () {
141
174
  var initialColumn = this.parent.detailsViewSettings.columns;
142
175
  this.isNameWidth = false;
@@ -166,30 +199,48 @@ var DetailsView = /** @class */ (function () {
166
199
  };
167
200
  DetailsView.prototype.getColumns = function () {
168
201
  var columns;
202
+ var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;
169
203
  if (this.parent.isMobile) {
170
204
  columns = [
171
205
  {
172
206
  field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',
173
- template: '<div class="e-fe-text">${name}</div><div class="e-fe-date">${_fm_modified}</div>' +
174
- '<span class="e-fe-size">${size}</span>'
207
+ template: initializeCSPTemplate(function (data) {
208
+ var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;
209
+ return "<div class=\"e-fe-text\">" + name + "</div><div class=\"e-fe-date\">" + data._fm_modified + "</div><span class=\"e-fe-size\">" + data.size + "</span>";
210
+ })
175
211
  }
176
212
  ];
177
213
  }
178
214
  else {
179
- columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));
215
+ columns = extend([], this.parent.detailsViewSettings.columns, null, true);
180
216
  this.adjustWidth(columns, 'name');
217
+ var _loop_1 = function (i, len) {
218
+ columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);
219
+ if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {
220
+ var template_1 = columns[i].template;
221
+ columns[i].template = initializeCSPTemplate(function (data) {
222
+ var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;
223
+ return template_1.replace(/\${name}/g, name);
224
+ });
225
+ }
226
+ };
227
+ var this_1 = this;
181
228
  for (var i = 0, len = columns.length; i < len; i++) {
182
- columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);
229
+ _loop_1(i, len);
183
230
  }
184
231
  }
185
232
  var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');
186
233
  var icon = {
187
- field: 'type', width: iWidth, minWidth: iWidth, template: '<span class="e-fe-icon ${_fm_iconClass}"></span>',
188
- allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },
189
- headerTemplate: '<span class="e-fe-icon e-fe-folder"></span>'
234
+ field: 'type', width: iWidth, minWidth: iWidth,
235
+ template: initializeCSPTemplate(function (data) {
236
+ return "<span class=\"e-fe-icon " + data._fm_iconClass + "\"></span>";
237
+ }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },
238
+ headerTemplate: initializeCSPTemplate(function () {
239
+ return '<span class=\'e-fe-icon e-fe-folder\'></span>';
240
+ })
190
241
  };
191
242
  columns.unshift(icon);
192
- if (this.parent.allowMultiSelection) {
243
+ if (this.parent.showItemCheckBoxes) {
193
244
  var cWidth = (this.parent.isBigger ? '36' : '26');
194
245
  var cBox = {
195
246
  type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },
@@ -205,6 +256,10 @@ var DetailsView = /** @class */ (function () {
205
256
  for (var i = 0, len = columns.length; i < len; i++) {
206
257
  columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;
207
258
  }
259
+ if (this.parent.enableRangeSelection) {
260
+ var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };
261
+ columns.push(HiddenName);
262
+ }
208
263
  return columns;
209
264
  };
210
265
  DetailsView.prototype.adjustHeight = function () {
@@ -244,7 +299,8 @@ var DetailsView = /** @class */ (function () {
244
299
  }
245
300
  }
246
301
  if (!this.parent.showFileExtension && getValue('isFile', args.data)) {
247
- var textEle = args.row.querySelector('.e-fe-text');
302
+ var text = getValue('name', args.data);
303
+ var textEle = args.row.querySelector('[title= "' + text + '"]');
248
304
  if (textEle) {
249
305
  var name_1 = getValue('name', args.data);
250
306
  var type = getValue('type', args.data);
@@ -260,7 +316,15 @@ var DetailsView = /** @class */ (function () {
260
316
  else {
261
317
  var sizeValue = getValue('size', args.data);
262
318
  var intl = new Internationalization(this.parent.locale);
263
- var value = intl.formatNumber((sizeValue / 1024), { format: 'n' });
319
+ var sizeFormat = void 0;
320
+ var columns = this.parent.detailsViewSettings.columns;
321
+ for (var i = 0; i < columns.length; i++) {
322
+ if (columns[i].field === 'size') {
323
+ sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';
324
+ break;
325
+ }
326
+ }
327
+ var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });
264
328
  modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');
265
329
  }
266
330
  sizeEle.innerHTML = modifiedSize;
@@ -270,7 +334,6 @@ var DetailsView = /** @class */ (function () {
270
334
  var dateEle = args.row.querySelector('.e-fe-date');
271
335
  var intl = new Internationalization(this.parent.locale);
272
336
  var columns = this.parent.detailsViewSettings.columns;
273
- // eslint-disable-next-line
274
337
  var format = void 0;
275
338
  for (var i = 0; i < columns.length; i++) {
276
339
  if (columns[i].field === 'dateModified') {
@@ -306,7 +369,6 @@ var DetailsView = /** @class */ (function () {
306
369
  var len = rows.length;
307
370
  this.sortSelectedNodes = [];
308
371
  while (len > 0) {
309
- // eslint-disable-next-line
310
372
  var data = this.gridObj.getRowsObject()[rows[len - 1]].data;
311
373
  this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));
312
374
  len--;
@@ -322,15 +384,22 @@ var DetailsView = /** @class */ (function () {
322
384
  }
323
385
  };
324
386
  DetailsView.prototype.onBeforeDataBound = function (args) {
387
+ var _this = this;
325
388
  showSpinner(this.parent.element);
326
- // eslint-disable-next-line
327
- var items = getSortedData(this.parent, this.gridObj.dataSource);
328
- args.result = items;
389
+ var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });
390
+ if (nameColumn && !('sortComparer' in nameColumn)) {
391
+ var items = getSortedData(this.parent, (this.parent.enableVirtualization)
392
+ ? args.result
393
+ : this.gridObj.dataSource);
394
+ args.result = items;
395
+ }
329
396
  };
330
397
  /* istanbul ignore next */
331
398
  DetailsView.prototype.onDataBound = function () {
332
399
  this.createDragObj();
333
- if (this.parent.selectedItems.length !== 0) {
400
+ if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||
401
+ ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&
402
+ this.element.querySelector('.e-content').scrollTop === 0))) {
334
403
  this.selectRecords(this.parent.selectedItems);
335
404
  }
336
405
  if (this.isPasteOperation === true) {
@@ -403,7 +472,6 @@ var DetailsView = /** @class */ (function () {
403
472
  this.isLoaded = false;
404
473
  };
405
474
  DetailsView.prototype.selectRecords = function (nodes) {
406
- // eslint-disable-next-line
407
475
  var gridRecords = this.gridObj.getCurrentViewRecords();
408
476
  var sRecords = [];
409
477
  for (var i = 0, len = gridRecords.length; i < len; i++) {
@@ -411,24 +479,26 @@ var DetailsView = /** @class */ (function () {
411
479
  if (nodes.indexOf(node) !== -1) {
412
480
  sRecords.push(i);
413
481
  }
482
+ else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {
483
+ var Str2 = node.split('.').slice(0, -1).join('.');
484
+ if (nodes.indexOf(Str2) !== -1) {
485
+ sRecords.push(i);
486
+ }
487
+ }
414
488
  }
415
489
  if (sRecords.length !== 0) {
416
490
  this.gridObj.selectRows(sRecords);
417
491
  this.addFocus(this.gridObj.selectedRowIndex);
418
492
  }
419
493
  };
420
- // eslint-disable-next-line
421
494
  DetailsView.prototype.addSelection = function (data) {
422
- // eslint-disable-next-line
423
495
  var items = this.gridObj.getCurrentViewRecords();
424
- // eslint-disable-next-line
425
496
  var rData = [];
426
497
  if (this.parent.hasId) {
427
498
  rData = new DataManager(items).
428
499
  executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));
429
500
  }
430
501
  else {
431
- // eslint-disable-next-line
432
502
  var nData = new DataManager(items).
433
503
  executeLocal(new Query().where('name', 'equal', getValue('name', data), false));
434
504
  if (nData.length > 0) {
@@ -446,9 +516,11 @@ var DetailsView = /** @class */ (function () {
446
516
  this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);
447
517
  }
448
518
  else {
449
- // eslint-disable-next-line
450
519
  this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);
451
520
  }
521
+ if (this.element.querySelector('.e-content').scrollTop !== 0) {
522
+ this.gridObj.freezeRefresh();
523
+ }
452
524
  };
453
525
  DetailsView.prototype.onPropertyChanged = function (e) {
454
526
  if (e.module !== this.getModuleName() && e.module !== 'common') {
@@ -486,6 +558,7 @@ var DetailsView = /** @class */ (function () {
486
558
  }
487
559
  else if (!isNOU(this.gridObj)) {
488
560
  this.gridObj.clearSelection();
561
+ this.interaction = true;
489
562
  }
490
563
  break;
491
564
  case 'showFileExtension':
@@ -512,7 +585,9 @@ var DetailsView = /** @class */ (function () {
512
585
  };
513
586
  DetailsView.prototype.onPathChanged = function (args) {
514
587
  this.parent.isCut = false;
515
- if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {
588
+ var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === 'filterPath'; });
589
+ if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||
590
+ (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {
516
591
  this.parent.searchedItems = [];
517
592
  if (!this.parent.isFiltered) {
518
593
  this.removePathColumn(false);
@@ -528,6 +603,10 @@ var DetailsView = /** @class */ (function () {
528
603
  showSpinner(this.parent.element);
529
604
  this.parent.setProperties({ selectedItems: [] }, true);
530
605
  this.gridObj.dataSource = getSortedData(this.parent, args.files);
606
+ this.gridObj.freezeRefresh();
607
+ if (this.parent.isReact) {
608
+ this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);
609
+ }
531
610
  }
532
611
  this.emptyArgs = args;
533
612
  };
@@ -546,7 +625,6 @@ var DetailsView = /** @class */ (function () {
546
625
  }
547
626
  };
548
627
  DetailsView.prototype.checkEmptyDiv = function (args) {
549
- // eslint-disable-next-line
550
628
  var items = getSortedData(this.parent, args.files);
551
629
  if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {
552
630
  createEmptyElement(this.parent, this.element, args);
@@ -563,21 +641,18 @@ var DetailsView = /** @class */ (function () {
563
641
  };
564
642
  DetailsView.prototype.onOpenInit = function () {
565
643
  if (this.parent.activeModule === 'detailsview') {
566
- // eslint-disable-next-line
567
644
  var data = this.gridObj.getSelectedRecords()[0];
568
645
  this.openContent(data);
569
646
  }
570
647
  };
571
648
  DetailsView.prototype.DblClickEvents = function (args) {
572
649
  this.gridObj.selectRows([args.rowIndex]);
573
- // eslint-disable-next-line
574
650
  var data;
575
651
  if (args.rowData) {
576
652
  data = JSON.parse(JSON.stringify(args.rowData));
577
653
  this.openContent(data);
578
654
  }
579
655
  };
580
- // eslint-disable-next-line
581
656
  DetailsView.prototype.openContent = function (data) {
582
657
  var _this = this;
583
658
  if (!hasReadAccess(data)) {
@@ -599,6 +674,7 @@ var DetailsView = /** @class */ (function () {
599
674
  var val = _this.parent.breadcrumbbarModule.searchObj.element.value;
600
675
  if (val === '' && !_this.parent.isFiltered) {
601
676
  var id = getValue('id', data);
677
+ _this.parent.oldPath = _this.parent.path;
602
678
  var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';
603
679
  _this.parent.setProperties({ path: newPath }, true);
604
680
  _this.parent.pathNames.push(name_2);
@@ -612,12 +688,18 @@ var DetailsView = /** @class */ (function () {
612
688
  _this.parent.isFiltered = false;
613
689
  }
614
690
  _this.element.focus();
691
+ if (_this.parent.enableVirtualization) {
692
+ _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();
693
+ }
615
694
  }
616
695
  });
617
696
  };
618
697
  /* istanbul ignore next */
619
698
  DetailsView.prototype.onLayoutChange = function (args) {
620
699
  if (this.parent.view === 'Details') {
700
+ if (this.parent.enableVirtualization) {
701
+ this.parent.setProperties({ selectedItems: [] }, true);
702
+ }
621
703
  if (!this.gridObj) {
622
704
  this.render(args);
623
705
  }
@@ -662,12 +744,11 @@ var DetailsView = /** @class */ (function () {
662
744
  var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));
663
745
  if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {
664
746
  /* istanbul ignore next */
665
- if (this.gridObj.sortSettings.columns[0].field === 'filterPath') {
747
+ if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {
666
748
  if (this.parent.sortOrder !== 'None') {
667
749
  this.gridObj.sortColumn('name', this.parent.sortOrder);
668
750
  }
669
751
  else {
670
- // eslint-disable-next-line
671
752
  this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);
672
753
  }
673
754
  this.parent.notify(events.sortByChange, {});
@@ -856,7 +937,6 @@ var DetailsView = /** @class */ (function () {
856
937
  this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);
857
938
  };
858
939
  DetailsView.prototype.onActionFailure = function () { this.interaction = true; };
859
- // eslint-disable-next-line
860
940
  DetailsView.prototype.onMenuItemData = function (args) {
861
941
  if (this.parent.activeModule === this.getModuleName()) {
862
942
  this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];
@@ -884,14 +964,19 @@ var DetailsView = /** @class */ (function () {
884
964
  if (!dragLi) {
885
965
  return null;
886
966
  }
887
- var name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;
967
+ var name;
968
+ if (dragLi.getElementsByClassName('e-fe-text')[0]) {
969
+ name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;
970
+ }
971
+ else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {
972
+ name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;
973
+ }
888
974
  if (dragLi && !dragLi.querySelector('.e-active')) {
889
975
  this.selectRecords([name]);
890
976
  }
891
977
  getModule(this.parent, dragLi);
892
978
  this.parent.activeElements = [];
893
979
  this.parent.dragData = [];
894
- // eslint-disable-next-line
895
980
  this.parent.dragData = this.gridObj.getSelectedRecords();
896
981
  var dragRow;
897
982
  if (this.parent.dragData.length === 0 && dragLi) {
@@ -952,11 +1037,8 @@ var DetailsView = /** @class */ (function () {
952
1037
  };
953
1038
  DetailsView.prototype.createDragObj = function () {
954
1039
  var _this = this;
955
- if (!this.parent.isMobile && this.gridObj) {
956
- if (this.parent.allowDragAndDrop) {
957
- if (this.dragObj) {
958
- this.dragObj.destroy();
959
- }
1040
+ if (this.gridObj) {
1041
+ if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {
960
1042
  this.dragObj = new Draggable(this.gridObj.element, {
961
1043
  cursorAt: this.parent.dragCursorPosition,
962
1044
  distance: 5,
@@ -968,28 +1050,26 @@ var DetailsView = /** @class */ (function () {
968
1050
  dragStartHandler(_this.parent, args, _this.dragObj);
969
1051
  },
970
1052
  dragStop: dragStopHandler.bind(this, this.parent),
971
- enableAutoScroll: true,
1053
+ enableAutoScroll: false,
972
1054
  helper: this.dragHelper.bind(this)
973
1055
  });
974
1056
  }
975
1057
  else if (!this.parent.allowDragAndDrop && this.dragObj) {
976
1058
  this.dragObj.destroy();
1059
+ this.dragObj = null;
977
1060
  }
978
1061
  }
979
1062
  };
980
1063
  DetailsView.prototype.onDropInit = function (args) {
981
1064
  if (this.parent.targetModule === this.getModuleName()) {
982
1065
  /* istanbul ignore next */
983
- // eslint-disable-next-line
984
1066
  var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);
985
1067
  if (!args.target.closest('tr')) {
986
1068
  this.parent.dropPath = this.parent.path;
987
1069
  this.parent.dropData = cwdData;
988
1070
  }
989
1071
  else {
990
- // eslint-disable-next-line
991
1072
  var info = null;
992
- // eslint-disable-next-line
993
1073
  info = this.gridObj.getRowInfo(args.target).rowData;
994
1074
  this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);
995
1075
  this.parent.dropData = info.isFile ? cwdData : info;
@@ -1005,7 +1085,8 @@ var DetailsView = /** @class */ (function () {
1005
1085
  DetailsView.prototype.onpasteEnd = function (args) {
1006
1086
  if (this.parent.view === 'Details') {
1007
1087
  this.isPasteOperation = true;
1008
- if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {
1088
+ if (this.parent.path === this.parent.destinationPath ||
1089
+ this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {
1009
1090
  this.onPathChanged(args);
1010
1091
  }
1011
1092
  }
@@ -1031,6 +1112,9 @@ var DetailsView = /** @class */ (function () {
1031
1112
  }
1032
1113
  this.removeEventListener();
1033
1114
  if (this.gridObj) {
1115
+ if (this.parent.isReact) {
1116
+ this.gridObj.off('reactTemplateRender', this.reactTemplateRender);
1117
+ }
1034
1118
  this.unWireEvents();
1035
1119
  this.gridObj.destroy();
1036
1120
  }
@@ -1084,8 +1168,10 @@ var DetailsView = /** @class */ (function () {
1084
1168
  }
1085
1169
  }
1086
1170
  var len = rows.length;
1087
- if (len > 0) {
1088
- // eslint-disable-next-line
1171
+ if (this.parent.enableVirtualization) {
1172
+ this.parent.currentItemText = getValue('name', args.data);
1173
+ }
1174
+ else if (len > 0) {
1089
1175
  var data = this.gridObj.getRowsObject()[rows[len - 1]].data;
1090
1176
  this.parent.currentItemText = getValue('name', data);
1091
1177
  }
@@ -1098,11 +1184,9 @@ var DetailsView = /** @class */ (function () {
1098
1184
  }
1099
1185
  }
1100
1186
  this.parent.visitedItem = args.row;
1101
- if (this.parent.allowMultiSelection && !isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {
1102
- var checkItem = item.querySelector('.e-checkselect');
1103
- checkItem.focus();
1187
+ if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {
1188
+ this.addFocus(this.gridObj.selectedRowIndex);
1104
1189
  }
1105
- this.addFocus(this.gridObj.selectedRowIndex);
1106
1190
  if (!this.parent.isLayoutChange) {
1107
1191
  this.isInteracted = true;
1108
1192
  }
@@ -1117,7 +1201,6 @@ var DetailsView = /** @class */ (function () {
1117
1201
  };
1118
1202
  DetailsView.prototype.selectedRecords = function () {
1119
1203
  this.parent.setProperties({ selectedItems: [] }, true);
1120
- // eslint-disable-next-line
1121
1204
  var selectedRecords = this.gridSelectNodes();
1122
1205
  var selectSize = 0;
1123
1206
  while (selectSize < selectedRecords.length) {
@@ -1171,36 +1254,37 @@ var DetailsView = /** @class */ (function () {
1171
1254
  eventName: 'keydown'
1172
1255
  });
1173
1256
  EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);
1257
+ EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);
1174
1258
  };
1175
1259
  DetailsView.prototype.unWireEvents = function () {
1176
1260
  this.wireClickEvent(false);
1177
1261
  this.keyboardModule.destroy();
1178
1262
  this.keyboardDownModule.destroy();
1179
1263
  EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);
1264
+ EventHandler.remove(this.parent.element, 'focusout', this.onBlur);
1180
1265
  };
1181
1266
  DetailsView.prototype.wireClickEvent = function (toBind) {
1267
+ var _this = this;
1182
1268
  if (toBind) {
1183
- // eslint-disable-next-line
1184
- var proxy_1 = this;
1185
1269
  var ele = this.gridObj.getContent();
1186
1270
  this.clickObj = new Touch(ele, {
1187
1271
  tap: function (eve) {
1188
1272
  if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {
1189
- proxy_1.onClearAllInit();
1273
+ _this.onClearAllInit();
1190
1274
  }
1191
1275
  },
1192
1276
  tapHold: function (e) {
1193
- if (proxy_1.parent.isDevice) {
1277
+ if (_this.parent.isDevice) {
1194
1278
  e.originalEvent.preventDefault();
1195
- if (proxy_1.parent.allowMultiSelection) {
1196
- setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);
1197
- addClass([proxy_1.parent.element], CLS.MULTI_SELECT);
1279
+ if (_this.parent.allowMultiSelection) {
1280
+ setValue('enableSelectMultiTouch', _this.parent.allowMultiSelection, _this.gridObj.selectionModule);
1281
+ addClass([_this.parent.element], CLS.MULTI_SELECT);
1198
1282
  }
1199
1283
  var target = e.originalEvent.target;
1200
1284
  if (target) {
1201
1285
  var row = closest(target, '.' + CLS.ROW);
1202
- var index = proxy_1.gridObj.getRows().indexOf(row);
1203
- proxy_1.gridObj.selectRow(index);
1286
+ var index = _this.gridObj.getRows().indexOf(row);
1287
+ _this.gridObj.selectRow(index);
1204
1288
  }
1205
1289
  }
1206
1290
  }
@@ -1226,12 +1310,24 @@ var DetailsView = /** @class */ (function () {
1226
1310
  DetailsView.prototype.removeFocus = function () {
1227
1311
  this.addFocus(null);
1228
1312
  };
1313
+ DetailsView.prototype.onBlur = function (e) {
1314
+ if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {
1315
+ return;
1316
+ }
1317
+ if (!isNOU(this.gridObj.element)) {
1318
+ var thElements = this.gridObj.element.querySelectorAll('th');
1319
+ for (var i = 0; i < thElements.length; i++) {
1320
+ if (thElements[i].classList.contains('e-focus')) {
1321
+ this.addFocus(null);
1322
+ }
1323
+ }
1324
+ }
1325
+ };
1229
1326
  DetailsView.prototype.getFocusedItemIndex = function () {
1230
1327
  return (!isNOU(this.getFocusedItem())) ?
1231
- parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) : null;
1328
+ parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;
1232
1329
  };
1233
1330
  /* istanbul ignore next */
1234
- // eslint:disable-next-line
1235
1331
  DetailsView.prototype.keydownHandler = function (e) {
1236
1332
  if (!this.isRendered) {
1237
1333
  return;
@@ -1275,26 +1371,23 @@ var DetailsView = /** @class */ (function () {
1275
1371
  }
1276
1372
  };
1277
1373
  /* istanbul ignore next */
1278
- // eslint:disable-next-line
1279
1374
  DetailsView.prototype.keyupHandler = function (e) {
1280
1375
  if (!this.isRendered) {
1281
1376
  return;
1282
1377
  }
1283
1378
  e.preventDefault();
1284
1379
  var action = e.action;
1285
- // eslint-disable-next-line
1286
1380
  var gridItems = getSortedData(this.parent, this.gridObj.dataSource);
1287
1381
  var gridLength = gridItems.length;
1288
- var focItem = this.getFocusedItem();
1289
1382
  var focIndex = this.getFocusedItemIndex();
1290
1383
  var selIndex = this.gridObj.selectedRowIndex;
1291
1384
  var selRowIndeces = this.gridObj.getSelectedRowIndexes();
1292
- // eslint-disable-next-line
1293
1385
  var rowData;
1294
1386
  var firstItem;
1295
1387
  var lastItem;
1296
1388
  switch (action) {
1297
1389
  case 'altEnter':
1390
+ this.parent.notify(events.detailsInit, {});
1298
1391
  GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');
1299
1392
  break;
1300
1393
  case 'esc':
@@ -1305,12 +1398,19 @@ var DetailsView = /** @class */ (function () {
1305
1398
  this.performDelete();
1306
1399
  break;
1307
1400
  case 'enter':
1308
- if (this.gridObj.selectedRowIndex === -1) {
1401
+ if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {
1402
+ if (!e.target.classList.contains('e-fe-grid-icon')) {
1403
+ var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';
1404
+ var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;
1405
+ this.gridObj.sortColumn(currentField, direction);
1406
+ if (!isNOU(this.getFocusedItem().nextSibling)) {
1407
+ this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');
1408
+ }
1409
+ }
1309
1410
  break;
1310
1411
  }
1311
1412
  rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;
1312
1413
  if (rowData) {
1313
- // eslint-disable-next-line
1314
1414
  var data = JSON.parse(JSON.stringify(rowData));
1315
1415
  this.openContent(data);
1316
1416
  }
@@ -1353,7 +1453,7 @@ var DetailsView = /** @class */ (function () {
1353
1453
  return;
1354
1454
  }
1355
1455
  else {
1356
- this.addFocus(0);
1456
+ this.addHeaderFocus(e);
1357
1457
  }
1358
1458
  }
1359
1459
  break;
@@ -1425,16 +1525,17 @@ var DetailsView = /** @class */ (function () {
1425
1525
  this.parent.setProperties({ selectedItems: lastItem }, true);
1426
1526
  this.selectRecords(lastItem);
1427
1527
  break;
1528
+ case 'back':
1529
+ this.parent.traverseBackward();
1530
+ break;
1428
1531
  }
1429
1532
  };
1430
- // eslint-disable-next-line
1431
1533
  DetailsView.prototype.gridSelectNodes = function () {
1432
1534
  return this.gridObj.getSelectedRecords();
1433
1535
  };
1434
1536
  DetailsView.prototype.doDownload = function () {
1435
1537
  if (this.parent.selectedItems.length !== 0) {
1436
1538
  this.parent.itemData = this.gridObj.getSelectedRecords();
1437
- // eslint-disable-next-line
1438
1539
  var items = this.parent.itemData;
1439
1540
  for (var i = 0; i < items.length; i++) {
1440
1541
  if (!hasDownloadAccess(items[i])) {
@@ -1448,7 +1549,6 @@ var DetailsView = /** @class */ (function () {
1448
1549
  DetailsView.prototype.performDelete = function () {
1449
1550
  if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {
1450
1551
  this.parent.itemData = this.gridObj.getSelectedRecords();
1451
- // eslint-disable-next-line
1452
1552
  var items = this.parent.itemData;
1453
1553
  for (var i = 0; i < items.length; i++) {
1454
1554
  if (!hasEditAccess(items[i])) {
@@ -1466,11 +1566,9 @@ var DetailsView = /** @class */ (function () {
1466
1566
  }
1467
1567
  };
1468
1568
  DetailsView.prototype.updateRenameData = function () {
1469
- // eslint-disable-next-line
1470
1569
  var data = this.gridSelectNodes()[0];
1471
1570
  updateRenamingData(this.parent, data);
1472
1571
  };
1473
- // eslint-disable-next-line
1474
1572
  DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {
1475
1573
  if (!this.parent.allowMultiSelection) {
1476
1574
  this.moveFunction(gridItems, e, selIndex);
@@ -1488,7 +1586,6 @@ var DetailsView = /** @class */ (function () {
1488
1586
  }
1489
1587
  }
1490
1588
  };
1491
- // eslint-disable-next-line
1492
1589
  DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {
1493
1590
  if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {
1494
1591
  if (e.action === 'moveDown') {
@@ -1535,7 +1632,6 @@ var DetailsView = /** @class */ (function () {
1535
1632
  this.gridObj.selectRow(selIndex);
1536
1633
  }
1537
1634
  };
1538
- // eslint-disable-next-line
1539
1635
  DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {
1540
1636
  var nextItem;
1541
1637
  if (!isNOU(this.getFocusedItem())) {
@@ -1554,7 +1650,6 @@ var DetailsView = /** @class */ (function () {
1554
1650
  }
1555
1651
  this.addFocus(nextItem);
1556
1652
  };
1557
- // eslint-disable-next-line
1558
1653
  DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {
1559
1654
  if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {
1560
1655
  if (e.action !== 'csHome' && e.action !== 'csEnd') {
@@ -1640,6 +1735,31 @@ var DetailsView = /** @class */ (function () {
1640
1735
  addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);
1641
1736
  }
1642
1737
  };
1738
+ DetailsView.prototype.addHeaderFocus = function (e) {
1739
+ var treeFocus = select('.e-row', this.element);
1740
+ this.gridObj.element.setAttribute('tabindex', '-1');
1741
+ var nameFocus;
1742
+ if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {
1743
+ this.addFocus(0);
1744
+ nameFocus = e.target.nextElementSibling;
1745
+ }
1746
+ else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {
1747
+ nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;
1748
+ this.addFocus(0);
1749
+ }
1750
+ else {
1751
+ nameFocus = select('th.e-fe-grid-icon', this.element);
1752
+ }
1753
+ if (!isNOU(nameFocus)) {
1754
+ nameFocus.setAttribute('tabindex', '0');
1755
+ nameFocus.focus();
1756
+ addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);
1757
+ treeFocus.setAttribute('tabindex', '0');
1758
+ if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {
1759
+ removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);
1760
+ }
1761
+ }
1762
+ };
1643
1763
  DetailsView.prototype.getFocusedItem = function () {
1644
1764
  return select('.' + CLS.FOCUSED, this.element);
1645
1765
  };
@@ -1653,7 +1773,6 @@ var DetailsView = /** @class */ (function () {
1653
1773
  }
1654
1774
  return check;
1655
1775
  };
1656
- // eslint-disable-next-line
1657
1776
  DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {
1658
1777
  if (selIndex === -1) {
1659
1778
  this.gridObj.selectRow(0);
@@ -1702,7 +1821,6 @@ var DetailsView = /** @class */ (function () {
1702
1821
  }
1703
1822
  }
1704
1823
  };
1705
- // eslint-disable-next-line
1706
1824
  DetailsView.prototype.onMethodCall = function (e) {
1707
1825
  if (this.parent.view !== 'Details') {
1708
1826
  return;
@@ -1735,11 +1853,8 @@ var DetailsView = /** @class */ (function () {
1735
1853
  break;
1736
1854
  }
1737
1855
  };
1738
- // eslint-disable-next-line
1739
1856
  DetailsView.prototype.getRecords = function (nodes) {
1740
- // eslint-disable-next-line
1741
1857
  var gridRecords = this.gridObj.getCurrentViewRecords();
1742
- // eslint-disable-next-line
1743
1858
  var records = [];
1744
1859
  var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;
1745
1860
  var filter = this.parent.hasId ? 'id' : 'name';
@@ -1766,12 +1881,10 @@ var DetailsView = /** @class */ (function () {
1766
1881
  this.performDelete();
1767
1882
  return;
1768
1883
  }
1769
- // eslint-disable-next-line
1770
1884
  var records = this.getRecords(ids);
1771
1885
  if (records.length === 0) {
1772
1886
  return;
1773
1887
  }
1774
- // eslint-disable-next-line
1775
1888
  var data = [];
1776
1889
  var newIds = [];
1777
1890
  for (var i = 0; i < records.length; i++) {
@@ -1785,12 +1898,10 @@ var DetailsView = /** @class */ (function () {
1785
1898
  this.doDownload();
1786
1899
  return;
1787
1900
  }
1788
- // eslint-disable-next-line
1789
1901
  var dRecords = this.getRecords(ids);
1790
1902
  if (dRecords.length === 0) {
1791
1903
  return;
1792
1904
  }
1793
- // eslint-disable-next-line
1794
1905
  var data = [];
1795
1906
  var newIds = [];
1796
1907
  for (var i = 0; i < dRecords.length; i++) {
@@ -1803,7 +1914,6 @@ var DetailsView = /** @class */ (function () {
1803
1914
  if (isNOU(id)) {
1804
1915
  return;
1805
1916
  }
1806
- // eslint-disable-next-line
1807
1917
  var records = this.getRecords([id]);
1808
1918
  if (records.length > 0) {
1809
1919
  this.openContent(records[0]);
@@ -1815,7 +1925,6 @@ var DetailsView = /** @class */ (function () {
1815
1925
  this.performRename();
1816
1926
  return;
1817
1927
  }
1818
- // eslint-disable-next-line
1819
1928
  var records = this.getRecords([id]);
1820
1929
  if (records.length > 0) {
1821
1930
  updateRenamingData(this.parent, records[0]);