@syncfusion/ej2-filemanager 27.2.3 → 28.1.33

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 (54) hide show
  1. package/README.md +2 -2
  2. package/dist/ej2-filemanager.min.js +3 -3
  3. package/dist/ej2-filemanager.umd.min.js +3 -3
  4. package/dist/ej2-filemanager.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-filemanager.es2015.js +144 -32
  6. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  7. package/dist/es6/ej2-filemanager.es5.js +148 -32
  8. package/dist/es6/ej2-filemanager.es5.js.map +1 -1
  9. package/dist/global/ej2-filemanager.min.js +3 -3
  10. package/dist/global/ej2-filemanager.min.js.map +1 -1
  11. package/dist/global/index.d.ts +2 -2
  12. package/package.json +16 -16
  13. package/src/file-manager/base/file-manager-model.d.ts +2 -1
  14. package/src/file-manager/base/file-manager.d.ts +4 -1
  15. package/src/file-manager/base/file-manager.js +39 -4
  16. package/src/file-manager/base/interface.d.ts +1 -0
  17. package/src/file-manager/common/operations.js +30 -12
  18. package/src/file-manager/common/utility.d.ts +20 -0
  19. package/src/file-manager/common/utility.js +40 -3
  20. package/src/file-manager/layout/details-view.js +10 -0
  21. package/src/file-manager/layout/large-icons-view.js +8 -6
  22. package/src/file-manager/layout/navigation-pane.d.ts +1 -1
  23. package/src/file-manager/layout/navigation-pane.js +7 -3
  24. package/src/file-manager/models/upload-settings-model.d.ts +9 -0
  25. package/src/file-manager/models/upload-settings.d.ts +8 -0
  26. package/src/file-manager/models/upload-settings.js +3 -0
  27. package/src/file-manager/pop-up/context-menu.d.ts +1 -0
  28. package/src/file-manager/pop-up/context-menu.js +4 -3
  29. package/src/file-manager/pop-up/dialog.js +8 -2
  30. package/styles/bds-lite.css +1284 -0
  31. package/styles/bds-lite.scss +16 -0
  32. package/styles/bds.css +1876 -0
  33. package/styles/bds.scss +17 -0
  34. package/styles/file-manager/_bigger.scss +69 -6
  35. package/styles/file-manager/_fluent2-definition.scss +1 -1
  36. package/styles/file-manager/_layout.scss +77 -14
  37. package/styles/file-manager/_material3-definition.scss +2 -2
  38. package/styles/file-manager/_tailwind3-definition.scss +243 -0
  39. package/styles/file-manager/_theme.scss +4 -1
  40. package/styles/file-manager/bds.css +1876 -0
  41. package/styles/file-manager/bds.scss +17 -0
  42. package/styles/file-manager/fluent2.css +2 -2
  43. package/styles/file-manager/icons/_tailwind3.scss +235 -0
  44. package/styles/file-manager/material3-dark.css +3 -2
  45. package/styles/file-manager/material3.css +3 -2
  46. package/styles/file-manager/tailwind3.css +1666 -0
  47. package/styles/file-manager/tailwind3.scss +17 -0
  48. package/styles/fluent2.css +2 -2
  49. package/styles/material3-dark.css +3 -2
  50. package/styles/material3.css +3 -2
  51. package/styles/tailwind3-lite.css +1069 -0
  52. package/styles/tailwind3-lite.scss +16 -0
  53. package/styles/tailwind3.css +1666 -0
  54. package/styles/tailwind3.scss +17 -0
@@ -383,6 +383,9 @@ var UploadSettings = /** @__PURE__ @class */ (function (_super) {
383
383
  __decorate$6([
384
384
  Property(30000000)
385
385
  ], UploadSettings.prototype, "maxFileSize", void 0);
386
+ __decorate$6([
387
+ Property(0)
388
+ ], UploadSettings.prototype, "chunkSize", void 0);
386
389
  return UploadSettings;
387
390
  }(ChildProperty));
388
391
 
@@ -1098,6 +1101,25 @@ function getModule(parent, element) {
1098
1101
  }
1099
1102
  }
1100
1103
  }
1104
+ /**
1105
+ * Get all child items
1106
+ *
1107
+ * @param {IFileManager} parent - specifies the parent element.
1108
+ * @param {string | number} parentId - specifies the parent ID.
1109
+ * @returns {Object[]} An array of child items
1110
+ * @private
1111
+ */
1112
+ function getAllChildItems(parent, parentId) {
1113
+ var children = parent.fileSystemData.filter(function (item) {
1114
+ return String(item.parentId) === String(parentId);
1115
+ });
1116
+ var allChildren = children.slice();
1117
+ children.forEach(function (child) {
1118
+ var childId = child.id;
1119
+ allChildren = allChildren.concat(getAllChildItems(parent, childId));
1120
+ });
1121
+ return allChildren;
1122
+ }
1101
1123
  /**
1102
1124
  * Gets module name
1103
1125
  *
@@ -1119,7 +1141,9 @@ function searchWordHandler(parent, value, isLayoutChange) {
1119
1141
  }
1120
1142
  else {
1121
1143
  parent.searchSettings.filterType = isNullOrUndefined(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;
1122
- var filteredData = parent.fileSystemData.filter(function (obj) { return obj.parentId !== null; });
1144
+ var currData = getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);
1145
+ var parentId = getValue('id', currData);
1146
+ var filteredData = getAllChildItems(parent, parentId);
1123
1147
  var data = new DataManager(filteredData).
1124
1148
  executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));
1125
1149
  var searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;
@@ -1709,7 +1733,7 @@ function pasteHandler(parent) {
1709
1733
  if (parent.selectedNodes.length !== 0 && parent.enablePaste) {
1710
1734
  var path = (parent.folderPath === '') ? parent.path : parent.folderPath;
1711
1735
  if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {
1712
- parent.targetPath = getValue('filterPath', parent.actionRecords[0]).replace(/\\/g, '/');
1736
+ parent.targetPath = getTargetPath(parent, parent.actionRecords[0]);
1713
1737
  }
1714
1738
  var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);
1715
1739
  if (!subFolder) {
@@ -1885,6 +1909,7 @@ function doPasteUpdate(parent, operation, result) {
1885
1909
  else {
1886
1910
  parent.isDropEnd = false;
1887
1911
  }
1912
+ parent.trigger('success', { action: operation, result: result });
1888
1913
  if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)
1889
1914
  || parent.isSearchDrag) {
1890
1915
  parent.isPathDrag = false;
@@ -1893,7 +1918,6 @@ function doPasteUpdate(parent, operation, result) {
1893
1918
  else {
1894
1919
  readDropPath(parent);
1895
1920
  }
1896
- parent.trigger('success', { action: operation, result: result });
1897
1921
  }
1898
1922
  /**
1899
1923
  * Reads the drop path
@@ -2450,6 +2474,22 @@ function closePopup(parent) {
2450
2474
  parent.dialogObj.hide();
2451
2475
  }
2452
2476
  }
2477
+ /**
2478
+ * Get target path from item data.
2479
+ *
2480
+ * @param {IFileManager} parent - specifies the parent.
2481
+ * @param {Object} itemData - specifies the item elements.
2482
+ * @returns {string} returns the path.
2483
+ * @private
2484
+ */
2485
+ function getTargetPath(parent, itemData) {
2486
+ if (parent.hasId && !isNullOrUndefined(getValue('filterId', itemData))) {
2487
+ return getValue('filterId', itemData).replace(/\\/g, '/').replace(/^[^/]+\//, '/');
2488
+ }
2489
+ else {
2490
+ return getValue('filterPath', itemData).replace(/\\/g, '/');
2491
+ }
2492
+ }
2453
2493
  /**
2454
2494
  * Access control handler
2455
2495
  *
@@ -2684,7 +2724,9 @@ function isFileExists(fileSystemData, name) {
2684
2724
  * @private
2685
2725
  */
2686
2726
  function findIndexById(parent, id) {
2687
- var index = parent.fileSystemData.findIndex(function (item) { return String(item.id) === String(id); });
2727
+ var index = parent.fileSystemData.findIndex(function (item) {
2728
+ return !isNullOrUndefined(item) && String(item.id) === String(id);
2729
+ });
2688
2730
  return index;
2689
2731
  }
2690
2732
  /**
@@ -3058,9 +3100,10 @@ function createAjax(parent, data, fn, event, operation, targetPath) {
3058
3100
  if (!beforeSendArgs.cancel) {
3059
3101
  parent.notify(beforeRequest, {});
3060
3102
  if (isFileSystemData(parent)) {
3061
- var filePath = event === 'node-expand' || event === 'finalize-end' ? getValue('path', data) : parent.path;
3103
+ var filePath = event === 'node-expand' || event === 'finalize-end' || event === 'rename-end-parent'
3104
+ ? getValue('path', data) : parent.path;
3062
3105
  var pathArray = filePath.replace(/^\/|\/$/g, '').split('/');
3063
- var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0)
3106
+ var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0 && isNullOrUndefined(parent.renamedItem))
3064
3107
  || (event === 'paste-end' && (parent.targetModule === 'largeiconsview' || parent.targetModule === 'detailsview'))
3065
3108
  ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];
3066
3109
  var action = getValue('action', data);
@@ -3086,7 +3129,12 @@ function createAjax(parent, data, fn, event, operation, targetPath) {
3086
3129
  else if (isFileOperation && parent.responseData.error === null) {
3087
3130
  var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];
3088
3131
  if (itemData.length === 0) {
3089
- itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });
3132
+ if (action === 'copy') {
3133
+ itemData = parent.pasteNodes.map(function (item) { return filterById(parent, item); });
3134
+ }
3135
+ else {
3136
+ itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });
3137
+ }
3090
3138
  }
3091
3139
  parent.responseData = {
3092
3140
  cwd: null,
@@ -3101,9 +3149,9 @@ function createAjax(parent, data, fn, event, operation, targetPath) {
3101
3149
  var isMultipleFiles = itemData.length > 1;
3102
3150
  var itemNames = itemData.map(function (item) { return item.name; });
3103
3151
  var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);
3104
- var path = (parent.pathNames.includes(details.name) ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);
3152
+ var path = (parent.pathNames.includes(details.name) || isMultipleFiles ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);
3105
3153
  parent.responseData.details = Object.assign({
3106
- location: isMultipleFiles ? null : path,
3154
+ location: path,
3107
3155
  multipleFiles: isMultipleFiles,
3108
3156
  name: itemNames.join(', '),
3109
3157
  size: totalSize
@@ -3232,6 +3280,8 @@ function performReadOperation(parent, result, fn, data, event, operation, target
3232
3280
  if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {
3233
3281
  if (getValue('names', data).length === 0) {
3234
3282
  setValue('name', rootName, result.details);
3283
+ }
3284
+ if (location_1.indexOf('\\') === -1) {
3235
3285
  location_1 = rootName;
3236
3286
  }
3237
3287
  else {
@@ -3446,14 +3496,22 @@ function renameSuccess(parent, result) {
3446
3496
  };
3447
3497
  parent.trigger('rename', renameEventArgs);
3448
3498
  if (parent.activeModule === 'navigationpane') {
3499
+ var pathObject = getPathObject(parent);
3500
+ var pathLevel = parent.pathId[parent.pathId.length - 1].split('_').length - 2;
3449
3501
  parent.pathId.pop();
3450
3502
  parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];
3451
- read(parent, renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\/g, '/'));
3452
- parent.itemData[0] = parent.renamedItem;
3453
- if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {
3454
- parent.pathNames[parent.pathNames.length - 1] = parent.renameText;
3503
+ var renamePath = getTargetPath(parent, parent.renamedItem);
3504
+ read(parent, renameEndParent, renamePath);
3505
+ if (!isNullOrUndefined(pathObject) && parent.pathNames.length > 1 && pathLevel <= parent.pathNames.length - 1) {
3506
+ parent.pathNames[pathLevel] = parent.renameText;
3507
+ if (!parent.hasId) {
3508
+ parent.setProperties({ path: "/" + parent.pathNames.slice(1).join('/') + "/" }, true);
3509
+ }
3455
3510
  }
3456
- read(parent, pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\/g, '/') + parent.renamedItem.name + '/');
3511
+ parent.itemData = parent.navigationpaneModule.previousSelected.length > 0
3512
+ ? parent.navigationpaneModule.treeObj.getTreeData(parent.navigationpaneModule.previousSelected[0]) : parent.itemData;
3513
+ read(parent, pathChanged, parent.path);
3514
+ parent.itemData[0] = parent.renamedItem;
3457
3515
  parent.renamedItem = null;
3458
3516
  }
3459
3517
  else {
@@ -4581,7 +4639,13 @@ function onReSubmit(parent) {
4581
4639
  parent.dialogObj.hide();
4582
4640
  return;
4583
4641
  }
4584
- var newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\/g, '/') : parent.path;
4642
+ var newPath = '';
4643
+ if (parent.activeModule === 'navigationpane') {
4644
+ newPath = getTargetPath(parent, parent.itemData[0]);
4645
+ }
4646
+ else {
4647
+ newPath = parent.path;
4648
+ }
4585
4649
  parent.renamedId = getValue('id', parent.itemData[0]);
4586
4650
  if (parent.isFile) {
4587
4651
  var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);
@@ -5158,7 +5222,7 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5158
5222
  removeBlur(this.parent);
5159
5223
  this.parent.setProperties({ selectedItems: [] }, true);
5160
5224
  this.onLayoutChange(args);
5161
- if (this.parent.renamedItem) {
5225
+ if (this.parent.renamedItem && this.parent.activeModule === 'largeiconsview') {
5162
5226
  this.clearSelect();
5163
5227
  this.addSelection(this.parent.renamedItem);
5164
5228
  }
@@ -5512,31 +5576,33 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5512
5576
  * @hidden
5513
5577
  */
5514
5578
  LargeIconsView.prototype.doSelection = function (target, e) {
5579
+ var ctrlKey = this.parent.isMac ? e.metaKey : e.ctrlKey;
5580
+ var isMacRightClick = this.parent.isMac && e.ctrlKey && e.shiftKey;
5515
5581
  var item = closest(target, '.' + LIST_ITEM);
5516
5582
  var cList = target.classList;
5517
5583
  this.parent.isFile = false;
5518
5584
  var action = 'select';
5519
- if (e.which === 3 && !isNullOrUndefined(item) && item.classList.contains(ACTIVE)) {
5585
+ if ((e.which === 3 || isMacRightClick) && !isNullOrUndefined(item) && item.classList.contains(ACTIVE)) {
5520
5586
  this.addActive(item);
5521
5587
  this.updateType(item);
5522
5588
  return;
5523
5589
  }
5524
5590
  else if (!isNullOrUndefined(item)) {
5525
5591
  if (this.parent.allowMultiSelection && item.classList.contains(ACTIVE)
5526
- && (e.ctrlKey || target.classList.contains(CHECK))) {
5592
+ && (ctrlKey || target.classList.contains(CHECK))) {
5527
5593
  action = 'unselect';
5528
5594
  }
5529
- if (e.ctrlKey && e.shiftKey) {
5595
+ if (e.ctrlKey && e.shiftKey && !isMacRightClick) {
5530
5596
  this.isSelectAllCalled = true;
5531
5597
  }
5532
5598
  var fileSelectionArgs = this.triggerSelection(action, item);
5533
5599
  if (fileSelectionArgs.cancel !== true) {
5534
- if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))
5600
+ if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !ctrlKey)))
5535
5601
  && !cList.contains(FRAME)) {
5536
5602
  this.updateType(item);
5537
5603
  this.clearSelect();
5538
5604
  }
5539
- if (this.parent.allowMultiSelection && e.shiftKey) {
5605
+ if (this.parent.allowMultiSelection && e.shiftKey && !isMacRightClick) {
5540
5606
  if (!(e && e.ctrlKey)) {
5541
5607
  this.clearSelect();
5542
5608
  }
@@ -6893,7 +6959,7 @@ var ContextMenu = /** @__PURE__ @class */ (function () {
6893
6959
  else if (closest(target, '#' + this.parent.element.id + TREE_ID)) {
6894
6960
  uid = closest(target, 'li').getAttribute('data-uid');
6895
6961
  if (!isNullOrUndefined(uid)) {
6896
- this.parent.navigationpaneModule.treeObj.setProperties({ selectedNodes: [uid] });
6962
+ this.navUid = uid;
6897
6963
  }
6898
6964
  treeFolder = true;
6899
6965
  }
@@ -7029,8 +7095,9 @@ var ContextMenu = /** @__PURE__ @class */ (function () {
7029
7095
  this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));
7030
7096
  this.contextMenu.dataBind();
7031
7097
  if (isTree) {
7032
- var selectedTreeNode = select('[data-uid="' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '"]', this.parent.navigationpaneModule.treeObj.element);
7033
- if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {
7098
+ var selectedTreeNode = select('[data-uid="' + this.navUid + '"]', this.parent.navigationpaneModule.treeObj.element);
7099
+ if (!isNullOrUndefined(selectedTreeNode) &&
7100
+ this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {
7034
7101
  this.disabledItems.push('Open');
7035
7102
  }
7036
7103
  else {
@@ -7917,11 +7984,14 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
7917
7984
  dropArea: select('#' + this.element.id + CONTENT_ID, this.element),
7918
7985
  asyncSettings: {
7919
7986
  saveUrl: uploadUrl,
7920
- removeUrl: uploadUrl
7987
+ removeUrl: uploadUrl,
7988
+ chunkSize: this.uploadSettings.chunkSize,
7989
+ retryCount: 0
7921
7990
  },
7922
7991
  locale: this.locale,
7923
7992
  enableRtl: this.enableRtl,
7924
7993
  uploading: this.onUploading.bind(this),
7994
+ chunkUploading: this.onChunkUploading.bind(this),
7925
7995
  removing: this.onRemoving.bind(this),
7926
7996
  canceling: this.onCancel.bind(this),
7927
7997
  clearing: this.onClearing.bind(this),
@@ -7983,19 +8053,34 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
7983
8053
  this.trigger('popupClose', args);
7984
8054
  };
7985
8055
  /* istanbul ignore next */
8056
+ FileManager.prototype.onChunkUploading = function (args) {
8057
+ var action = 'save';
8058
+ if ((this.retryArgs.length !== 0)) {
8059
+ for (var i = 0; i < this.retryArgs.length; i++) {
8060
+ if (args.fileData.name === this.retryArgs[i].file.name) {
8061
+ action = this.retryArgs[i].action;
8062
+ }
8063
+ }
8064
+ }
8065
+ var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));
8066
+ args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];
8067
+ };
8068
+ /* istanbul ignore next */
7986
8069
  FileManager.prototype.onUploading = function (args) {
7987
8070
  var action = 'save';
7988
8071
  if ((this.retryArgs.length !== 0)) {
7989
8072
  for (var i = 0; i < this.retryArgs.length; i++) {
7990
8073
  if (args.fileData.name === this.retryArgs[i].file.name) {
7991
8074
  action = this.retryArgs[i].action;
7992
- this.retryArgs.splice(i, 1);
7993
- i = this.retryArgs.length;
8075
+ if (this.uploadSettings.chunkSize === 0) {
8076
+ this.retryArgs.splice(i, 1);
8077
+ i = this.retryArgs.length;
8078
+ }
7994
8079
  }
7995
8080
  }
7996
8081
  }
7997
8082
  var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));
7998
- args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];
8083
+ args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];
7999
8084
  var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;
8000
8085
  var ajaxSettings = {
8001
8086
  url: uploadUrl,
@@ -8062,8 +8147,22 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8062
8147
  this.uploadDialogObj.hide();
8063
8148
  }
8064
8149
  };
8150
+ FileManager.prototype.onChunkUploadComplete = function (files) {
8151
+ if ((this.retryArgs.length !== 0)) {
8152
+ for (var i = 0; i < this.retryArgs.length; i++) {
8153
+ var uploadFile = !isNullOrUndefined(files) ? getValue('file', files).name : '';
8154
+ if (uploadFile === this.retryArgs[i].file.name) {
8155
+ this.retryArgs.splice(i, 1);
8156
+ i = this.retryArgs.length;
8157
+ }
8158
+ }
8159
+ }
8160
+ };
8065
8161
  /* istanbul ignore next */
8066
8162
  FileManager.prototype.onUploadSuccess = function (files) {
8163
+ if (this.uploadSettings.chunkSize > 0) {
8164
+ this.onChunkUploadComplete(files);
8165
+ }
8067
8166
  var args = { action: 'Upload', result: files };
8068
8167
  this.trigger('success', args);
8069
8168
  this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];
@@ -8075,6 +8174,9 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8075
8174
  };
8076
8175
  /* istanbul ignore next */
8077
8176
  FileManager.prototype.onUploadFailure = function (files) {
8177
+ if (this.uploadSettings.chunkSize > 0) {
8178
+ this.onChunkUploadComplete(files);
8179
+ }
8078
8180
  var response = getValue('response', files);
8079
8181
  var statusText = getValue('statusText', response);
8080
8182
  if (statusText !== '') {
@@ -9902,6 +10004,8 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
9902
10004
  function NavigationPane(parent) {
9903
10005
  this.removeNodes = [];
9904
10006
  this.moveNames = [];
10007
+ // Specifies the previously selected nodes in the treeview control.
10008
+ this.previousSelected = [];
9905
10009
  this.expandTree = false;
9906
10010
  this.isDrag = false;
9907
10011
  this.isPathDragged = false;
@@ -9910,8 +10014,6 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
9910
10014
  this.isSameNodeClicked = false;
9911
10015
  this.isNodeExpandCalled = false;
9912
10016
  this.renameParent = null;
9913
- // Specifies the previously selected nodes in the treeview control.
9914
- this.previousSelected = null;
9915
10017
  // Specifies whether the nodeClicked event of the treeview control is triggered or not.
9916
10018
  this.isNodeClickCalled = false;
9917
10019
  // Specifies whether to restrict node selection in the treeview control.
@@ -10332,9 +10434,11 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
10332
10434
  }
10333
10435
  }
10334
10436
  if (resultData.length > 0) {
10335
- var id_1 = getValue(this.treeObj.fields.id, resultData[0]);
10437
+ var id_1 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0
10438
+ ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);
10336
10439
  this.treeObj.selectedNodes = [id_1];
10337
10440
  this.treeObj.dataBind();
10441
+ this.updateItemData();
10338
10442
  }
10339
10443
  }
10340
10444
  };
@@ -10733,6 +10837,8 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
10733
10837
  };
10734
10838
  NavigationPane.prototype.updateActionData = function () {
10735
10839
  this.updateItemData();
10840
+ var node = select('[data-uid="' + this.parent.pathId[this.parent.pathId.length - 1] + '"]', this.treeObj.element);
10841
+ updatePath(node, this.parent.itemData[0], this.parent);
10736
10842
  var newPath = getParentPath(this.parent.path);
10737
10843
  this.parent.setProperties({ path: newPath }, true);
10738
10844
  this.parent.pathId.pop();
@@ -10822,6 +10928,16 @@ var DetailsView = /** @__PURE__ @class */ (function () {
10822
10928
  /* istanbul ignore next */
10823
10929
  DetailsView.prototype.render = function (args) {
10824
10930
  var _this = this;
10931
+ if (this.parent.enablePersistence) {
10932
+ var gridPersistenceValue = window.localStorage.getItem('grid' + this.parent.element.id + '_grid');
10933
+ if (!isNullOrUndefined(gridPersistenceValue)) {
10934
+ var model = JSON.parse(gridPersistenceValue);
10935
+ if (!isNullOrUndefined(model) && Object.keys(model).length > 0 && 'sortSettings' in model) {
10936
+ delete model.sortSettings;
10937
+ window.localStorage.setItem('grid' + this.parent.element.id + '_grid', JSON.stringify(model));
10938
+ }
10939
+ }
10940
+ }
10825
10941
  showSpinner(this.parent.element);
10826
10942
  if (this.parent.view === 'Details') {
10827
10943
  removeClass([this.parent.element], MULTI_SELECT);
@@ -12694,5 +12810,5 @@ var DetailsView = /** @__PURE__ @class */ (function () {
12694
12810
  return DetailsView;
12695
12811
  }());
12696
12812
 
12697
- export { ACTIVE, ALT_DIALOG_ID, AjaxSettings, BLUR, BREADCRUMBBAR_ID, BREADCRUMBS, BreadCrumbBar, CB_WRAP, CHECK, CHECK_SELECT, CLONE, COLLAPSED, CONTENT_ID, CONTEXT_MENU_ID, CONTROL, Column, ContextMenu, ContextMenuSettings, DETAILS_LABEL, DIALOG_ID, DISPLAY_NONE, DROP_FILE, DROP_FOLDER, Delete, DetailsView, DetailsViewSettings, Download, EMPTY, EMPTY_CONTENT, EMPTY_INNER_CONTENT, ERROR_CONTENT, EXTN_DIALOG_ID, FILTER, FOCUS, FOCUSED, FOLDER, FRAME, FULLROW, FileManager, GRID_CONTENT, GRID_HEADER, GRID_ID, GRID_VIEW, GetDetails, HEADER_CHECK, HOVER, ICONS, ICON_BREADCRUMB, ICON_CLEAR, ICON_COLLAPSIBLE, ICON_COPY, ICON_CUT, ICON_DELETE, ICON_DETAILS, ICON_DOWNLOAD, ICON_DROP_IN, ICON_DROP_OUT, ICON_GRID, ICON_IMAGE, ICON_LARGE, ICON_MUSIC, ICON_NEWFOLDER, ICON_NO_DROP, ICON_OPEN, ICON_OPTIONS, ICON_PASTE, ICON_REFRESH, ICON_RENAME, ICON_SELECTALL, ICON_SHORTBY, ICON_UPLOAD, ICON_VIDEO, ICON_VIEW, IMG_DIALOG_ID, LARGEICON_ID, LARGE_EMPTY_FOLDER, LARGE_EMPTY_FOLDER_TWO, LARGE_ICON, LARGE_ICONS, LARGE_ICON_FOLDER, LAYOUT, LAYOUT_CONTENT, LAYOUT_ID, LIST_ITEM, LIST_PARENT, LIST_TEXT, LargeIconsView, MENU_ICON, MENU_ITEM, MOBILE, MOB_POPUP, MULTI_SELECT, NAVIGATION, NAVIGATION_ID, NavigationPane, NavigationPaneSettings, OVERLAY, RETRY_DIALOG_ID, RETRY_ID, ROOT, ROOT_POPUP, ROW, ROWCELL, RTL, SEARCH_ID, SELECTED_ITEMS, SORTBY_ID, SPLITTER_ID, SPLIT_BAR, STATUS, SUBMENU_ICON, Search, SearchSettings, TB_ITEM, TB_OPTION_DOT, TB_OPTION_TICK, TEMPLATE_CELL, TEXT_CONTENT, TOOLBAR_ID, TREE_ID, TREE_VIEW, Toolbar, ToolbarItem, ToolbarSettings, UPLOAD_DIALOG_ID, UPLOAD_ID, UploadSettings, VALUE, VIEW_ID, Virtualization, actionFailure, activeElement, addBlur, afterRequest, beforeDelete, beforeDownload, beforeRequest, clearAllInit, clearPathInit, closePopup, columnArray, copyFiles, createDeniedDialog, createDialog, createEmptyElement, createEnd, createExtDialog, createFolder, createImageDialog, createNewFolder, createVirtualDragElement, cutCopyInit, cutEnd, cutFiles, defaultToolbarItems, deleteEnd, deleteInit, destroy, detailsInit, doDeleteFiles, doDownload, doDownloadFiles, doPasteUpdate, doRename, download, downloadInit, dragCancel, dragEnd, dragHelper, dragStartHandler, dragStopHandler, dragging, draggingHandler, dropHandler, dropInit, dropPath, fileItems, fileType, filter, filterEnd, finalizeEnd, folderItems, generatePath, getAccessClass, getAccessDetails, getCssClass, getDirectories, getDirectoryPath, getDuplicateData, getFullPath, getImageUrl, getItemName, getLocaleText, getModule, getName, getObject, getParentPath, getParents, getPath, getPathId, getPathNames, getPathObject, getSortField, getSortedData, getTargetModule, hasContentAccess, hasDownloadAccess, hasEditAccess, hasReadAccess, hasUploadAccess, hideLayout, hidePaste, initialEnd, isFile, isFileSystemData, layoutChange, layoutItems, layoutRefresh, menuItemData, methodCall, modelChanged, nodeExpand, objectToString, openAction, openEnd, openInit, openSearchFolder, paste, pasteEnd, pasteHandler, pasteInit, pathChanged, pathColumn, pathDrag, permissionCopy, permissionDownload, permissionEdit, permissionEditContents, permissionRead, permissionUpload, read, readDropPath, refresh, refreshEnd, removeActive, removeBlur, removeDropTarget, removeItemClass, rename, renameEnd, renameEndParent, renameInit, resizeEnd, scrollHandler, search, searchTextChange, searchWordHandler, selectAllInit, selectedData, selectionChanged, setDateObject, setNextPath, setNodeId, showPaste, skipUpload, sortByChange, sortColumn, sortComparer, sortbyClickHandler, splitterResize, treeSelect, updateLayout, updatePath, updateRenamingData, updateSelectionData, updateTreeSelection, upload, uploadItem, validateSubFolder };
12813
+ export { ACTIVE, ALT_DIALOG_ID, AjaxSettings, BLUR, BREADCRUMBBAR_ID, BREADCRUMBS, BreadCrumbBar, CB_WRAP, CHECK, CHECK_SELECT, CLONE, COLLAPSED, CONTENT_ID, CONTEXT_MENU_ID, CONTROL, Column, ContextMenu, ContextMenuSettings, DETAILS_LABEL, DIALOG_ID, DISPLAY_NONE, DROP_FILE, DROP_FOLDER, Delete, DetailsView, DetailsViewSettings, Download, EMPTY, EMPTY_CONTENT, EMPTY_INNER_CONTENT, ERROR_CONTENT, EXTN_DIALOG_ID, FILTER, FOCUS, FOCUSED, FOLDER, FRAME, FULLROW, FileManager, GRID_CONTENT, GRID_HEADER, GRID_ID, GRID_VIEW, GetDetails, HEADER_CHECK, HOVER, ICONS, ICON_BREADCRUMB, ICON_CLEAR, ICON_COLLAPSIBLE, ICON_COPY, ICON_CUT, ICON_DELETE, ICON_DETAILS, ICON_DOWNLOAD, ICON_DROP_IN, ICON_DROP_OUT, ICON_GRID, ICON_IMAGE, ICON_LARGE, ICON_MUSIC, ICON_NEWFOLDER, ICON_NO_DROP, ICON_OPEN, ICON_OPTIONS, ICON_PASTE, ICON_REFRESH, ICON_RENAME, ICON_SELECTALL, ICON_SHORTBY, ICON_UPLOAD, ICON_VIDEO, ICON_VIEW, IMG_DIALOG_ID, LARGEICON_ID, LARGE_EMPTY_FOLDER, LARGE_EMPTY_FOLDER_TWO, LARGE_ICON, LARGE_ICONS, LARGE_ICON_FOLDER, LAYOUT, LAYOUT_CONTENT, LAYOUT_ID, LIST_ITEM, LIST_PARENT, LIST_TEXT, LargeIconsView, MENU_ICON, MENU_ITEM, MOBILE, MOB_POPUP, MULTI_SELECT, NAVIGATION, NAVIGATION_ID, NavigationPane, NavigationPaneSettings, OVERLAY, RETRY_DIALOG_ID, RETRY_ID, ROOT, ROOT_POPUP, ROW, ROWCELL, RTL, SEARCH_ID, SELECTED_ITEMS, SORTBY_ID, SPLITTER_ID, SPLIT_BAR, STATUS, SUBMENU_ICON, Search, SearchSettings, TB_ITEM, TB_OPTION_DOT, TB_OPTION_TICK, TEMPLATE_CELL, TEXT_CONTENT, TOOLBAR_ID, TREE_ID, TREE_VIEW, Toolbar, ToolbarItem, ToolbarSettings, UPLOAD_DIALOG_ID, UPLOAD_ID, UploadSettings, VALUE, VIEW_ID, Virtualization, actionFailure, activeElement, addBlur, afterRequest, beforeDelete, beforeDownload, beforeRequest, clearAllInit, clearPathInit, closePopup, columnArray, copyFiles, createDeniedDialog, createDialog, createEmptyElement, createEnd, createExtDialog, createFolder, createImageDialog, createNewFolder, createVirtualDragElement, cutCopyInit, cutEnd, cutFiles, defaultToolbarItems, deleteEnd, deleteInit, destroy, detailsInit, doDeleteFiles, doDownload, doDownloadFiles, doPasteUpdate, doRename, download, downloadInit, dragCancel, dragEnd, dragHelper, dragStartHandler, dragStopHandler, dragging, draggingHandler, dropHandler, dropInit, dropPath, fileItems, fileType, filter, filterEnd, finalizeEnd, folderItems, generatePath, getAccessClass, getAccessDetails, getAllChildItems, getCssClass, getDirectories, getDirectoryPath, getDuplicateData, getFullPath, getImageUrl, getItemName, getLocaleText, getModule, getName, getObject, getParentPath, getParents, getPath, getPathId, getPathNames, getPathObject, getSortField, getSortedData, getTargetModule, getTargetPath, hasContentAccess, hasDownloadAccess, hasEditAccess, hasReadAccess, hasUploadAccess, hideLayout, hidePaste, initialEnd, isFile, isFileSystemData, layoutChange, layoutItems, layoutRefresh, menuItemData, methodCall, modelChanged, nodeExpand, objectToString, openAction, openEnd, openInit, openSearchFolder, paste, pasteEnd, pasteHandler, pasteInit, pathChanged, pathColumn, pathDrag, permissionCopy, permissionDownload, permissionEdit, permissionEditContents, permissionRead, permissionUpload, read, readDropPath, refresh, refreshEnd, removeActive, removeBlur, removeDropTarget, removeItemClass, rename, renameEnd, renameEndParent, renameInit, resizeEnd, scrollHandler, search, searchTextChange, searchWordHandler, selectAllInit, selectedData, selectionChanged, setDateObject, setNextPath, setNodeId, showPaste, skipUpload, sortByChange, sortColumn, sortComparer, sortbyClickHandler, splitterResize, treeSelect, updateLayout, updatePath, updateRenamingData, updateSelectionData, updateTreeSelection, upload, uploadItem, validateSubFolder };
12698
12814
  //# sourceMappingURL=ej2-filemanager.es5.js.map