@syncfusion/ej2-filemanager 26.2.10 → 27.1.48

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 (158) hide show
  1. package/.eslintrc.json +2 -4
  2. package/dist/ej2-filemanager.min.js +2 -2
  3. package/dist/ej2-filemanager.umd.min.js +2 -2
  4. package/dist/ej2-filemanager.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-filemanager.es2015.js +190 -21
  6. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  7. package/dist/es6/ej2-filemanager.es5.js +191 -21
  8. package/dist/es6/ej2-filemanager.es5.js.map +1 -1
  9. package/dist/global/ej2-filemanager.min.js +2 -2
  10. package/dist/global/ej2-filemanager.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +16 -16
  13. package/src/file-manager/base/file-manager-model.d.ts +17 -1
  14. package/src/file-manager/base/file-manager.d.ts +32 -1
  15. package/src/file-manager/base/file-manager.js +148 -1
  16. package/src/file-manager/base/interface.d.ts +38 -0
  17. package/src/file-manager/common/operations.js +1 -0
  18. package/src/file-manager/common/utility.js +3 -0
  19. package/src/file-manager/layout/details-view.js +11 -2
  20. package/src/file-manager/layout/large-icons-view.d.ts +0 -1
  21. package/src/file-manager/layout/large-icons-view.js +5 -17
  22. package/src/file-manager/pop-up/context-menu.d.ts +1 -1
  23. package/src/file-manager/pop-up/context-menu.js +24 -2
  24. package/styles/bootstrap-dark-lite.css +1058 -0
  25. package/styles/bootstrap-dark-lite.scss +16 -0
  26. package/styles/bootstrap-dark.css +201 -161
  27. package/styles/bootstrap-dark.scss +1 -0
  28. package/styles/bootstrap-lite.css +1040 -0
  29. package/styles/bootstrap-lite.scss +16 -0
  30. package/styles/bootstrap.css +183 -143
  31. package/styles/bootstrap.scss +1 -0
  32. package/styles/bootstrap4-lite.css +1068 -0
  33. package/styles/bootstrap4-lite.scss +16 -0
  34. package/styles/bootstrap4.css +211 -171
  35. package/styles/bootstrap4.scss +1 -0
  36. package/styles/bootstrap5-dark-lite.css +1078 -0
  37. package/styles/bootstrap5-dark-lite.scss +16 -0
  38. package/styles/bootstrap5-dark.css +220 -186
  39. package/styles/bootstrap5-dark.scss +1 -0
  40. package/styles/bootstrap5-lite.css +1078 -0
  41. package/styles/bootstrap5-lite.scss +16 -0
  42. package/styles/bootstrap5.3-lite.css +1035 -0
  43. package/styles/bootstrap5.3-lite.scss +16 -0
  44. package/styles/bootstrap5.3.css +1603 -0
  45. package/styles/bootstrap5.3.scss +17 -0
  46. package/styles/bootstrap5.css +220 -186
  47. package/styles/bootstrap5.scss +1 -0
  48. package/styles/fabric-dark-lite.css +1039 -0
  49. package/styles/fabric-dark-lite.scss +16 -0
  50. package/styles/fabric-dark.css +184 -144
  51. package/styles/fabric-dark.scss +1 -0
  52. package/styles/fabric-lite.css +1039 -0
  53. package/styles/fabric-lite.scss +16 -0
  54. package/styles/fabric.css +183 -143
  55. package/styles/fabric.scss +1 -0
  56. package/styles/file-manager/_bds-definition.scss +2 -0
  57. package/styles/file-manager/_bigger.scss +758 -0
  58. package/styles/file-manager/_bootstrap-dark-definition.scss +2 -0
  59. package/styles/file-manager/_bootstrap-definition.scss +2 -0
  60. package/styles/file-manager/_bootstrap4-definition.scss +2 -0
  61. package/styles/file-manager/_bootstrap5-definition.scss +2 -0
  62. package/styles/file-manager/_bootstrap5.3-definition.scss +22 -20
  63. package/styles/file-manager/_fabric-dark-definition.scss +2 -0
  64. package/styles/file-manager/_fabric-definition.scss +2 -0
  65. package/styles/file-manager/_fluent-definition.scss +2 -0
  66. package/styles/file-manager/_fluent2-definition.scss +15 -9
  67. package/styles/file-manager/_fusionnew-definition.scss +2 -0
  68. package/styles/file-manager/_highcontrast-definition.scss +2 -0
  69. package/styles/file-manager/_highcontrast-light-definition.scss +2 -0
  70. package/styles/file-manager/_layout.scss +45 -663
  71. package/styles/file-manager/_material-dark-definition.scss +2 -0
  72. package/styles/file-manager/_material-definition.scss +2 -0
  73. package/styles/file-manager/_material3-definition.scss +2 -0
  74. package/styles/file-manager/_tailwind-definition.scss +2 -0
  75. package/styles/file-manager/_theme.scss +38 -7
  76. package/styles/file-manager/bootstrap-dark.css +201 -161
  77. package/styles/file-manager/bootstrap-dark.scss +1 -0
  78. package/styles/file-manager/bootstrap.css +183 -143
  79. package/styles/file-manager/bootstrap.scss +1 -0
  80. package/styles/file-manager/bootstrap4.css +211 -171
  81. package/styles/file-manager/bootstrap4.scss +1 -0
  82. package/styles/file-manager/bootstrap5-dark.css +220 -186
  83. package/styles/file-manager/bootstrap5-dark.scss +1 -0
  84. package/styles/file-manager/bootstrap5.3.css +1603 -0
  85. package/styles/file-manager/bootstrap5.3.scss +17 -0
  86. package/styles/file-manager/bootstrap5.css +220 -186
  87. package/styles/file-manager/bootstrap5.scss +1 -0
  88. package/styles/file-manager/fabric-dark.css +184 -144
  89. package/styles/file-manager/fabric-dark.scss +1 -0
  90. package/styles/file-manager/fabric.css +183 -143
  91. package/styles/file-manager/fabric.scss +1 -0
  92. package/styles/file-manager/fluent-dark.css +187 -147
  93. package/styles/file-manager/fluent-dark.scss +1 -0
  94. package/styles/file-manager/fluent.css +186 -146
  95. package/styles/file-manager/fluent.scss +1 -0
  96. package/styles/file-manager/fluent2.css +204 -158
  97. package/styles/file-manager/fluent2.scss +1 -0
  98. package/styles/file-manager/highcontrast-light.css +184 -144
  99. package/styles/file-manager/highcontrast-light.scss +1 -0
  100. package/styles/file-manager/highcontrast.css +207 -167
  101. package/styles/file-manager/highcontrast.scss +1 -0
  102. package/styles/file-manager/material-dark.css +198 -158
  103. package/styles/file-manager/material-dark.scss +1 -0
  104. package/styles/file-manager/material.css +183 -143
  105. package/styles/file-manager/material.scss +1 -0
  106. package/styles/file-manager/material3-dark.css +185 -145
  107. package/styles/file-manager/material3-dark.scss +1 -0
  108. package/styles/file-manager/material3.css +185 -145
  109. package/styles/file-manager/material3.scss +1 -0
  110. package/styles/file-manager/tailwind-dark.css +198 -164
  111. package/styles/file-manager/tailwind-dark.scss +1 -0
  112. package/styles/file-manager/tailwind.css +198 -164
  113. package/styles/file-manager/tailwind.scss +1 -0
  114. package/styles/fluent-dark-lite.css +1037 -0
  115. package/styles/fluent-dark-lite.scss +16 -0
  116. package/styles/fluent-dark.css +187 -147
  117. package/styles/fluent-dark.scss +1 -0
  118. package/styles/fluent-lite.css +1036 -0
  119. package/styles/fluent-lite.scss +16 -0
  120. package/styles/fluent.css +186 -146
  121. package/styles/fluent.scss +1 -0
  122. package/styles/fluent2-lite.css +1272 -0
  123. package/styles/fluent2-lite.scss +16 -0
  124. package/styles/fluent2.css +204 -158
  125. package/styles/fluent2.scss +1 -0
  126. package/styles/highcontrast-light-lite.css +1039 -0
  127. package/styles/highcontrast-light-lite.scss +16 -0
  128. package/styles/highcontrast-light.css +184 -144
  129. package/styles/highcontrast-light.scss +1 -0
  130. package/styles/highcontrast-lite.css +1059 -0
  131. package/styles/highcontrast-lite.scss +16 -0
  132. package/styles/highcontrast.css +207 -167
  133. package/styles/highcontrast.scss +1 -0
  134. package/styles/material-dark-lite.css +1092 -0
  135. package/styles/material-dark-lite.scss +16 -0
  136. package/styles/material-dark.css +198 -158
  137. package/styles/material-dark.scss +1 -0
  138. package/styles/material-lite.css +1097 -0
  139. package/styles/material-lite.scss +16 -0
  140. package/styles/material.css +183 -143
  141. package/styles/material.scss +1 -0
  142. package/styles/material3-dark-lite.css +1090 -0
  143. package/styles/material3-dark-lite.scss +16 -0
  144. package/styles/material3-dark.css +185 -145
  145. package/styles/material3-dark.scss +1 -0
  146. package/styles/material3-lite.css +1092 -0
  147. package/styles/material3-lite.scss +16 -0
  148. package/styles/material3.css +185 -145
  149. package/styles/material3.scss +1 -0
  150. package/styles/tailwind-dark-lite.css +1060 -0
  151. package/styles/tailwind-dark-lite.scss +16 -0
  152. package/styles/tailwind-dark.css +198 -164
  153. package/styles/tailwind-dark.scss +1 -0
  154. package/styles/tailwind-lite.css +1060 -0
  155. package/styles/tailwind-lite.scss +16 -0
  156. package/styles/tailwind.css +198 -164
  157. package/styles/tailwind.scss +1 -0
  158. package/tslint.json +0 -111
@@ -1708,6 +1708,9 @@ function pasteHandler(parent) {
1708
1708
  parent.isDragDrop = false;
1709
1709
  if (parent.selectedNodes.length !== 0 && parent.enablePaste) {
1710
1710
  var path = (parent.folderPath === '') ? parent.path : parent.folderPath;
1711
+ if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {
1712
+ parent.targetPath = getValue('filterPath', parent.actionRecords[0]).replace(/\\/g, '/');
1713
+ }
1711
1714
  var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);
1712
1715
  if (!subFolder) {
1713
1716
  if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {
@@ -2986,6 +2989,7 @@ function triggerSearchOperation(parent, data, eventArgs) {
2986
2989
  showHiddenItems: getValue('showHiddenItems', data)
2987
2990
  };
2988
2991
  parent.trigger('search', searchEventArgs, function (args) {
2992
+ setValue('data', args.searchResults, data);
2989
2993
  if (args.cancel) {
2990
2994
  eventArgs.cancel = true;
2991
2995
  }
@@ -4805,9 +4809,6 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
4805
4809
  }
4806
4810
  iconsView.classList.remove(DISPLAY_NONE);
4807
4811
  if (this.parent.enableVirtualization && this.allItems.length > 0) {
4808
- if (!this.element.style.height) {
4809
- this.adjustHeight();
4810
- }
4811
4812
  this.parent.virtualizationModule.setUIVirtualization();
4812
4813
  }
4813
4814
  this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);
@@ -4845,7 +4846,6 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
4845
4846
  for (var i = 0; i < activeEle.length; i++) {
4846
4847
  activeEle[i].setAttribute('aria-selected', 'true');
4847
4848
  }
4848
- this.adjustHeight();
4849
4849
  this.element.style.maxHeight = '100%';
4850
4850
  this.getItemCount();
4851
4851
  this.addEventListener();
@@ -4952,11 +4952,6 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
4952
4952
  LargeIconsView.prototype.getModuleName = function () {
4953
4953
  return 'largeiconsview';
4954
4954
  };
4955
- LargeIconsView.prototype.adjustHeight = function () {
4956
- var pane = select('#' + this.parent.element.id + CONTENT_ID, this.parent.element);
4957
- var bar = select('#' + this.parent.element.id + BREADCRUMBBAR_ID, this.parent.element);
4958
- this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';
4959
- };
4960
4955
  LargeIconsView.prototype.onItemCreated = function (args) {
4961
4956
  args.item.removeAttribute('aria-level');
4962
4957
  if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {
@@ -5156,7 +5151,6 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5156
5151
  if (this.parent.view !== 'LargeIcons') {
5157
5152
  return;
5158
5153
  }
5159
- this.adjustHeight();
5160
5154
  };
5161
5155
  LargeIconsView.prototype.onUpdateSelectionData = function () {
5162
5156
  if (this.parent.view !== 'LargeIcons') {
@@ -5284,7 +5278,8 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5284
5278
  LargeIconsView.prototype.onpasteEnd = function (args) {
5285
5279
  if (this.parent.view === 'LargeIcons') {
5286
5280
  this.isPasteOperation = true;
5287
- if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {
5281
+ if (this.parent.path === this.parent.destinationPath ||
5282
+ this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {
5288
5283
  this.onPathChanged(args);
5289
5284
  }
5290
5285
  }
@@ -5306,9 +5301,6 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5306
5301
  case 'allowDragAndDrop':
5307
5302
  this.createDragObj();
5308
5303
  break;
5309
- case 'height':
5310
- this.adjustHeight();
5311
- break;
5312
5304
  case 'selectedItems':
5313
5305
  this.isInteraction = false;
5314
5306
  this.isInteracted = false;
@@ -5772,6 +5764,9 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5772
5764
  case 'ctrlD':
5773
5765
  this.doDownload();
5774
5766
  break;
5767
+ case 'back':
5768
+ this.parent.traverseBackward();
5769
+ break;
5775
5770
  }
5776
5771
  };
5777
5772
  LargeIconsView.prototype.doDownload = function () {
@@ -6064,9 +6059,6 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
6064
6059
  };
6065
6060
  LargeIconsView.prototype.resizeHandler = function () {
6066
6061
  this.getItemCount();
6067
- if (!isNullOrUndefined(this.listObj)) {
6068
- this.adjustHeight();
6069
- }
6070
6062
  };
6071
6063
  LargeIconsView.prototype.splitterResizeHandler = function () {
6072
6064
  this.getItemCount();
@@ -6749,7 +6741,23 @@ var ContextMenu = /** @__PURE__ @class */ (function () {
6749
6741
  iconSpan.setAttribute('class', ICON_GRID + ' ' + MENU_ICON);
6750
6742
  }
6751
6743
  };
6752
- ContextMenu.prototype.onBeforeClose = function () {
6744
+ ContextMenu.prototype.onBeforeClose = function (args) {
6745
+ var eventArgs = {
6746
+ cancel: false,
6747
+ element: args.element,
6748
+ event: args.event,
6749
+ isFocused: args.isFocused,
6750
+ fileDetails: [this.menuItemData],
6751
+ items: args.items,
6752
+ parentItem: args.parentItem,
6753
+ menuType: this.menuType
6754
+ };
6755
+ this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {
6756
+ if (menuCloseArgs.cancel) {
6757
+ args.cancel = menuCloseArgs.cancel;
6758
+ return;
6759
+ }
6760
+ });
6753
6761
  this.menuTarget = null;
6754
6762
  if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {
6755
6763
  this.parent.pathId.pop();
@@ -7086,7 +7094,13 @@ var ContextMenu = /** @__PURE__ @class */ (function () {
7086
7094
  break;
7087
7095
  case 'paste':
7088
7096
  if (_this.menuType === 'folder') {
7089
- _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);
7097
+ if (_this.parent.activeModule === 'navigationpane') {
7098
+ _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));
7099
+ _this.parent.folderPath = _this.parent.path;
7100
+ }
7101
+ else {
7102
+ _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);
7103
+ }
7090
7104
  }
7091
7105
  else {
7092
7106
  _this.parent.folderPath = '';
@@ -7528,6 +7542,7 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
7528
7542
  _this.uploadedCount = 0;
7529
7543
  //Specifies whether the operating system is MAC or not
7530
7544
  _this.isMac = false;
7545
+ _this.dragSelectedItems = [];
7531
7546
  FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);
7532
7547
  return _this;
7533
7548
  }
@@ -7652,6 +7667,9 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
7652
7667
  this.setRtl(this.enableRtl);
7653
7668
  this.addEventListeners();
7654
7669
  read(this, (this.path !== this.originalPath) ? initialEnd : finalizeEnd, this.path);
7670
+ if (this.fileView === 'Details') {
7671
+ this.largeiconsviewModule.element.classList.add(DISPLAY_NONE);
7672
+ }
7655
7673
  this.adjustHeight();
7656
7674
  if (isNullOrUndefined(this.navigationpaneModule)) {
7657
7675
  this.splitterObj.collapse(this.enableRtl ? 1 : 0);
@@ -8088,7 +8106,33 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8088
8106
  break;
8089
8107
  }
8090
8108
  };
8109
+ FileManager.prototype.wireSelectOnDragEvent = function (isBind) {
8110
+ if (isNullOrUndefined(this.view)) {
8111
+ return;
8112
+ }
8113
+ if (isBind) {
8114
+ this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');
8115
+ }
8116
+ if (!this.viewElem) {
8117
+ return;
8118
+ }
8119
+ if (isBind) {
8120
+ if (this.allowMultiSelection) {
8121
+ EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);
8122
+ this.on(layoutChange, this.onLayoutChange, this);
8123
+ this.on(selectionChanged, this.onLayoutChange, this);
8124
+ }
8125
+ }
8126
+ else {
8127
+ EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);
8128
+ this.off(layoutChange, this.onLayoutChange);
8129
+ this.off(selectionChanged, this.onLayoutChange);
8130
+ }
8131
+ };
8091
8132
  FileManager.prototype.wireEvents = function () {
8133
+ if (this.enableRangeSelection) {
8134
+ this.wireSelectOnDragEvent(true);
8135
+ }
8092
8136
  EventHandler.add(window, 'resize', this.resizeHandler, this);
8093
8137
  this.keyboardModule = new KeyboardEvents(this.element, {
8094
8138
  keyAction: this.keyActionHandler.bind(this),
@@ -8097,9 +8141,94 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8097
8141
  });
8098
8142
  };
8099
8143
  FileManager.prototype.unWireEvents = function () {
8144
+ this.wireSelectOnDragEvent(false);
8100
8145
  EventHandler.remove(window, 'resize', this.resizeHandler);
8101
8146
  this.keyboardModule.destroy();
8102
8147
  };
8148
+ FileManager.prototype.onDragStart = function (event) {
8149
+ if (this.viewElem) {
8150
+ if (this.allowDragAndDrop) {
8151
+ var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');
8152
+ if (targetElement) {
8153
+ return;
8154
+ }
8155
+ }
8156
+ event.preventDefault();
8157
+ this.dragX = event.pageX;
8158
+ this.dragY = event.pageY;
8159
+ if (!this.dragSelectElement) {
8160
+ this.dragSelectElement = createElement('div', {
8161
+ id: this.element.id + '_drag',
8162
+ className: 'e-filemanager e-drag-select',
8163
+ styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'
8164
+ });
8165
+ document.body.append(this.dragSelectElement);
8166
+ }
8167
+ EventHandler.add(document, 'mouseup', this.onDragStop, this);
8168
+ EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);
8169
+ EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);
8170
+ }
8171
+ };
8172
+ FileManager.prototype.onDrag = function (event) {
8173
+ event.stopPropagation();
8174
+ if (this.dragSelectElement) {
8175
+ var diffX = event.pageX - this.dragX;
8176
+ var diffY = event.pageY - this.dragY;
8177
+ setStyleAttribute(this.dragSelectElement, {
8178
+ 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',
8179
+ 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'
8180
+ });
8181
+ this.selectItems();
8182
+ }
8183
+ else {
8184
+ EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);
8185
+ }
8186
+ };
8187
+ FileManager.prototype.onDragStop = function () {
8188
+ if (this.viewElem) {
8189
+ EventHandler.remove(document, 'mouseup', this.onDragStop);
8190
+ EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);
8191
+ }
8192
+ if (this.dragSelectElement) {
8193
+ EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);
8194
+ if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {
8195
+ this.setProperties({ selectedItems: this.dragSelectedItems });
8196
+ }
8197
+ this.dragSelectedItems = [];
8198
+ detach(this.dragSelectElement);
8199
+ this.dragSelectElement = null;
8200
+ }
8201
+ };
8202
+ FileManager.prototype.selectItems = function () {
8203
+ this.dragSelectedItems = [];
8204
+ var dragRect = this.dragSelectElement.getBoundingClientRect();
8205
+ var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);
8206
+ removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);
8207
+ removeClass(selectAll('.e-check', this.viewElem), ['e-check']);
8208
+ for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {
8209
+ var item = allItems_1[_i];
8210
+ var itemRect = item.getBoundingClientRect();
8211
+ if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right
8212
+ || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)
8213
+ && (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0)) {
8214
+ if (this.viewElem.classList.contains('e-large-icons')) {
8215
+ item.classList.add('e-active');
8216
+ this.dragSelectedItems.push(item.getAttribute('title'));
8217
+ }
8218
+ else {
8219
+ addClass(selectAll('.e-rowcell', item), ['e-active']);
8220
+ this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);
8221
+ }
8222
+ item.querySelector('.e-frame').classList.add('e-check');
8223
+ }
8224
+ }
8225
+ };
8226
+ FileManager.prototype.onLayoutChange = function () {
8227
+ if (this.enableRangeSelection) {
8228
+ this.unWireEvents();
8229
+ this.wireEvents();
8230
+ }
8231
+ };
8103
8232
  FileManager.prototype.setPath = function () {
8104
8233
  this.setProperties({ selectedItems: [] }, true);
8105
8234
  this.ensurePath();
@@ -8146,6 +8275,12 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8146
8275
  case 'detailsViewSettings':
8147
8276
  this.notify(modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });
8148
8277
  break;
8278
+ case 'enableRangeSelection':
8279
+ this.wireSelectOnDragEvent(false);
8280
+ if (newProp.enableRangeSelection) {
8281
+ this.wireSelectOnDragEvent(true);
8282
+ }
8283
+ break;
8149
8284
  case 'enableRtl':
8150
8285
  this.enableRtl = newProp.enableRtl;
8151
8286
  this.refresh();
@@ -8326,6 +8461,9 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8326
8461
  this.largeiconsviewModule = null;
8327
8462
  this.detailsviewModule = null;
8328
8463
  this.breadcrumbbarModule = null;
8464
+ this.viewElem = null;
8465
+ this.dragSelectElement = null;
8466
+ this.dragSelectedItems = null;
8329
8467
  };
8330
8468
  /**
8331
8469
  * Creates a new folder in file manager.
@@ -8514,6 +8652,23 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8514
8652
  FileManager.prototype.selectAll = function () {
8515
8653
  this.notify(methodCall, { action: 'selectAll' });
8516
8654
  };
8655
+ /**
8656
+ * Specifies the method that must be invoked to traverse the path backwards in the file manager.
8657
+ *
8658
+ * @returns {void}
8659
+ */
8660
+ FileManager.prototype.traverseBackward = function () {
8661
+ if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {
8662
+ this.pathId.pop();
8663
+ this.pathNames.pop();
8664
+ var newPath = this.pathNames.slice(1).join('/');
8665
+ newPath = newPath === '' ? '/' : '/' + newPath + '/';
8666
+ this.setProperties({ path: newPath }, true);
8667
+ read(this, pathChanged, this.path);
8668
+ var treeNodeId = this.pathId[this.pathId.length - 1];
8669
+ this.notify(updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });
8670
+ }
8671
+ };
8517
8672
  /**
8518
8673
  * Deselects the currently selected folders and files in current path.
8519
8674
  *
@@ -8650,6 +8805,9 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8650
8805
  __decorate$8([
8651
8806
  Property(null)
8652
8807
  ], FileManager.prototype, "sortComparer", void 0);
8808
+ __decorate$8([
8809
+ Property(false)
8810
+ ], FileManager.prototype, "enableRangeSelection", void 0);
8653
8811
  __decorate$8([
8654
8812
  Complex({}, ToolbarSettings)
8655
8813
  ], FileManager.prototype, "toolbarSettings", void 0);
@@ -8740,6 +8898,9 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8740
8898
  __decorate$8([
8741
8899
  Event()
8742
8900
  ], FileManager.prototype, "menuOpen", void 0);
8901
+ __decorate$8([
8902
+ Event()
8903
+ ], FileManager.prototype, "menuClose", void 0);
8743
8904
  __decorate$8([
8744
8905
  Event()
8745
8906
  ], FileManager.prototype, "failure", void 0);
@@ -10573,7 +10734,8 @@ var DetailsView = /** @__PURE__ @class */ (function () {
10573
10734
  ctrlD: 'ctrl+d',
10574
10735
  f2: 'f2',
10575
10736
  ctrlA: 'ctrl+a',
10576
- enter: 'enter'
10737
+ enter: 'enter',
10738
+ back: 'backspace'
10577
10739
  };
10578
10740
  }
10579
10741
  /* istanbul ignore next */
@@ -10748,6 +10910,10 @@ var DetailsView = /** @__PURE__ @class */ (function () {
10748
10910
  for (var i = 0, len = columns.length; i < len; i++) {
10749
10911
  columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;
10750
10912
  }
10913
+ if (this.parent.enableRangeSelection) {
10914
+ var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };
10915
+ columns.push(HiddenName);
10916
+ }
10751
10917
  return columns;
10752
10918
  };
10753
10919
  DetailsView.prototype.adjustHeight = function () {
@@ -11575,7 +11741,8 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11575
11741
  DetailsView.prototype.onpasteEnd = function (args) {
11576
11742
  if (this.parent.view === 'Details') {
11577
11743
  this.isPasteOperation = true;
11578
- if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {
11744
+ if (this.parent.path === this.parent.destinationPath ||
11745
+ this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {
11579
11746
  this.onPathChanged(args);
11580
11747
  }
11581
11748
  }
@@ -12012,6 +12179,9 @@ var DetailsView = /** @__PURE__ @class */ (function () {
12012
12179
  this.parent.setProperties({ selectedItems: lastItem }, true);
12013
12180
  this.selectRecords(lastItem);
12014
12181
  break;
12182
+ case 'back':
12183
+ this.parent.traverseBackward();
12184
+ break;
12015
12185
  }
12016
12186
  };
12017
12187
  DetailsView.prototype.gridSelectNodes = function () {