@syncfusion/ej2-filemanager 19.4.48 → 19.4.50-117124

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 (109) hide show
  1. package/.eslintrc.json +16 -1
  2. package/CHANGELOG.md +6 -20
  3. package/README.md +54 -43
  4. package/dist/ej2-filemanager.min.js +10 -0
  5. package/dist/ej2-filemanager.umd.min.js +2 -2
  6. package/dist/ej2-filemanager.umd.min.js.map +1 -1
  7. package/dist/es6/ej2-filemanager.es2015.js +445 -129
  8. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  9. package/dist/es6/ej2-filemanager.es5.js +473 -136
  10. package/dist/es6/ej2-filemanager.es5.js.map +1 -1
  11. package/dist/global/ej2-filemanager.min.js +2 -2
  12. package/dist/global/ej2-filemanager.min.js.map +1 -1
  13. package/dist/global/index.d.ts +1 -1
  14. package/helpers/e2e/filemanagerHelper.js +183 -166
  15. package/package.json +11 -12
  16. package/src/file-manager/actions/breadcrumb-bar.js +1 -1
  17. package/src/file-manager/actions/index.d.ts +1 -0
  18. package/src/file-manager/actions/index.js +1 -0
  19. package/src/file-manager/actions/toolbar.js +6 -4
  20. package/src/file-manager/actions/virtualization.d.ts +38 -0
  21. package/src/file-manager/actions/virtualization.js +179 -0
  22. package/src/file-manager/base/classes.d.ts +2 -0
  23. package/src/file-manager/base/classes.js +2 -0
  24. package/src/file-manager/base/file-manager-model.d.ts +24 -2
  25. package/src/file-manager/base/file-manager.d.ts +28 -2
  26. package/src/file-manager/base/file-manager.js +32 -3
  27. package/src/file-manager/base/interface.d.ts +5 -1
  28. package/src/file-manager/common/operations.js +2 -0
  29. package/src/file-manager/common/utility.js +21 -5
  30. package/src/file-manager/layout/details-view.d.ts +2 -0
  31. package/src/file-manager/layout/details-view.js +46 -7
  32. package/src/file-manager/layout/large-icons-view.d.ts +2 -1
  33. package/src/file-manager/layout/large-icons-view.js +13 -5
  34. package/src/file-manager/layout/navigation-pane.js +29 -17
  35. package/src/file-manager/models/index.d.ts +2 -0
  36. package/src/file-manager/models/index.js +1 -0
  37. package/src/file-manager/models/navigation-pane-settings-model.d.ts +11 -0
  38. package/src/file-manager/models/navigation-pane-settings.d.ts +10 -0
  39. package/src/file-manager/models/navigation-pane-settings.js +3 -0
  40. package/src/file-manager/models/upload-settings-model.d.ts +13 -0
  41. package/src/file-manager/models/upload-settings.d.ts +12 -0
  42. package/src/file-manager/models/upload-settings.js +3 -0
  43. package/src/file-manager/models/virtualization-settings-model.d.ts +29 -0
  44. package/src/file-manager/models/virtualization-settings.d.ts +24 -0
  45. package/src/file-manager/models/virtualization-settings.js +40 -0
  46. package/src/file-manager/pop-up/context-menu.js +1 -1
  47. package/src/file-manager/pop-up/dialog.js +11 -4
  48. package/src/global.js +1 -1
  49. package/styles/bootstrap-dark.css +55 -399
  50. package/styles/bootstrap.css +55 -396
  51. package/styles/bootstrap4.css +55 -404
  52. package/styles/bootstrap5-dark.css +56 -408
  53. package/styles/bootstrap5.css +56 -408
  54. package/styles/fabric-dark.css +54 -392
  55. package/styles/fabric.css +54 -392
  56. package/styles/file-manager/_all.scss +1 -1
  57. package/styles/file-manager/_bootstrap-dark-definition.scss +1 -1
  58. package/styles/file-manager/_bootstrap-definition.scss +1 -1
  59. package/styles/file-manager/_bootstrap4-definition.scss +1 -1
  60. package/styles/file-manager/_bootstrap5-definition.scss +3 -3
  61. package/styles/file-manager/_fabric-dark-definition.scss +1 -1
  62. package/styles/file-manager/_fabric-definition.scss +1 -1
  63. package/styles/file-manager/_fluent-dark-definition.scss +1 -0
  64. package/styles/file-manager/_fluent-definition.scss +10 -10
  65. package/styles/file-manager/_fusionnew-definition.scss +237 -0
  66. package/styles/file-manager/_highcontrast-definition.scss +1 -1
  67. package/styles/file-manager/_highcontrast-light-definition.scss +1 -1
  68. package/styles/file-manager/_layout.scss +65 -16
  69. package/styles/file-manager/_material-dark-definition.scss +1 -1
  70. package/styles/file-manager/_material-definition.scss +1 -1
  71. package/styles/file-manager/_material3-definition.scss +237 -0
  72. package/styles/file-manager/_tailwind-definition.scss +2 -2
  73. package/styles/file-manager/_theme.scss +39 -10
  74. package/styles/file-manager/bootstrap-dark.css +55 -399
  75. package/styles/file-manager/bootstrap.css +55 -396
  76. package/styles/file-manager/bootstrap4.css +55 -404
  77. package/styles/file-manager/bootstrap5-dark.css +56 -408
  78. package/styles/file-manager/bootstrap5.css +56 -408
  79. package/styles/file-manager/fabric-dark.css +54 -392
  80. package/styles/file-manager/fabric.css +54 -392
  81. package/styles/file-manager/fluent-dark.css +1568 -0
  82. package/styles/file-manager/fluent-dark.scss +16 -0
  83. package/styles/file-manager/fluent.css +1567 -0
  84. package/styles/file-manager/fluent.scss +16 -0
  85. package/styles/file-manager/highcontrast-light.css +54 -394
  86. package/styles/file-manager/highcontrast.css +73 -393
  87. package/styles/file-manager/icons/_bootstrap.scss +0 -1
  88. package/styles/file-manager/icons/_bootstrap4.scss +0 -1
  89. package/styles/file-manager/icons/_fabric-dark.scss +0 -1
  90. package/styles/file-manager/icons/_fabric.scss +0 -1
  91. package/styles/file-manager/icons/_fluent-dark.scss +1 -0
  92. package/styles/file-manager/icons/_fluent.scss +19 -19
  93. package/styles/file-manager/icons/_fusionnew.scss +235 -0
  94. package/styles/file-manager/icons/_material3.scss +235 -0
  95. package/styles/file-manager/icons/_tailwind.scss +49 -49
  96. package/styles/file-manager/material-dark.css +55 -403
  97. package/styles/file-manager/material.css +55 -400
  98. package/styles/file-manager/tailwind-dark.css +76 -424
  99. package/styles/file-manager/tailwind.css +76 -424
  100. package/styles/fluent-dark.css +1568 -0
  101. package/styles/fluent-dark.scss +1 -0
  102. package/styles/fluent.css +1567 -0
  103. package/styles/fluent.scss +1 -0
  104. package/styles/highcontrast-light.css +54 -394
  105. package/styles/highcontrast.css +73 -393
  106. package/styles/material-dark.css +55 -403
  107. package/styles/material.css +55 -400
  108. package/styles/tailwind-dark.css +76 -424
  109. package/styles/tailwind.css +76 -424
@@ -117,6 +117,27 @@ var __decorate$4 = (undefined && undefined.__decorate) || function (decorators,
117
117
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
118
118
  return c > 3 && r && Object.defineProperty(target, key, r), r;
119
119
  };
120
+ /**
121
+ * Specifies the virtualization settings of the File Manager.
122
+ */
123
+ class VirtualizationSettings extends ChildProperty {
124
+ }
125
+ __decorate$4([
126
+ Property(false)
127
+ ], VirtualizationSettings.prototype, "enable", void 0);
128
+ __decorate$4([
129
+ Property(20)
130
+ ], VirtualizationSettings.prototype, "detailsViewItemsCount", void 0);
131
+ __decorate$4([
132
+ Property(40)
133
+ ], VirtualizationSettings.prototype, "largeIconsViewItemsCount", void 0);
134
+
135
+ var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
136
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
137
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
138
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
139
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
140
+ };
120
141
  const fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];
121
142
  const folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];
122
143
  const layoutItems = [
@@ -127,20 +148,20 @@ const layoutItems = [
127
148
  */
128
149
  class ContextMenuSettings extends ChildProperty {
129
150
  }
130
- __decorate$4([
151
+ __decorate$5([
131
152
  Property(fileItems)
132
153
  ], ContextMenuSettings.prototype, "file", void 0);
133
- __decorate$4([
154
+ __decorate$5([
134
155
  Property(folderItems)
135
156
  ], ContextMenuSettings.prototype, "folder", void 0);
136
- __decorate$4([
157
+ __decorate$5([
137
158
  Property(layoutItems)
138
159
  ], ContextMenuSettings.prototype, "layout", void 0);
139
- __decorate$4([
160
+ __decorate$5([
140
161
  Property(true)
141
162
  ], ContextMenuSettings.prototype, "visible", void 0);
142
163
 
143
- var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
164
+ var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
144
165
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
145
166
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
146
167
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -151,17 +172,20 @@ var __decorate$5 = (undefined && undefined.__decorate) || function (decorators,
151
172
  */
152
173
  class NavigationPaneSettings extends ChildProperty {
153
174
  }
154
- __decorate$5([
175
+ __decorate$6([
155
176
  Property('650px')
156
177
  ], NavigationPaneSettings.prototype, "maxWidth", void 0);
157
- __decorate$5([
178
+ __decorate$6([
158
179
  Property('240px')
159
180
  ], NavigationPaneSettings.prototype, "minWidth", void 0);
160
- __decorate$5([
181
+ __decorate$6([
161
182
  Property(true)
162
183
  ], NavigationPaneSettings.prototype, "visible", void 0);
184
+ __decorate$6([
185
+ Property('None')
186
+ ], NavigationPaneSettings.prototype, "sortOrder", void 0);
163
187
 
164
- var __decorate$6 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
188
+ var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
165
189
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
166
190
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
167
191
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -172,23 +196,26 @@ var __decorate$6 = (undefined && undefined.__decorate) || function (decorators,
172
196
  */
173
197
  class UploadSettings extends ChildProperty {
174
198
  }
175
- __decorate$6([
199
+ __decorate$7([
176
200
  Property('')
177
201
  ], UploadSettings.prototype, "allowedExtensions", void 0);
178
- __decorate$6([
202
+ __decorate$7([
179
203
  Property(true)
180
204
  ], UploadSettings.prototype, "autoUpload", void 0);
181
- __decorate$6([
205
+ __decorate$7([
182
206
  Property(false)
183
207
  ], UploadSettings.prototype, "autoClose", void 0);
184
- __decorate$6([
208
+ __decorate$7([
209
+ Property(false)
210
+ ], UploadSettings.prototype, "directoryUpload", void 0);
211
+ __decorate$7([
185
212
  Property(0)
186
213
  ], UploadSettings.prototype, "minFileSize", void 0);
187
- __decorate$6([
214
+ __decorate$7([
188
215
  Property(30000000)
189
216
  ], UploadSettings.prototype, "maxFileSize", void 0);
190
217
 
191
- var __decorate$7 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
218
+ var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
192
219
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
193
220
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
194
221
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -200,52 +227,52 @@ var __decorate$7 = (undefined && undefined.__decorate) || function (decorators,
200
227
  /* istanbul ignore next */
201
228
  class Column extends ChildProperty {
202
229
  }
203
- __decorate$7([
230
+ __decorate$8([
204
231
  Property('')
205
232
  ], Column.prototype, "field", void 0);
206
- __decorate$7([
233
+ __decorate$8([
207
234
  Property('')
208
235
  ], Column.prototype, "headerText", void 0);
209
- __decorate$7([
236
+ __decorate$8([
210
237
  Property('')
211
238
  ], Column.prototype, "width", void 0);
212
- __decorate$7([
239
+ __decorate$8([
213
240
  Property('')
214
241
  ], Column.prototype, "minWidth", void 0);
215
- __decorate$7([
242
+ __decorate$8([
216
243
  Property('')
217
244
  ], Column.prototype, "maxWidth", void 0);
218
- __decorate$7([
245
+ __decorate$8([
219
246
  Property('Left')
220
247
  ], Column.prototype, "textAlign", void 0);
221
- __decorate$7([
248
+ __decorate$8([
222
249
  Property(null)
223
250
  ], Column.prototype, "headerTextAlign", void 0);
224
- __decorate$7([
251
+ __decorate$8([
225
252
  Property(null)
226
253
  ], Column.prototype, "type", void 0);
227
- __decorate$7([
254
+ __decorate$8([
228
255
  Property(null)
229
256
  ], Column.prototype, "format", void 0);
230
- __decorate$7([
257
+ __decorate$8([
231
258
  Property(null)
232
259
  ], Column.prototype, "template", void 0);
233
- __decorate$7([
260
+ __decorate$8([
234
261
  Property(null)
235
262
  ], Column.prototype, "headerTemplate", void 0);
236
- __decorate$7([
263
+ __decorate$8([
237
264
  Property(true)
238
265
  ], Column.prototype, "allowSorting", void 0);
239
- __decorate$7([
266
+ __decorate$8([
240
267
  Property(true)
241
268
  ], Column.prototype, "allowResizing", void 0);
242
- __decorate$7([
269
+ __decorate$8([
243
270
  Property(null)
244
271
  ], Column.prototype, "customAttributes", void 0);
245
- __decorate$7([
272
+ __decorate$8([
246
273
  Property('')
247
274
  ], Column.prototype, "hideAtMedia", void 0);
248
- __decorate$7([
275
+ __decorate$8([
249
276
  Property(null)
250
277
  ], Column.prototype, "customFormat", void 0);
251
278
 
@@ -404,6 +431,8 @@ const SUBMENU_ICON = 'e-caret';
404
431
  /** @hidden */
405
432
  const GRID_VIEW = 'e-content';
406
433
  /** @hidden */
434
+ const GRID_CONTENT = 'e-gridcontent';
435
+ /** @hidden */
407
436
  const ICON_VIEW = 'e-list-parent';
408
437
  /** @hidden */
409
438
  const ICON_OPEN = 'e-icons e-fe-open';
@@ -876,7 +905,7 @@ function searchWordHandler(parent, value, isLayoutChange) {
876
905
  else {
877
906
  if (!parent.isFiltered) {
878
907
  if (parent.isSortByClicked) {
879
- parent.notify(layoutChange, { files: parent.largeiconsviewModule.items });
908
+ parent.notify(layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });
880
909
  parent.isSortByClicked = false;
881
910
  }
882
911
  else {
@@ -897,6 +926,7 @@ function searchWordHandler(parent, value, isLayoutChange) {
897
926
  * @private
898
927
  */
899
928
  function updateLayout(parent, view) {
929
+ parent.oldView = parent.view;
900
930
  parent.setProperties({ view: view }, true);
901
931
  if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {
902
932
  parent.layoutSelectedItems = parent.selectedItems;
@@ -920,7 +950,7 @@ function updateLayout(parent, view) {
920
950
  function getTargetModule(parent, element) {
921
951
  let tartgetModule = '';
922
952
  if (element) {
923
- if (closest(element, '.e-gridcontent')) {
953
+ if (closest(element, '.' + ROOT + '.' + CONTROL + ' .' + GRID_CONTENT)) {
924
954
  tartgetModule = 'detailsview';
925
955
  }
926
956
  else if (closest(element, '.' + LARGE_ICONS)) {
@@ -1061,18 +1091,19 @@ function fileType(file) {
1061
1091
  // eslint-disable-next-line
1062
1092
  function getImageUrl(parent, item) {
1063
1093
  const baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;
1094
+ let pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';
1064
1095
  let imgUrl;
1065
1096
  const fileName = encodeURIComponent(getValue('name', item));
1066
1097
  const fPath = getValue('filterPath', item);
1067
1098
  if (parent.hasId) {
1068
1099
  const imgId = getValue('id', item);
1069
- imgUrl = baseUrl + '?path=' + parent.path + '&id=' + imgId;
1100
+ imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;
1070
1101
  }
1071
1102
  else if (!isNullOrUndefined(fPath)) {
1072
- imgUrl = baseUrl + '?path=' + fPath.replace(/\\/g, '/') + fileName;
1103
+ imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\/g, '/')) + fileName;
1073
1104
  }
1074
1105
  else {
1075
- imgUrl = baseUrl + '?path=' + parent.path + fileName;
1106
+ imgUrl = baseUrl + pathUrl + parent.path + fileName;
1076
1107
  }
1077
1108
  imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();
1078
1109
  const eventArgs = {
@@ -1409,6 +1440,15 @@ function pasteHandler(parent) {
1409
1440
  parent.enablePaste = false;
1410
1441
  parent.notify(hidePaste, {});
1411
1442
  removeBlur(parent);
1443
+ const result = {
1444
+ files: null,
1445
+ error: {
1446
+ code: '402',
1447
+ message: getLocaleText(parent, 'Same-Folder-Error'),
1448
+ fileExists: null
1449
+ }
1450
+ };
1451
+ createDialog(parent, 'Error', result);
1412
1452
  }
1413
1453
  }
1414
1454
  }
@@ -1582,7 +1622,7 @@ function doPasteUpdate(parent, operation, result) {
1582
1622
  * @private
1583
1623
  */
1584
1624
  function readDropPath(parent) {
1585
- const pathId = getValue('_fm_id', parent.dropData);
1625
+ let pathId = getValue('_fm_id', parent.dropData);
1586
1626
  parent.expandedId = pathId;
1587
1627
  parent.itemData = [parent.dropData];
1588
1628
  if (parent.isPathDrag) {
@@ -1590,7 +1630,12 @@ function readDropPath(parent) {
1590
1630
  }
1591
1631
  else {
1592
1632
  if (parent.navigationpaneModule) {
1593
- const node = select('[data-uid="' + pathId + '"]', parent.navigationpaneModule.treeObj.element);
1633
+ let node = select('[data-uid="' + pathId + '"]', parent.navigationpaneModule.treeObj.element);
1634
+ if (!node) {
1635
+ let liElement = document.querySelector('[data-id = "' + getValue('id', parent.dropData) + '"]');
1636
+ pathId = liElement.getAttribute("data-uid");
1637
+ node = select('[data-uid="' + pathId + '"]', parent.navigationpaneModule.treeObj.element);
1638
+ }
1594
1639
  updatePath(node, parent.dropData, parent);
1595
1640
  }
1596
1641
  read(parent, dropPath, parent.dropPath);
@@ -2417,6 +2462,8 @@ function readSuccess(parent, result, event) {
2417
2462
  parent.notify(selectionChanged, {});
2418
2463
  }
2419
2464
  onFailure(parent, result, 'read');
2465
+ parent.setProperties({ path: parent.oldPath }, true);
2466
+ parent.pathNames.pop();
2420
2467
  }
2421
2468
  if (parent.isDragDrop && parent.isDropEnd) {
2422
2469
  if (parent.droppedObjects.length !== 0) {
@@ -3370,11 +3417,18 @@ function getOptions(parent, text, e, details, replaceItems) {
3370
3417
  ];
3371
3418
  break;
3372
3419
  case 'MultipleFileDetails':
3420
+ let index;
3373
3421
  options.dialogName = 'File Details';
3374
- strArr = details.name.split(',').map((val) => {
3375
- const index = val.indexOf('.') + 1;
3376
- return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');
3422
+ strArr = parent.itemData.map((val) => {
3423
+ index = val.name.indexOf('.') + 1;
3424
+ return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');
3377
3425
  });
3426
+ if (strArr[0] == undefined) {
3427
+ strArr = details.name.split(',').map((val) => {
3428
+ index = val.indexOf('.') + 1;
3429
+ return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');
3430
+ });
3431
+ }
3378
3432
  fileType$$1 = strArr.every((val, i, arr) => val === arr[0]) ?
3379
3433
  ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';
3380
3434
  location = details.location;
@@ -3582,7 +3636,7 @@ function onSubmitValidate(parent, ele) {
3582
3636
  onValidate(parent, ele);
3583
3637
  const len = ele.value.length - 1;
3584
3638
  if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&
3585
- (parent.showFileExtension || (parent.currentItemText.lastIndexOf('.') === -1))) {
3639
+ (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {
3586
3640
  addInvalid(parent, ele);
3587
3641
  }
3588
3642
  }
@@ -3767,9 +3821,9 @@ class LargeIconsView {
3767
3821
  altEnter: 'alt+enter',
3768
3822
  esc: 'escape',
3769
3823
  del: 'delete',
3770
- ctrlX: 'ctrl+x',
3771
- ctrlC: 'ctrl+c',
3772
- ctrlV: 'ctrl+v',
3824
+ ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',
3825
+ ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',
3826
+ ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',
3773
3827
  f2: 'f2',
3774
3828
  shiftdel: 'shift+delete',
3775
3829
  back: 'backspace',
@@ -3806,7 +3860,10 @@ class LargeIconsView {
3806
3860
  };
3807
3861
  this.items = [];
3808
3862
  this.items = this.renderList(args);
3809
- this.items = getSortedData(this.parent, this.items);
3863
+ this.items = this.allItems = getSortedData(this.parent, this.items);
3864
+ // if (this.parent.virtualizationSettings.enable) {
3865
+ // this.items = this.allItems.slice(0, this.parent.virtualizationSettings.largeIconsViewItemsCount);
3866
+ // }
3810
3867
  // eslint-disable-next-line
3811
3868
  this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);
3812
3869
  this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.listElements));
@@ -3848,6 +3905,10 @@ class LargeIconsView {
3848
3905
  this.getItemCount();
3849
3906
  this.addEventListener();
3850
3907
  this.wireEvents();
3908
+ // if (this.parent.virtualizationSettings.enable && this.allItems.length > 0) {
3909
+ // this.parent.virtualizationModule.setUlElementHeight();
3910
+ // this.parent.virtualizationModule.wireScrollEvent(false);
3911
+ // }
3851
3912
  this.isRendered = true;
3852
3913
  hideSpinner(this.parent.element);
3853
3914
  if (this.parent.selectedItems.length) {
@@ -4547,6 +4608,7 @@ class LargeIconsView {
4547
4608
  const val = this.parent.breadcrumbbarModule.searchObj.element.value;
4548
4609
  if (val === '' && !this.parent.isFiltered) {
4549
4610
  const id = getValue('id', details);
4611
+ this.parent.oldPath = this.parent.path;
4550
4612
  const newPath = this.parent.path + (isNullOrUndefined(id) ? text : id) + '/';
4551
4613
  this.parent.setProperties({ path: newPath }, true);
4552
4614
  this.parent.pathNames.push(text);
@@ -5166,7 +5228,7 @@ class LargeIconsView {
5166
5228
  else {
5167
5229
  for (let i = 0, len = this.items.length; i < len; i++) {
5168
5230
  const name = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);
5169
- if (items.indexOf(name) !== -1) {
5231
+ if ((items.indexOf(name) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {
5170
5232
  indexes.push(i);
5171
5233
  }
5172
5234
  }
@@ -5640,7 +5702,7 @@ class BreadCrumbBar {
5640
5702
  }
5641
5703
  }
5642
5704
  onSearchTextChange(args) {
5643
- this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;
5705
+ this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());
5644
5706
  }
5645
5707
  }
5646
5708
 
@@ -5752,7 +5814,7 @@ class ContextMenu$2 {
5752
5814
  data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;
5753
5815
  if (isNullOrUndefined(this.targetElement.getAttribute('aria-selected'))) {
5754
5816
  /* istanbul ignore next */
5755
- this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10)]);
5817
+ this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);
5756
5818
  }
5757
5819
  selected = true;
5758
5820
  /* istanbul ignore next */
@@ -6340,7 +6402,7 @@ const defaultLocale = {
6340
6402
  'Server-Error': 'ServerError: Invalid response from'
6341
6403
  };
6342
6404
 
6343
- var __decorate$8 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6405
+ var __decorate$9 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
6344
6406
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6345
6407
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
6346
6408
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -6376,7 +6438,6 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6376
6438
  this.uploadItem = [];
6377
6439
  this.deleteRecords = [];
6378
6440
  this.isFile = false;
6379
- this.sortBy = 'name';
6380
6441
  this.isCut = false;
6381
6442
  this.isSearchCut = false;
6382
6443
  this.isSearchDrag = false;
@@ -6410,6 +6471,8 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6410
6471
  this.droppedObjects = [];
6411
6472
  this.uploadingCount = 0;
6412
6473
  this.uploadedCount = 0;
6474
+ //Specifies whether the operating system is MAC or not
6475
+ this.isMac = false;
6413
6476
  FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu$2);
6414
6477
  }
6415
6478
  /**
@@ -6503,6 +6566,12 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6503
6566
  args: [this]
6504
6567
  });
6505
6568
  }
6569
+ if (this.virtualizationSettings.enable) {
6570
+ modules.push({
6571
+ member: 'virtualization',
6572
+ args: [this]
6573
+ });
6574
+ }
6506
6575
  return modules;
6507
6576
  }
6508
6577
  /**
@@ -6517,6 +6586,7 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6517
6586
  this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);
6518
6587
  this.setProperties({ selectedItems: slItems }, true);
6519
6588
  this.fileView = this.view;
6589
+ this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;
6520
6590
  this.setRtl(this.enableRtl);
6521
6591
  this.addEventListeners();
6522
6592
  read(this, (this.path !== this.originalPath) ? initialEnd : finalizeEnd, this.path);
@@ -6714,6 +6784,7 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6714
6784
  enableRtl: this.enableRtl,
6715
6785
  uploading: this.onUploading.bind(this),
6716
6786
  removing: this.onRemoving.bind(this),
6787
+ canceling: this.onCancel.bind(this),
6717
6788
  clearing: this.onClearing.bind(this),
6718
6789
  selected: this.onSelected.bind(this),
6719
6790
  success: this.onUploadSuccess.bind(this),
@@ -6722,6 +6793,7 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6722
6793
  minFileSize: this.uploadSettings.minFileSize,
6723
6794
  maxFileSize: this.uploadSettings.maxFileSize,
6724
6795
  allowedExtensions: this.uploadSettings.allowedExtensions,
6796
+ directoryUpload: this.uploadSettings.directoryUpload,
6725
6797
  fileListRendering: this.onFileListRender.bind(this)
6726
6798
  });
6727
6799
  this.uploadObj.appendTo('#' + this.element.id + UPLOAD_ID);
@@ -6734,6 +6806,7 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6734
6806
  this.uploadObj.minFileSize = this.uploadSettings.minFileSize;
6735
6807
  this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;
6736
6808
  this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;
6809
+ this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;
6737
6810
  this.uploadObj.dataBind();
6738
6811
  }
6739
6812
  onBeforeOpen(args) {
@@ -6783,7 +6856,7 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6783
6856
  }
6784
6857
  }
6785
6858
  const data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));
6786
- args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }];
6859
+ args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];
6787
6860
  const uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;
6788
6861
  // eslint-disable-next-line
6789
6862
  const ajaxSettings = {
@@ -6821,6 +6894,11 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6821
6894
  }
6822
6895
  }
6823
6896
  /* istanbul ignore next */
6897
+ onCancel(args) {
6898
+ const data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));
6899
+ args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];
6900
+ }
6901
+ /* istanbul ignore next */
6824
6902
  onClearing() {
6825
6903
  if (this.isOpened) {
6826
6904
  this.uploadDialogObj.hide();
@@ -7090,6 +7168,13 @@ let FileManager = FileManager_1 = class FileManager extends Component {
7090
7168
  refresh(this);
7091
7169
  this.notify(sortByChange, {});
7092
7170
  break;
7171
+ case 'sortBy':
7172
+ refresh(this);
7173
+ this.notify(sortByChange, {});
7174
+ if (this.view === 'Details') {
7175
+ this.notify(sortColumn, {});
7176
+ }
7177
+ break;
7093
7178
  case 'popupTarget':
7094
7179
  if (this.uploadDialogObj) {
7095
7180
  this.uploadDialogObj.target = newProp.popupTarget;
@@ -7413,148 +7498,154 @@ let FileManager = FileManager_1 = class FileManager extends Component {
7413
7498
  }
7414
7499
  }
7415
7500
  };
7416
- __decorate$8([
7501
+ __decorate$9([
7417
7502
  Complex({}, AjaxSettings)
7418
7503
  ], FileManager.prototype, "ajaxSettings", void 0);
7419
- __decorate$8([
7504
+ __decorate$9([
7420
7505
  Property(false)
7421
7506
  ], FileManager.prototype, "allowDragAndDrop", void 0);
7422
- __decorate$8([
7507
+ __decorate$9([
7423
7508
  Property(true)
7424
7509
  ], FileManager.prototype, "allowMultiSelection", void 0);
7425
- __decorate$8([
7510
+ __decorate$9([
7426
7511
  Complex({}, ContextMenuSettings)
7427
7512
  ], FileManager.prototype, "contextMenuSettings", void 0);
7428
- __decorate$8([
7513
+ __decorate$9([
7429
7514
  Property('')
7430
7515
  ], FileManager.prototype, "cssClass", void 0);
7431
- __decorate$8([
7516
+ __decorate$9([
7432
7517
  Complex({}, DetailsViewSettings)
7433
7518
  ], FileManager.prototype, "detailsViewSettings", void 0);
7434
- __decorate$8([
7519
+ __decorate$9([
7520
+ Complex({}, VirtualizationSettings)
7521
+ ], FileManager.prototype, "virtualizationSettings", void 0);
7522
+ __decorate$9([
7435
7523
  Property(true)
7436
7524
  ], FileManager.prototype, "enableHtmlSanitizer", void 0);
7437
- __decorate$8([
7525
+ __decorate$9([
7438
7526
  Property(false)
7439
7527
  ], FileManager.prototype, "enablePersistence", void 0);
7440
- __decorate$8([
7528
+ __decorate$9([
7441
7529
  Property('400px')
7442
7530
  ], FileManager.prototype, "height", void 0);
7443
- __decorate$8([
7531
+ __decorate$9([
7444
7532
  Property('LargeIcons')
7445
7533
  ], FileManager.prototype, "view", void 0);
7446
- __decorate$8([
7534
+ __decorate$9([
7447
7535
  Complex({}, NavigationPaneSettings)
7448
7536
  ], FileManager.prototype, "navigationPaneSettings", void 0);
7449
- __decorate$8([
7537
+ __decorate$9([
7450
7538
  Property('/')
7451
7539
  ], FileManager.prototype, "path", void 0);
7452
- __decorate$8([
7540
+ __decorate$9([
7453
7541
  Property(null)
7454
7542
  ], FileManager.prototype, "popupTarget", void 0);
7455
- __decorate$8([
7543
+ __decorate$9([
7456
7544
  Complex({}, SearchSettings)
7457
7545
  ], FileManager.prototype, "searchSettings", void 0);
7458
- __decorate$8([
7546
+ __decorate$9([
7459
7547
  Property()
7460
7548
  ], FileManager.prototype, "selectedItems", void 0);
7461
- __decorate$8([
7549
+ __decorate$9([
7462
7550
  Property(true)
7463
7551
  ], FileManager.prototype, "showFileExtension", void 0);
7464
- __decorate$8([
7552
+ __decorate$9([
7465
7553
  Property(null)
7466
7554
  ], FileManager.prototype, "rootAliasName", void 0);
7467
- __decorate$8([
7555
+ __decorate$9([
7468
7556
  Property(false)
7469
7557
  ], FileManager.prototype, "showHiddenItems", void 0);
7470
- __decorate$8([
7558
+ __decorate$9([
7471
7559
  Property(true)
7472
7560
  ], FileManager.prototype, "showThumbnail", void 0);
7473
- __decorate$8([
7561
+ __decorate$9([
7474
7562
  Property('Ascending')
7475
7563
  ], FileManager.prototype, "sortOrder", void 0);
7476
- __decorate$8([
7564
+ __decorate$9([
7565
+ Property('name')
7566
+ ], FileManager.prototype, "sortBy", void 0);
7567
+ __decorate$9([
7477
7568
  Complex({}, ToolbarSettings)
7478
7569
  ], FileManager.prototype, "toolbarSettings", void 0);
7479
- __decorate$8([
7570
+ __decorate$9([
7480
7571
  Complex({}, UploadSettings)
7481
7572
  ], FileManager.prototype, "uploadSettings", void 0);
7482
- __decorate$8([
7573
+ __decorate$9([
7483
7574
  Property('100%')
7484
7575
  ], FileManager.prototype, "width", void 0);
7485
- __decorate$8([
7576
+ __decorate$9([
7486
7577
  Event()
7487
7578
  ], FileManager.prototype, "fileLoad", void 0);
7488
- __decorate$8([
7579
+ __decorate$9([
7489
7580
  Event()
7490
7581
  ], FileManager.prototype, "fileOpen", void 0);
7491
- __decorate$8([
7582
+ __decorate$9([
7492
7583
  Event()
7493
7584
  ], FileManager.prototype, "beforeDownload", void 0);
7494
- __decorate$8([
7585
+ __decorate$9([
7495
7586
  Event()
7496
7587
  ], FileManager.prototype, "beforeImageLoad", void 0);
7497
- __decorate$8([
7588
+ __decorate$9([
7498
7589
  Event()
7499
7590
  ], FileManager.prototype, "beforePopupClose", void 0);
7500
- __decorate$8([
7591
+ __decorate$9([
7501
7592
  Event()
7502
7593
  ], FileManager.prototype, "beforePopupOpen", void 0);
7503
- __decorate$8([
7594
+ __decorate$9([
7504
7595
  Event()
7505
7596
  ], FileManager.prototype, "beforeSend", void 0);
7506
- __decorate$8([
7597
+ __decorate$9([
7507
7598
  Event()
7508
7599
  ], FileManager.prototype, "created", void 0);
7509
- __decorate$8([
7600
+ __decorate$9([
7510
7601
  Event()
7511
7602
  ], FileManager.prototype, "destroyed", void 0);
7512
- __decorate$8([
7603
+ __decorate$9([
7513
7604
  Event()
7514
7605
  ], FileManager.prototype, "fileDragStart", void 0);
7515
- __decorate$8([
7606
+ __decorate$9([
7516
7607
  Event()
7517
7608
  ], FileManager.prototype, "fileDragging", void 0);
7518
- __decorate$8([
7609
+ __decorate$9([
7519
7610
  Event()
7520
7611
  ], FileManager.prototype, "fileDragStop", void 0);
7521
- __decorate$8([
7612
+ __decorate$9([
7522
7613
  Event()
7523
7614
  ], FileManager.prototype, "fileDropped", void 0);
7524
- __decorate$8([
7615
+ __decorate$9([
7525
7616
  Event()
7526
7617
  ], FileManager.prototype, "fileSelection", void 0);
7527
- __decorate$8([
7618
+ __decorate$9([
7528
7619
  Event()
7529
7620
  ], FileManager.prototype, "fileSelect", void 0);
7530
- __decorate$8([
7621
+ __decorate$9([
7531
7622
  Event()
7532
7623
  ], FileManager.prototype, "menuClick", void 0);
7533
- __decorate$8([
7624
+ __decorate$9([
7534
7625
  Event()
7535
7626
  ], FileManager.prototype, "menuOpen", void 0);
7536
- __decorate$8([
7627
+ __decorate$9([
7537
7628
  Event()
7538
7629
  ], FileManager.prototype, "failure", void 0);
7539
- __decorate$8([
7630
+ __decorate$9([
7540
7631
  Event()
7541
7632
  ], FileManager.prototype, "popupClose", void 0);
7542
- __decorate$8([
7633
+ __decorate$9([
7543
7634
  Event()
7544
7635
  ], FileManager.prototype, "popupOpen", void 0);
7545
- __decorate$8([
7636
+ __decorate$9([
7546
7637
  Event()
7547
7638
  ], FileManager.prototype, "success", void 0);
7548
- __decorate$8([
7639
+ __decorate$9([
7549
7640
  Event()
7550
7641
  ], FileManager.prototype, "toolbarClick", void 0);
7551
- __decorate$8([
7642
+ __decorate$9([
7552
7643
  Event()
7553
7644
  ], FileManager.prototype, "toolbarCreate", void 0);
7554
- __decorate$8([
7645
+ __decorate$9([
7555
7646
  Event()
7556
7647
  ], FileManager.prototype, "uploadListCreate", void 0);
7557
- FileManager = FileManager_1 = __decorate$8([
7648
+ FileManager = FileManager_1 = __decorate$9([
7558
7649
  NotifyPropertyChanges
7559
7650
  ], FileManager);
7560
7651
 
@@ -7704,9 +7795,12 @@ class Toolbar$1 {
7704
7795
  toolbarCreateHandler() {
7705
7796
  if (!isNullOrUndefined(select('#' + this.getId('SortBy'), this.parent.element))) {
7706
7797
  const items = [
7707
- { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'), iconCss: TB_OPTION_DOT },
7708
- { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size') },
7709
- { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified') },
7798
+ { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),
7799
+ iconCss: this.parent.sortBy === 'name' ? TB_OPTION_DOT : '' },
7800
+ { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),
7801
+ iconCss: this.parent.sortBy === 'size' ? TB_OPTION_DOT : '' },
7802
+ { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),
7803
+ iconCss: this.parent.sortBy === '_fm_modified' ? TB_OPTION_DOT : '' },
7710
7804
  { separator: true },
7711
7805
  { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),
7712
7806
  iconCss: this.parent.sortOrder === 'Ascending' ? TB_OPTION_TICK : '' },
@@ -7742,7 +7836,6 @@ class Toolbar$1 {
7742
7836
  cssClass: getCssClass(this.parent, 'e-caret-hide ' + ROOT_POPUP),
7743
7837
  items: layoutItems, select: this.layoutChange.bind(this),
7744
7838
  enableRtl: this.parent.enableRtl,
7745
- enableHtmlSanitizer: this.parent.enableHtmlSanitizer,
7746
7839
  content: '<span class="e-tbar-btn-text">' + getLocaleText(this.parent, 'View') + '</span>'
7747
7840
  });
7748
7841
  this.layoutBtnObj.isStringTemplate = true;
@@ -8042,6 +8135,178 @@ class Toolbar$1 {
8042
8135
  }
8043
8136
  }
8044
8137
 
8138
+ class Virtualization {
8139
+ constructor(instance) {
8140
+ this.largeIconsViewItemsCount = 40;
8141
+ this.filemanagerInstance = instance;
8142
+ this.largeIconInstance = instance.largeiconsviewModule;
8143
+ }
8144
+ // Update the scroller height based on the items count.
8145
+ setUlElementHeight() {
8146
+ this.rowItemCount = this.ValidateItemCount(Object.keys(this.largeIconInstance.allItems).length);
8147
+ this.lastRowCount = (this.largeIconInstance.allItems.length - this.largeIconsViewItemsCount) % this.rowItemCount ?
8148
+ (this.largeIconInstance.allItems.length - this.largeIconsViewItemsCount) % this.rowItemCount : this.rowItemCount;
8149
+ this.topElement = this.filemanagerInstance.createElement('div');
8150
+ this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);
8151
+ this.bottomElement = this.filemanagerInstance.createElement('div');
8152
+ this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);
8153
+ const marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top')) +
8154
+ parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'));
8155
+ this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;
8156
+ this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;
8157
+ this.topElement.style.height = 0 + 'px';
8158
+ this.bottomElement.style.height = this.totalHeight + 'px';
8159
+ this.topElementHeight = 0;
8160
+ this.bottomElementHeight = this.totalHeight;
8161
+ this.listDiff = 0;
8162
+ this.renderedCount = this.largeIconsViewItemsCount;
8163
+ }
8164
+ // Calculated the maximum number of items can be rendered in each row.
8165
+ ValidateItemCount(dataSourceLength) {
8166
+ const width = parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth));
8167
+ const marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-right')) +
8168
+ parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-left'));
8169
+ let itemCount = Math.floor(width / (this.largeIconInstance.itemList[0].offsetWidth + marginValue));
8170
+ if (itemCount > dataSourceLength) {
8171
+ itemCount = dataSourceLength;
8172
+ }
8173
+ return itemCount;
8174
+ }
8175
+ // Bind the scroll event for large icons view ul element.
8176
+ wireScrollEvent(destroy) {
8177
+ if (!destroy) {
8178
+ EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);
8179
+ }
8180
+ else {
8181
+ EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);
8182
+ }
8183
+ }
8184
+ // Update the top and bottom element height and update the scroll position.
8185
+ onVirtualUiScroll(e) {
8186
+ let startingHeight = 0;
8187
+ this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;
8188
+ const scroll = this.getscrollerHeight(startingHeight);
8189
+ this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);
8190
+ this.bottomElementHeight = this.totalHeight - this.topElementHeight;
8191
+ [this.topElementHeight, this.bottomElementHeight] = scroll <= this.totalHeight ?
8192
+ [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0];
8193
+ if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {
8194
+ this.topElement.style.height = this.topElementHeight + 'px';
8195
+ this.bottomElement.style.height = this.bottomElementHeight + 'px';
8196
+ // checked whether the scrolling is upward/downward
8197
+ if (scroll > this.scrollPosition) {
8198
+ const listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));
8199
+ this.onNormalScroll(listDiff, true);
8200
+ }
8201
+ else {
8202
+ const listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));
8203
+ this.onNormalScroll(listDiff, false);
8204
+ }
8205
+ }
8206
+ this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);
8207
+ this.scrollPosition = scroll;
8208
+ this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.largeIconInstance.element));
8209
+ this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -
8210
+ this.largeIconsViewItemsCount, this.renderedCount);
8211
+ }
8212
+ // Calculated the scroller height.
8213
+ getscrollerHeight(startingHeight) {
8214
+ return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :
8215
+ (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);
8216
+ }
8217
+ // Update the UI based on the scrolled position.
8218
+ onNormalScroll(listDiff, isScrollingDown) {
8219
+ for (let i = 0; i < listDiff; i++) {
8220
+ this.updateUI(isScrollingDown);
8221
+ }
8222
+ this.updateSelection();
8223
+ }
8224
+ // Updating the items in large icons view dynamically.
8225
+ updateUI(isScrollingDown) {
8226
+ if (isScrollingDown) {
8227
+ this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);
8228
+ if (this.items.length > 0) {
8229
+ this.listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);
8230
+ this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.listElements));
8231
+ this.itemList.forEach(liEle => {
8232
+ this.largeIconInstance.element.firstElementChild.insertBefore(liEle, this.bottomElement);
8233
+ });
8234
+ this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?
8235
+ this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;
8236
+ for (let i = 0; i < this.rowItemCount; i++) {
8237
+ detach(this.topElement.nextElementSibling);
8238
+ }
8239
+ }
8240
+ }
8241
+ else {
8242
+ let lastItemIndex;
8243
+ let isAllRendered;
8244
+ if (this.renderedCount == this.largeIconInstance.allItems.length) {
8245
+ lastItemIndex = this.renderedCount - (this.largeIconsViewItemsCount - this.rowItemCount + this.lastRowCount);
8246
+ this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.largeIconsViewItemsCount) ?
8247
+ this.largeIconsViewItemsCount : (this.renderedCount - this.lastRowCount);
8248
+ isAllRendered = true;
8249
+ }
8250
+ else {
8251
+ lastItemIndex = this.renderedCount - this.largeIconsViewItemsCount;
8252
+ this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.largeIconsViewItemsCount) ?
8253
+ this.largeIconsViewItemsCount : (this.renderedCount - this.rowItemCount);
8254
+ }
8255
+ let startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;
8256
+ this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);
8257
+ if (this.items.length > 0) {
8258
+ this.listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);
8259
+ this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.listElements));
8260
+ for (let len = this.itemList.length; len > 0; len--) {
8261
+ this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);
8262
+ }
8263
+ for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {
8264
+ detach(this.bottomElement.previousElementSibling);
8265
+ }
8266
+ }
8267
+ }
8268
+ }
8269
+ // Update the selected item state.
8270
+ updateSelection() {
8271
+ for (let i = 0; i < this.filemanagerInstance.selectedItems.length; i++) {
8272
+ for (let j = 0; j < this.items.length; j++) {
8273
+ if (this.filemanagerInstance.selectedItems[i] == getValue('name', this.items[j])) {
8274
+ this.updateCheckState(this.itemList[j]);
8275
+ }
8276
+ }
8277
+ }
8278
+ }
8279
+ // Update the check state for items.
8280
+ updateCheckState(liItem) {
8281
+ if (this.filemanagerInstance.allowMultiSelection) {
8282
+ addClass([liItem], [ACTIVE]);
8283
+ liItem.setAttribute('aria-selected', 'true');
8284
+ const checkEle = select('.' + FRAME, liItem);
8285
+ if (!checkEle.classList.contains(CHECK)) {
8286
+ addClass([checkEle], CHECK);
8287
+ closest(checkEle, '.' + CB_WRAP).setAttribute('aria-checked', 'true');
8288
+ }
8289
+ }
8290
+ }
8291
+ /**
8292
+ * For internal use only - Get the module name.
8293
+ *
8294
+ * @returns {string} - returns the module name.
8295
+ * @private
8296
+ */
8297
+ getModuleName() {
8298
+ return 'virtualization';
8299
+ }
8300
+ destroy() {
8301
+ if (this.filemanagerInstance.isDestroyed) {
8302
+ return;
8303
+ }
8304
+ if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {
8305
+ this.wireScrollEvent(true);
8306
+ }
8307
+ }
8308
+ }
8309
+
8045
8310
  /**
8046
8311
  * File Manager actions modules
8047
8312
  */
@@ -8056,6 +8321,7 @@ class NavigationPane {
8056
8321
  * @param {IFileManager} parent - specifies the parent element.
8057
8322
  * @hidden
8058
8323
  */
8324
+ /* istanbul ignore next */
8059
8325
  constructor(parent) {
8060
8326
  this.removeNodes = [];
8061
8327
  this.moveNames = [];
@@ -8077,9 +8343,9 @@ class NavigationPane {
8077
8343
  altEnter: 'alt+enter',
8078
8344
  esc: 'escape',
8079
8345
  del: 'delete',
8080
- ctrlX: 'ctrl+x',
8081
- ctrlC: 'ctrl+c',
8082
- ctrlV: 'ctrl+v',
8346
+ ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',
8347
+ ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',
8348
+ ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',
8083
8349
  ctrlShiftN: 'ctrl+shift+n',
8084
8350
  shiftF10: 'shift+F10',
8085
8351
  f2: 'f2'
@@ -8110,6 +8376,7 @@ class NavigationPane {
8110
8376
  hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'
8111
8377
  },
8112
8378
  enableHtmlSanitizer: this.parent.enableHtmlSanitizer,
8379
+ sortOrder: this.parent.navigationPaneSettings.sortOrder,
8113
8380
  nodeSelecting: this.onNodeSelecting.bind(this),
8114
8381
  nodeSelected: this.onNodeSelected.bind(this),
8115
8382
  nodeExpanding: this.onNodeExpand.bind(this),
@@ -8230,7 +8497,7 @@ class NavigationPane {
8230
8497
  this.parent.trigger('fileOpen', eventArgs);
8231
8498
  args.cancel = eventArgs.cancel;
8232
8499
  if (args.cancel) {
8233
- this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] != args.node.getAttribute('data-uid') : false;
8500
+ this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;
8234
8501
  this.treeObj.selectedNodes = this.isNodeClickCalled ? this.previousSelected : this.treeObj.selectedNodes;
8235
8502
  this.previousSelected = this.treeObj.selectedNodes;
8236
8503
  if (!isNullOrUndefined(this.parent) && !isNullOrUndefined(this.parent.contextmenuModule)) {
@@ -8268,13 +8535,16 @@ class NavigationPane {
8268
8535
  const nodeData = this.getTreeData(getValue('id', args.nodeData));
8269
8536
  this.parent.selectedItems = [];
8270
8537
  this.parent.itemData = nodeData;
8538
+ const previousPath = this.parent.path;
8271
8539
  updatePath(args.node, this.parent.itemData[0], this.parent);
8272
- this.expandNodeTarget = null;
8273
- if (args.node.querySelector('.' + ICONS) && args.node.querySelector('.' + LIST_ITEM) === null) {
8274
- this.expandNodeTarget = 'add';
8540
+ if (previousPath !== this.parent.path) {
8541
+ this.expandNodeTarget = null;
8542
+ if (args.node.querySelector('.' + ICONS) && args.node.querySelector('.' + LIST_ITEM) === null) {
8543
+ this.expandNodeTarget = 'add';
8544
+ }
8545
+ read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);
8546
+ this.parent.visitedItem = args.node;
8275
8547
  }
8276
- read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);
8277
- this.parent.visitedItem = args.node;
8278
8548
  this.isPathDragged = this.isRenameParent = this.isRightClick = false;
8279
8549
  }
8280
8550
  /* istanbul ignore next */
@@ -8332,7 +8602,7 @@ class NavigationPane {
8332
8602
  const currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);
8333
8603
  if (this.expandNodeTarget === 'add') {
8334
8604
  const sNode = select('[data-uid="' + this.treeObj.selectedNodes[0] + '"]', this.treeObj.element);
8335
- const ul = select('.' + LIST_PARENT, sNode);
8605
+ const ul = (!isNullOrUndefined(sNode)) ? select('.' + LIST_PARENT, sNode) : null;
8336
8606
  if (isNullOrUndefined(ul)) {
8337
8607
  this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);
8338
8608
  }
@@ -8342,6 +8612,8 @@ class NavigationPane {
8342
8612
  if (isNullOrUndefined(currFiles)) {
8343
8613
  setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);
8344
8614
  }
8615
+ if (this.parent.uploadObj.directoryUpload)
8616
+ this.updateTree(args);
8345
8617
  }
8346
8618
  updateTree(args) {
8347
8619
  if (this.treeObj) {
@@ -8497,6 +8769,9 @@ class NavigationPane {
8497
8769
  break;
8498
8770
  case 'navigationPaneSettings':
8499
8771
  read(this.parent, finalizeEnd, '/');
8772
+ if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {
8773
+ this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;
8774
+ }
8500
8775
  break;
8501
8776
  }
8502
8777
  }
@@ -8789,13 +9064,15 @@ class NavigationPane {
8789
9064
  removeActive(this.parent);
8790
9065
  break;
8791
9066
  case 'del':
8792
- this.updateItemData();
8793
- if (!hasEditAccess(this.parent.itemData[0])) {
8794
- createDeniedDialog(this.parent, this.parent.itemData[0], permissionEdit);
8795
- }
8796
- else {
8797
- this.removeNodes = [];
8798
- createDialog(this.parent, 'Delete');
9067
+ if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {
9068
+ this.updateItemData();
9069
+ if (!hasEditAccess(this.parent.itemData[0])) {
9070
+ createDeniedDialog(this.parent, this.parent.itemData[0], permissionEdit);
9071
+ }
9072
+ else {
9073
+ this.removeNodes = [];
9074
+ createDialog(this.parent, 'Delete');
9075
+ }
8799
9076
  }
8800
9077
  break;
8801
9078
  case 'ctrlC':
@@ -8896,6 +9173,9 @@ class DetailsView {
8896
9173
  this.isNameWidth = false;
8897
9174
  this.pasteOperation = false;
8898
9175
  this.uploadOperation = false;
9176
+ /* istanbul ignore next */
9177
+ // eslint:disable-next-line
9178
+ this.actionDivert = false;
8899
9179
  Grid.Inject(Resize, ContextMenu$1, Sort, VirtualScroll);
8900
9180
  this.parent = parent;
8901
9181
  this.element = select('#' + this.parent.element.id + GRID_ID, this.parent.element);
@@ -8927,9 +9207,9 @@ class DetailsView {
8927
9207
  home: 'home',
8928
9208
  moveUp: 'uparrow',
8929
9209
  del: 'delete',
8930
- ctrlX: 'ctrl+x',
8931
- ctrlC: 'ctrl+c',
8932
- ctrlV: 'ctrl+v',
9210
+ ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',
9211
+ ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',
9212
+ ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',
8933
9213
  ctrlShiftN: 'ctrl+shift+n',
8934
9214
  shiftdel: 'shift+delete',
8935
9215
  ctrlD: 'ctrl+d',
@@ -8970,6 +9250,10 @@ class DetailsView {
8970
9250
  },
8971
9251
  enableRtl: this.parent.enableRtl,
8972
9252
  pageSettings: { pageSize: 20 },
9253
+ // enableVirtualization: this.parent.virtualizationSettings.enable,
9254
+ enablePersistence: this.parent.enablePersistence,
9255
+ // enableVirtualMaskRow: true,
9256
+ // pageSettings: { pageSize: this.parent.virtualizationSettings.detailsViewItemsCount },
8973
9257
  sortSettings: { allowUnsort: false, columns: sortSettings },
8974
9258
  columns: columns,
8975
9259
  recordDoubleClick: this.DblClickEvents.bind(this),
@@ -9178,14 +9462,19 @@ class DetailsView {
9178
9462
  }
9179
9463
  }
9180
9464
  onBeforeDataBound(args) {
9465
+ // if (!this.parent.virtualizationSettings.enable) {
9181
9466
  showSpinner(this.parent.element);
9182
9467
  // eslint-disable-next-line
9183
9468
  const items = getSortedData(this.parent, this.gridObj.dataSource);
9184
9469
  args.result = items;
9470
+ // }
9185
9471
  }
9186
9472
  /* istanbul ignore next */
9187
9473
  onDataBound() {
9188
9474
  this.createDragObj();
9475
+ // if ((this.parent.selectedItems.length !== 0 && !this.parent.virtualizationSettings.enable) ||
9476
+ // ((this.parent.selectedItems.length !== 0 && this.parent.virtualizationSettings.enable &&
9477
+ // this.element.querySelector('.e-content').scrollTop == 0))) {
9189
9478
  if (this.parent.selectedItems.length !== 0) {
9190
9479
  this.selectRecords(this.parent.selectedItems);
9191
9480
  }
@@ -9453,6 +9742,7 @@ class DetailsView {
9453
9742
  const val = this.parent.breadcrumbbarModule.searchObj.element.value;
9454
9743
  if (val === '' && !this.parent.isFiltered) {
9455
9744
  const id = getValue('id', data);
9745
+ this.parent.oldPath = this.parent.path;
9456
9746
  const newPath = this.parent.path + (isNullOrUndefined(id) ? name : id) + '/';
9457
9747
  this.parent.setProperties({ path: newPath }, true);
9458
9748
  this.parent.pathNames.push(name);
@@ -9738,7 +10028,13 @@ class DetailsView {
9738
10028
  if (!dragLi) {
9739
10029
  return null;
9740
10030
  }
9741
- const name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;
10031
+ let name;
10032
+ if (dragLi.getElementsByClassName('e-fe-text')[0]) {
10033
+ name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;
10034
+ }
10035
+ else if (dragLi.getElementsByClassName("e-rowcell e-templatecell")[0].nextElementSibling) {
10036
+ name = dragLi.getElementsByClassName("e-rowcell e-templatecell")[0].nextElementSibling.innerText;
10037
+ }
9742
10038
  if (dragLi && !dragLi.querySelector('.e-active')) {
9743
10039
  this.selectRecords([name]);
9744
10040
  }
@@ -9938,6 +10234,10 @@ class DetailsView {
9938
10234
  }
9939
10235
  const len = rows.length;
9940
10236
  if (len > 0) {
10237
+ // if (this.parent.virtualizationSettings.enable) {
10238
+ // this.parent.currentItemText = getValue('name', args.data);
10239
+ // }
10240
+ // else if (len > 0) {
9941
10241
  // eslint-disable-next-line
9942
10242
  const data = this.gridObj.getRowsObject()[rows[len - 1]].data;
9943
10243
  this.parent.currentItemText = getValue('name', data);
@@ -10081,7 +10381,7 @@ class DetailsView {
10081
10381
  }
10082
10382
  getFocusedItemIndex() {
10083
10383
  return (!isNullOrUndefined(this.getFocusedItem())) ?
10084
- parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) : null;
10384
+ parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;
10085
10385
  }
10086
10386
  /* istanbul ignore next */
10087
10387
  // eslint:disable-next-line
@@ -10120,14 +10420,13 @@ class DetailsView {
10120
10420
  case 'f2':
10121
10421
  case 'moveDown':
10122
10422
  case 'moveUp':
10423
+ case 'ctrlD':
10123
10424
  e.preventDefault();
10124
10425
  break;
10125
10426
  default:
10126
10427
  break;
10127
10428
  }
10128
10429
  }
10129
- /* istanbul ignore next */
10130
- // eslint:disable-next-line
10131
10430
  keyupHandler(e) {
10132
10431
  if (!this.isRendered) {
10133
10432
  return;
@@ -10204,8 +10503,13 @@ class DetailsView {
10204
10503
  else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {
10205
10504
  return;
10206
10505
  }
10506
+ else if (!this.actionDivert) {
10507
+ this.addHeaderFocus();
10508
+ this.actionDivert = true;
10509
+ }
10207
10510
  else {
10208
10511
  this.addFocus(0);
10512
+ this.actionDivert = false;
10209
10513
  }
10210
10514
  }
10211
10515
  break;
@@ -10492,6 +10796,18 @@ class DetailsView {
10492
10796
  addClass([itemElement], [FOCUS, FOCUSED]);
10493
10797
  }
10494
10798
  }
10799
+ addHeaderFocus() {
10800
+ const treeFocus = select('.e-row', this.element);
10801
+ this.gridObj.element.setAttribute('tabindex', '-1');
10802
+ const nameFocus = select('th.e-fe-grid-name', this.element);
10803
+ nameFocus.setAttribute('tabindex', '0');
10804
+ nameFocus.focus();
10805
+ addClass([nameFocus], [FOCUS, FOCUSED]);
10806
+ treeFocus.setAttribute('tabindex', '0');
10807
+ if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {
10808
+ removeClass([treeFocus], [FOCUS, FOCUSED]);
10809
+ }
10810
+ }
10495
10811
  getFocusedItem() {
10496
10812
  return select('.' + FOCUSED, this.element);
10497
10813
  }
@@ -10702,5 +11018,5 @@ class DetailsView {
10702
11018
  * File Manager all modules
10703
11019
  */
10704
11020
 
10705
- export { AjaxSettings, toolbarItems, ToolbarSettings, SearchSettings, columnArray, DetailsViewSettings, fileItems, folderItems, layoutItems, ContextMenuSettings, NavigationPaneSettings, UploadSettings, Column, TOOLBAR_ID, LAYOUT_ID, NAVIGATION_ID, TREE_ID, GRID_ID, LARGEICON_ID, DIALOG_ID, ALT_DIALOG_ID, IMG_DIALOG_ID, EXTN_DIALOG_ID, UPLOAD_DIALOG_ID, RETRY_DIALOG_ID, CONTEXT_MENU_ID, SORTBY_ID, VIEW_ID, SPLITTER_ID, CONTENT_ID, BREADCRUMBBAR_ID, UPLOAD_ID, RETRY_ID, SEARCH_ID, ROOT, CONTROL, CHECK_SELECT, ROOT_POPUP, MOBILE, MOB_POPUP, MULTI_SELECT, FILTER, LAYOUT, NAVIGATION, LAYOUT_CONTENT, LARGE_ICONS, TB_ITEM, LIST_ITEM, LIST_TEXT, LIST_PARENT, TB_OPTION_TICK, TB_OPTION_DOT, BLUR, ACTIVE, HOVER, FOCUS, FOCUSED, CHECK, FRAME, CB_WRAP, ROW, ROWCELL, EMPTY, EMPTY_CONTENT, EMPTY_INNER_CONTENT, CLONE, DROP_FOLDER, DROP_FILE, FOLDER, ICON_IMAGE, ICON_MUSIC, ICON_VIDEO, LARGE_ICON, LARGE_EMPTY_FOLDER, LARGE_EMPTY_FOLDER_TWO, LARGE_ICON_FOLDER, SELECTED_ITEMS, TEXT_CONTENT, GRID_HEADER, TEMPLATE_CELL, TREE_VIEW, MENU_ITEM, MENU_ICON, SUBMENU_ICON, GRID_VIEW, ICON_VIEW, ICON_OPEN, ICON_UPLOAD, ICON_CUT, ICON_COPY, ICON_PASTE, ICON_DELETE, ICON_RENAME, ICON_NEWFOLDER, ICON_DETAILS, ICON_SHORTBY, ICON_REFRESH, ICON_SELECTALL, ICON_DOWNLOAD, ICON_OPTIONS, ICON_GRID, ICON_LARGE, ICON_BREADCRUMB, ICON_CLEAR, ICON_DROP_IN, ICON_DROP_OUT, ICON_NO_DROP, ICONS, DETAILS_LABEL, ERROR_CONTENT, STATUS, BREADCRUMBS, RTL, DISPLAY_NONE, COLLAPSED, FULLROW, ICON_COLLAPSIBLE, SPLIT_BAR, HEADER_CHECK, OVERLAY, VALUE, isFile, modelChanged, initialEnd, finalizeEnd, createEnd, filterEnd, beforeDelete, pathDrag, deleteInit, deleteEnd, refreshEnd, resizeEnd, splitterResize, pathChanged, destroy, beforeRequest, upload, skipUpload, afterRequest, download, layoutRefresh, actionFailure, search, openInit, openEnd, selectionChanged, selectAllInit, clearAllInit, clearPathInit, layoutChange, sortByChange, nodeExpand, detailsInit, menuItemData, renameInit, renameEndParent, renameEnd, showPaste, hidePaste, selectedData, cutCopyInit, pasteInit, pasteEnd, cutEnd, hideLayout, updateTreeSelection, treeSelect, sortColumn, pathColumn, searchTextChange, beforeDownload, downloadInit, dropInit, dragEnd, dropPath, dragHelper, dragging, updateSelectionData, methodCall, permissionRead, permissionEdit, permissionEditContents, permissionCopy, permissionUpload, permissionDownload, FileManager, Toolbar$1 as Toolbar, BreadCrumbBar, NavigationPane, DetailsView, LargeIconsView, createDialog, createExtDialog, createImageDialog, ContextMenu$2 as ContextMenu };
11021
+ export { AjaxSettings, toolbarItems, ToolbarSettings, SearchSettings, columnArray, DetailsViewSettings, VirtualizationSettings, fileItems, folderItems, layoutItems, ContextMenuSettings, NavigationPaneSettings, UploadSettings, Column, TOOLBAR_ID, LAYOUT_ID, NAVIGATION_ID, TREE_ID, GRID_ID, LARGEICON_ID, DIALOG_ID, ALT_DIALOG_ID, IMG_DIALOG_ID, EXTN_DIALOG_ID, UPLOAD_DIALOG_ID, RETRY_DIALOG_ID, CONTEXT_MENU_ID, SORTBY_ID, VIEW_ID, SPLITTER_ID, CONTENT_ID, BREADCRUMBBAR_ID, UPLOAD_ID, RETRY_ID, SEARCH_ID, ROOT, CONTROL, CHECK_SELECT, ROOT_POPUP, MOBILE, MOB_POPUP, MULTI_SELECT, FILTER, LAYOUT, NAVIGATION, LAYOUT_CONTENT, LARGE_ICONS, TB_ITEM, LIST_ITEM, LIST_TEXT, LIST_PARENT, TB_OPTION_TICK, TB_OPTION_DOT, BLUR, ACTIVE, HOVER, FOCUS, FOCUSED, CHECK, FRAME, CB_WRAP, ROW, ROWCELL, EMPTY, EMPTY_CONTENT, EMPTY_INNER_CONTENT, CLONE, DROP_FOLDER, DROP_FILE, FOLDER, ICON_IMAGE, ICON_MUSIC, ICON_VIDEO, LARGE_ICON, LARGE_EMPTY_FOLDER, LARGE_EMPTY_FOLDER_TWO, LARGE_ICON_FOLDER, SELECTED_ITEMS, TEXT_CONTENT, GRID_HEADER, TEMPLATE_CELL, TREE_VIEW, MENU_ITEM, MENU_ICON, SUBMENU_ICON, GRID_VIEW, GRID_CONTENT, ICON_VIEW, ICON_OPEN, ICON_UPLOAD, ICON_CUT, ICON_COPY, ICON_PASTE, ICON_DELETE, ICON_RENAME, ICON_NEWFOLDER, ICON_DETAILS, ICON_SHORTBY, ICON_REFRESH, ICON_SELECTALL, ICON_DOWNLOAD, ICON_OPTIONS, ICON_GRID, ICON_LARGE, ICON_BREADCRUMB, ICON_CLEAR, ICON_DROP_IN, ICON_DROP_OUT, ICON_NO_DROP, ICONS, DETAILS_LABEL, ERROR_CONTENT, STATUS, BREADCRUMBS, RTL, DISPLAY_NONE, COLLAPSED, FULLROW, ICON_COLLAPSIBLE, SPLIT_BAR, HEADER_CHECK, OVERLAY, VALUE, isFile, modelChanged, initialEnd, finalizeEnd, createEnd, filterEnd, beforeDelete, pathDrag, deleteInit, deleteEnd, refreshEnd, resizeEnd, splitterResize, pathChanged, destroy, beforeRequest, upload, skipUpload, afterRequest, download, layoutRefresh, actionFailure, search, openInit, openEnd, selectionChanged, selectAllInit, clearAllInit, clearPathInit, layoutChange, sortByChange, nodeExpand, detailsInit, menuItemData, renameInit, renameEndParent, renameEnd, showPaste, hidePaste, selectedData, cutCopyInit, pasteInit, pasteEnd, cutEnd, hideLayout, updateTreeSelection, treeSelect, sortColumn, pathColumn, searchTextChange, beforeDownload, downloadInit, dropInit, dragEnd, dropPath, dragHelper, dragging, updateSelectionData, methodCall, permissionRead, permissionEdit, permissionEditContents, permissionCopy, permissionUpload, permissionDownload, FileManager, Toolbar$1 as Toolbar, BreadCrumbBar, Virtualization, NavigationPane, DetailsView, LargeIconsView, createDialog, createExtDialog, createImageDialog, ContextMenu$2 as ContextMenu };
10706
11022
  //# sourceMappingURL=ej2-filemanager.es2015.js.map