@syncfusion/ej2-filemanager 23.2.6 → 24.1.43

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 (68) hide show
  1. package/CHANGELOG.md +74 -120
  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 +45 -5
  6. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  7. package/dist/es6/ej2-filemanager.es5.js +45 -5
  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/common/utility.d.ts +12 -0
  14. package/src/file-manager/common/utility.js +31 -0
  15. package/src/file-manager/layout/details-view.js +1 -1
  16. package/src/file-manager/layout/large-icons-view.js +3 -1
  17. package/src/file-manager/layout/navigation-pane.js +2 -3
  18. package/src/file-manager/pop-up/context-menu.d.ts +1 -0
  19. package/src/file-manager/pop-up/context-menu.js +8 -0
  20. package/styles/bootstrap-dark.css +1 -1
  21. package/styles/bootstrap.css +1 -1
  22. package/styles/bootstrap4.css +1 -1
  23. package/styles/bootstrap5-dark.css +1 -1
  24. package/styles/bootstrap5.css +1 -1
  25. package/styles/fabric-dark.css +1 -1
  26. package/styles/fabric.css +1 -1
  27. package/styles/file-manager/_bootstrap-dark-definition.scss +1 -1
  28. package/styles/file-manager/_bootstrap-definition.scss +1 -1
  29. package/styles/file-manager/_bootstrap4-definition.scss +1 -1
  30. package/styles/file-manager/_bootstrap5-definition.scss +1 -1
  31. package/styles/file-manager/_fabric-dark-definition.scss +1 -1
  32. package/styles/file-manager/_fabric-definition.scss +1 -1
  33. package/styles/file-manager/_fluent-definition.scss +1 -1
  34. package/styles/file-manager/_fusionnew-definition.scss +1 -1
  35. package/styles/file-manager/_highcontrast-definition.scss +1 -1
  36. package/styles/file-manager/_highcontrast-light-definition.scss +1 -1
  37. package/styles/file-manager/_layout.scss +5 -3
  38. package/styles/file-manager/_material-dark-definition.scss +1 -1
  39. package/styles/file-manager/_material-definition.scss +1 -1
  40. package/styles/file-manager/_material3-definition.scss +6 -6
  41. package/styles/file-manager/_tailwind-definition.scss +1 -1
  42. package/styles/file-manager/bootstrap-dark.css +1 -1
  43. package/styles/file-manager/bootstrap.css +1 -1
  44. package/styles/file-manager/bootstrap4.css +1 -1
  45. package/styles/file-manager/bootstrap5-dark.css +1 -1
  46. package/styles/file-manager/bootstrap5.css +1 -1
  47. package/styles/file-manager/fabric-dark.css +1 -1
  48. package/styles/file-manager/fabric.css +1 -1
  49. package/styles/file-manager/fluent-dark.css +1 -1
  50. package/styles/file-manager/fluent.css +1 -1
  51. package/styles/file-manager/highcontrast-light.css +1 -1
  52. package/styles/file-manager/highcontrast.css +1 -1
  53. package/styles/file-manager/material-dark.css +1 -1
  54. package/styles/file-manager/material.css +1 -1
  55. package/styles/file-manager/material3-dark.css +5 -6
  56. package/styles/file-manager/material3.css +5 -6
  57. package/styles/file-manager/tailwind-dark.css +1 -1
  58. package/styles/file-manager/tailwind.css +1 -1
  59. package/styles/fluent-dark.css +1 -1
  60. package/styles/fluent.css +1 -1
  61. package/styles/highcontrast-light.css +1 -1
  62. package/styles/highcontrast.css +1 -1
  63. package/styles/material-dark.css +1 -1
  64. package/styles/material.css +1 -1
  65. package/styles/material3-dark.css +5 -6
  66. package/styles/material3.css +5 -6
  67. package/styles/tailwind-dark.css +1 -1
  68. package/styles/tailwind.css +1 -1
@@ -2063,6 +2063,30 @@ function removeItemClass(parent, value) {
2063
2063
  ele[i].classList.remove(value);
2064
2064
  }
2065
2065
  }
2066
+ /**
2067
+ * Remove item class handler
2068
+ *
2069
+ * @param {Element} scrollParent - specifies the scrolling target.
2070
+ * @param {IFileManager} parent - specifies the parent.
2071
+ * @param {string} nodeClass - specifies the node class.
2072
+ * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.
2073
+ * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.
2074
+ * @returns {void}
2075
+ * @private
2076
+ */
2077
+ function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {
2078
+ var position;
2079
+ var elementData = scrollParent.getBoundingClientRect();
2080
+ var node = select("." + nodeClass, scrollParent);
2081
+ if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {
2082
+ position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;
2083
+ scrollParent.scrollBy(0, position);
2084
+ }
2085
+ if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {
2086
+ position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;
2087
+ scrollParent.scrollBy(0, -position);
2088
+ }
2089
+ }
2066
2090
  /**
2067
2091
  * Dragging handler
2068
2092
  *
@@ -2083,12 +2107,15 @@ function draggingHandler(parent, args) {
2083
2107
  }
2084
2108
  removeBlur(parent, 'hover');
2085
2109
  var node = null;
2110
+ var scrollParent;
2086
2111
  if (parent.targetModule === 'navigationpane') {
2087
2112
  node = closest(args.target, 'li');
2088
2113
  node.classList.add(HOVER, DROP_FOLDER);
2089
2114
  canDrop = true;
2090
2115
  /* istanbul ignore next */
2091
2116
  parent.treeExpandTimer = window.setTimeout(function () { parent.notify(dragging, args); }, 800);
2117
+ scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;
2118
+ scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);
2092
2119
  }
2093
2120
  else if (parent.targetModule === 'detailsview') {
2094
2121
  node = closest(args.target, 'tr');
@@ -2099,6 +2126,8 @@ function draggingHandler(parent, args) {
2099
2126
  node.classList.add(DROP_FILE);
2100
2127
  }
2101
2128
  canDrop = true;
2129
+ scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');
2130
+ scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);
2102
2131
  }
2103
2132
  else if (parent.targetModule === 'largeiconsview') {
2104
2133
  node = closest(args.target, 'li');
@@ -2106,6 +2135,8 @@ function draggingHandler(parent, args) {
2106
2135
  node.classList.add(HOVER, DROP_FOLDER);
2107
2136
  }
2108
2137
  canDrop = true;
2138
+ scrollParent = parent.largeiconsviewModule.element.firstElementChild;
2139
+ scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);
2109
2140
  /* istanbul ignore next */
2110
2141
  }
2111
2142
  else if (parent.targetModule === 'breadcrumbbar') {
@@ -4120,6 +4151,7 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
4120
4151
  this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);
4121
4152
  this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.listElements));
4122
4153
  this.element.appendChild(this.listElements);
4154
+ this.listElements.setAttribute("aria-label", "listbox");
4123
4155
  this.preventImgDrag();
4124
4156
  this.createDragObj();
4125
4157
  if (this.itemList.length === 0) {
@@ -4187,7 +4219,7 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
4187
4219
  this.dragObj = new Draggable(this.listElements, {
4188
4220
  enableTailMode: true,
4189
4221
  distance: 5,
4190
- enableAutoScroll: true,
4222
+ enableAutoScroll: false,
4191
4223
  dragTarget: '.' + LARGE_ICON,
4192
4224
  helper: this.dragHelper.bind(this),
4193
4225
  cursorAt: this.parent.dragCursorPosition,
@@ -4284,6 +4316,7 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
4284
4316
  });
4285
4317
  checkElement.setAttribute('role', 'checkbox');
4286
4318
  checkElement.setAttribute('aria-checked', 'false');
4319
+ checkElement.setAttribute('aria-label', 'checkbox');
4287
4320
  args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);
4288
4321
  };
4289
4322
  LargeIconsView.prototype.onLayoutChange = function (args) {
@@ -6030,6 +6063,7 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
6030
6063
  * @hidden
6031
6064
  */
6032
6065
  function ContextMenu$$1(parent) {
6066
+ this.isMenuItemClicked = false;
6033
6067
  this.currentItems = [];
6034
6068
  this.currentElement = null;
6035
6069
  this.disabledItems = [];
@@ -6073,6 +6107,12 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
6073
6107
  };
6074
6108
  ContextMenu$$1.prototype.onBeforeClose = function () {
6075
6109
  this.menuTarget = null;
6110
+ if (!this.isMenuItemClicked && this.parent.pathId.length > 1) {
6111
+ this.parent.pathId.pop();
6112
+ this.parent.pathId.push(Object.keys(this.parent.feParent)[Object.keys.length]);
6113
+ this.parent.navigationpaneModule.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];
6114
+ }
6115
+ this.isMenuItemClicked = false;
6076
6116
  };
6077
6117
  /* istanbul ignore next */
6078
6118
  ContextMenu$$1.prototype.onBeforeOpen = function (args) {
@@ -6341,6 +6381,7 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
6341
6381
  this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {
6342
6382
  var sItems;
6343
6383
  if (!menuClickArgs.cancel) {
6384
+ _this.isMenuItemClicked = true;
6344
6385
  // eslint:disable-next-line
6345
6386
  switch (itemText) {
6346
6387
  case 'cut':
@@ -8974,7 +9015,7 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
8974
9015
  },
8975
9016
  dragStop: dragStopHandler.bind(this, this.parent),
8976
9017
  enableTailMode: true,
8977
- enableAutoScroll: true,
9018
+ enableAutoScroll: false,
8978
9019
  helper: this.dragHelper.bind(this)
8979
9020
  });
8980
9021
  }
@@ -9128,7 +9169,7 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
9128
9169
  this.parent.itemData = nodeData;
9129
9170
  var previousPath = this.parent.path;
9130
9171
  var sNode = select('[data-uid="' + this.treeObj.selectedNodes[0] + '"]', this.treeObj.element);
9131
- if (!this.isRightClick && this.isSameNodeClicked && sNode.querySelector('.e-list-text').innerHTML !== this.parent.pathNames[this.parent.pathNames.length - 1]) {
9172
+ if (!this.isRightClick && this.isSameNodeClicked) {
9132
9173
  updatePath(args.node, this.parent.itemData[0], this.parent);
9133
9174
  }
9134
9175
  else {
@@ -9267,7 +9308,6 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
9267
9308
  NavigationPane.prototype.onFinalizeEnd = function (args) {
9268
9309
  this.onInit();
9269
9310
  var id = getValue('_fm_id', args.cwd);
9270
- this.removeChildNodes(id);
9271
9311
  this.addChild(args.files, id, false);
9272
9312
  this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];
9273
9313
  };
@@ -10794,7 +10834,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
10794
10834
  dragStartHandler(_this.parent, args, _this.dragObj);
10795
10835
  },
10796
10836
  dragStop: dragStopHandler.bind(this, this.parent),
10797
- enableAutoScroll: true,
10837
+ enableAutoScroll: false,
10798
10838
  helper: this.dragHelper.bind(this)
10799
10839
  });
10800
10840
  }