@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
@@ -1914,6 +1914,30 @@ function removeItemClass(parent, value) {
1914
1914
  ele[i].classList.remove(value);
1915
1915
  }
1916
1916
  }
1917
+ /**
1918
+ * Remove item class handler
1919
+ *
1920
+ * @param {Element} scrollParent - specifies the scrolling target.
1921
+ * @param {IFileManager} parent - specifies the parent.
1922
+ * @param {string} nodeClass - specifies the node class.
1923
+ * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.
1924
+ * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.
1925
+ * @returns {void}
1926
+ * @private
1927
+ */
1928
+ function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {
1929
+ let position;
1930
+ let elementData = scrollParent.getBoundingClientRect();
1931
+ const node = select("." + nodeClass, scrollParent);
1932
+ if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {
1933
+ position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;
1934
+ scrollParent.scrollBy(0, position);
1935
+ }
1936
+ if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {
1937
+ position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;
1938
+ scrollParent.scrollBy(0, -position);
1939
+ }
1940
+ }
1917
1941
  /**
1918
1942
  * Dragging handler
1919
1943
  *
@@ -1934,12 +1958,15 @@ function draggingHandler(parent, args) {
1934
1958
  }
1935
1959
  removeBlur(parent, 'hover');
1936
1960
  let node = null;
1961
+ let scrollParent;
1937
1962
  if (parent.targetModule === 'navigationpane') {
1938
1963
  node = closest(args.target, 'li');
1939
1964
  node.classList.add(HOVER, DROP_FOLDER);
1940
1965
  canDrop = true;
1941
1966
  /* istanbul ignore next */
1942
1967
  parent.treeExpandTimer = window.setTimeout(() => { parent.notify(dragging, args); }, 800);
1968
+ scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;
1969
+ scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);
1943
1970
  }
1944
1971
  else if (parent.targetModule === 'detailsview') {
1945
1972
  node = closest(args.target, 'tr');
@@ -1950,6 +1977,8 @@ function draggingHandler(parent, args) {
1950
1977
  node.classList.add(DROP_FILE);
1951
1978
  }
1952
1979
  canDrop = true;
1980
+ scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');
1981
+ scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);
1953
1982
  }
1954
1983
  else if (parent.targetModule === 'largeiconsview') {
1955
1984
  node = closest(args.target, 'li');
@@ -1957,6 +1986,8 @@ function draggingHandler(parent, args) {
1957
1986
  node.classList.add(HOVER, DROP_FOLDER);
1958
1987
  }
1959
1988
  canDrop = true;
1989
+ scrollParent = parent.largeiconsviewModule.element.firstElementChild;
1990
+ scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);
1960
1991
  /* istanbul ignore next */
1961
1992
  }
1962
1993
  else if (parent.targetModule === 'breadcrumbbar') {
@@ -3968,6 +3999,7 @@ class LargeIconsView {
3968
3999
  this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);
3969
4000
  this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.listElements));
3970
4001
  this.element.appendChild(this.listElements);
4002
+ this.listElements.setAttribute("aria-label", "listbox");
3971
4003
  this.preventImgDrag();
3972
4004
  this.createDragObj();
3973
4005
  if (this.itemList.length === 0) {
@@ -4034,7 +4066,7 @@ class LargeIconsView {
4034
4066
  this.dragObj = new Draggable(this.listElements, {
4035
4067
  enableTailMode: true,
4036
4068
  distance: 5,
4037
- enableAutoScroll: true,
4069
+ enableAutoScroll: false,
4038
4070
  dragTarget: '.' + LARGE_ICON,
4039
4071
  helper: this.dragHelper.bind(this),
4040
4072
  cursorAt: this.parent.dragCursorPosition,
@@ -4131,6 +4163,7 @@ class LargeIconsView {
4131
4163
  });
4132
4164
  checkElement.setAttribute('role', 'checkbox');
4133
4165
  checkElement.setAttribute('aria-checked', 'false');
4166
+ checkElement.setAttribute('aria-label', 'checkbox');
4134
4167
  args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);
4135
4168
  }
4136
4169
  onLayoutChange(args) {
@@ -5870,6 +5903,7 @@ class ContextMenu$2 {
5870
5903
  * @hidden
5871
5904
  */
5872
5905
  constructor(parent) {
5906
+ this.isMenuItemClicked = false;
5873
5907
  this.currentItems = [];
5874
5908
  this.currentElement = null;
5875
5909
  this.disabledItems = [];
@@ -5913,6 +5947,12 @@ class ContextMenu$2 {
5913
5947
  }
5914
5948
  onBeforeClose() {
5915
5949
  this.menuTarget = null;
5950
+ if (!this.isMenuItemClicked && this.parent.pathId.length > 1) {
5951
+ this.parent.pathId.pop();
5952
+ this.parent.pathId.push(Object.keys(this.parent.feParent)[Object.keys.length]);
5953
+ this.parent.navigationpaneModule.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];
5954
+ }
5955
+ this.isMenuItemClicked = false;
5916
5956
  }
5917
5957
  /* istanbul ignore next */
5918
5958
  onBeforeOpen(args) {
@@ -6179,6 +6219,7 @@ class ContextMenu$2 {
6179
6219
  this.parent.trigger('menuClick', eventArgs, (menuClickArgs) => {
6180
6220
  let sItems;
6181
6221
  if (!menuClickArgs.cancel) {
6222
+ this.isMenuItemClicked = true;
6182
6223
  // eslint:disable-next-line
6183
6224
  switch (itemText) {
6184
6225
  case 'cut':
@@ -8769,7 +8810,7 @@ class NavigationPane {
8769
8810
  },
8770
8811
  dragStop: dragStopHandler.bind(this, this.parent),
8771
8812
  enableTailMode: true,
8772
- enableAutoScroll: true,
8813
+ enableAutoScroll: false,
8773
8814
  helper: this.dragHelper.bind(this)
8774
8815
  });
8775
8816
  }
@@ -8923,7 +8964,7 @@ class NavigationPane {
8923
8964
  this.parent.itemData = nodeData;
8924
8965
  const previousPath = this.parent.path;
8925
8966
  const sNode = select('[data-uid="' + this.treeObj.selectedNodes[0] + '"]', this.treeObj.element);
8926
- if (!this.isRightClick && this.isSameNodeClicked && sNode.querySelector('.e-list-text').innerHTML !== this.parent.pathNames[this.parent.pathNames.length - 1]) {
8967
+ if (!this.isRightClick && this.isSameNodeClicked) {
8927
8968
  updatePath(args.node, this.parent.itemData[0], this.parent);
8928
8969
  }
8929
8970
  else {
@@ -9062,7 +9103,6 @@ class NavigationPane {
9062
9103
  onFinalizeEnd(args) {
9063
9104
  this.onInit();
9064
9105
  const id = getValue('_fm_id', args.cwd);
9065
- this.removeChildNodes(id);
9066
9106
  this.addChild(args.files, id, false);
9067
9107
  this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];
9068
9108
  }
@@ -10585,7 +10625,7 @@ class DetailsView {
10585
10625
  dragStartHandler(this.parent, args, this.dragObj);
10586
10626
  },
10587
10627
  dragStop: dragStopHandler.bind(this, this.parent),
10588
- enableAutoScroll: true,
10628
+ enableAutoScroll: false,
10589
10629
  helper: this.dragHelper.bind(this)
10590
10630
  });
10591
10631
  }