@syncfusion/ej2-filemanager 20.4.54 → 21.1.37

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 (69) hide show
  1. package/CHANGELOG.md +3 -39
  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 +72 -28
  6. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  7. package/dist/es6/ej2-filemanager.es5.js +72 -28
  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.js +4 -2
  14. package/src/file-manager/base/interface.d.ts +130 -5
  15. package/src/file-manager/layout/details-view.js +11 -1
  16. package/src/file-manager/layout/navigation-pane.d.ts +1 -0
  17. package/src/file-manager/layout/navigation-pane.js +49 -21
  18. package/src/file-manager/models/details-view-settings.js +1 -1
  19. package/src/file-manager/models/search-settings.d.ts +13 -1
  20. package/src/file-manager/pop-up/context-menu.js +7 -3
  21. package/styles/bootstrap-dark.css +2 -5
  22. package/styles/bootstrap.css +1 -4
  23. package/styles/bootstrap4.css +1 -4
  24. package/styles/bootstrap5-dark.css +3 -5
  25. package/styles/bootstrap5.css +3 -5
  26. package/styles/fabric-dark.css +1 -4
  27. package/styles/fabric.css +1 -4
  28. package/styles/file-manager/_bootstrap-dark-definition.scss +2 -0
  29. package/styles/file-manager/_bootstrap-definition.scss +2 -0
  30. package/styles/file-manager/_bootstrap4-definition.scss +2 -0
  31. package/styles/file-manager/_bootstrap5-definition.scss +13 -11
  32. package/styles/file-manager/_fabric-dark-definition.scss +2 -0
  33. package/styles/file-manager/_fabric-definition.scss +2 -0
  34. package/styles/file-manager/_fluent-definition.scss +13 -11
  35. package/styles/file-manager/_fusionnew-definition.scss +2 -0
  36. package/styles/file-manager/_highcontrast-definition.scss +2 -0
  37. package/styles/file-manager/_highcontrast-light-definition.scss +2 -0
  38. package/styles/file-manager/_layout.scss +74 -13
  39. package/styles/file-manager/_material-dark-definition.scss +2 -0
  40. package/styles/file-manager/_material-definition.scss +2 -0
  41. package/styles/file-manager/_tailwind-definition.scss +14 -12
  42. package/styles/file-manager/_theme.scss +15 -3
  43. package/styles/file-manager/bootstrap-dark.css +2 -5
  44. package/styles/file-manager/bootstrap.css +1 -4
  45. package/styles/file-manager/bootstrap4.css +1 -4
  46. package/styles/file-manager/bootstrap5-dark.css +3 -5
  47. package/styles/file-manager/bootstrap5.css +3 -5
  48. package/styles/file-manager/fabric-dark.css +1 -4
  49. package/styles/file-manager/fabric.css +1 -4
  50. package/styles/file-manager/fluent-dark.css +2 -5
  51. package/styles/file-manager/fluent.css +2 -5
  52. package/styles/file-manager/highcontrast-light.css +1 -4
  53. package/styles/file-manager/highcontrast.css +1 -4
  54. package/styles/file-manager/material-dark.css +2 -6
  55. package/styles/file-manager/material.css +1 -4
  56. package/styles/file-manager/tailwind-dark.css +3 -5
  57. package/styles/file-manager/tailwind.css +3 -5
  58. package/styles/fluent-dark.css +2 -5
  59. package/styles/fluent.css +2 -5
  60. package/styles/highcontrast-light.css +1 -4
  61. package/styles/highcontrast.css +1 -4
  62. package/styles/material-dark.css +2 -6
  63. package/styles/material.css +1 -4
  64. package/styles/tailwind-dark.css +3 -5
  65. package/styles/tailwind.css +3 -5
  66. package/src/file-manager/models/virtualization-settings-model.d.ts +0 -29
  67. package/src/file-manager/models/virtualization-settings.d.ts +0 -24
  68. package/src/file-manager/models/virtualization-settings.js +0 -40
  69. package/styles/file-manager/_material3-definition.scss +0 -237
@@ -96,7 +96,7 @@ const columnArray = [
96
96
  format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'
97
97
  },
98
98
  {
99
- field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '<span class="e-fe-size">${size}</span>'
99
+ field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '<span class="e-fe-size">${size}</span>', format: 'n2'
100
100
  }
101
101
  ];
102
102
  /**
@@ -5953,10 +5953,11 @@ class ContextMenu$2 {
5953
5953
  this.menuType = 'folder';
5954
5954
  this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map((item) => item.trim()));
5955
5955
  this.contextMenu.dataBind();
5956
- if (isTree) {
5956
+ const selectedTreeNode = select('[data-uid="' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '"]', this.parent.navigationpaneModule.treeObj.element);
5957
+ if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {
5957
5958
  this.disabledItems.push('Open');
5958
5959
  }
5959
- else if (this.parent.selectedItems.length !== 1) {
5960
+ else if (this.parent.selectedItems.length !== 1 && this.parent.activeModule !== 'navigationpane') {
5960
5961
  this.disabledItems.push('Rename', 'Paste');
5961
5962
  }
5962
5963
  }
@@ -6099,10 +6100,13 @@ class ContextMenu$2 {
6099
6100
  refresh(this.parent);
6100
6101
  break;
6101
6102
  case 'open':
6102
- if (this.parent.visitedItem) {
6103
+ if (this.parent.visitedItem && this.parent.activeModule !== 'navigationpane') {
6103
6104
  this.parent.notify(openInit, { target: this.parent.visitedItem });
6104
6105
  }
6105
6106
  else if (this.parent.activeModule === 'navigationpane') {
6107
+ if (this.parent.visitedItem) {
6108
+ this.parent.notify(openInit, { target: this.parent.visitedItem });
6109
+ }
6106
6110
  this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(this.targetNodeElement, 'li'));
6107
6111
  }
6108
6112
  break;
@@ -7042,8 +7046,10 @@ let FileManager = FileManager_1 = class FileManager extends Component {
7042
7046
  break;
7043
7047
  case 'ctrlU':
7044
7048
  e.preventDefault();
7045
- uploadEle = select('#' + this.element.id + UPLOAD_ID, this.element);
7046
- uploadEle.click();
7049
+ if (this.toolbarSettings.items.indexOf('Upload') != -1) {
7050
+ uploadEle = select('#' + this.element.id + UPLOAD_ID, this.element);
7051
+ uploadEle.click();
7052
+ }
7047
7053
  break;
7048
7054
  }
7049
7055
  }
@@ -8418,6 +8424,7 @@ class NavigationPane {
8418
8424
  this.isPathDragged = false;
8419
8425
  this.isRenameParent = false;
8420
8426
  this.isRightClick = false;
8427
+ this.isSameNodeClicked = false;
8421
8428
  this.renameParent = null;
8422
8429
  // Specifies the previously selected nodes in the treeview control.
8423
8430
  this.previousSelected = null;
@@ -8572,7 +8579,7 @@ class NavigationPane {
8572
8579
  }
8573
8580
  // Node Selecting event handler
8574
8581
  onNodeSelecting(args) {
8575
- if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {
8582
+ if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {
8576
8583
  this.restrictSelecting = false;
8577
8584
  this.isNodeClickCalled = false;
8578
8585
  return;
@@ -8581,18 +8588,29 @@ class NavigationPane {
8581
8588
  this.parent.activeModule = 'navigationpane';
8582
8589
  // eslint-disable-next-line
8583
8590
  const nodeData = this.getTreeData(getValue('id', args.nodeData));
8584
- const eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
8585
- this.parent.trigger('fileOpen', eventArgs);
8586
- const selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };
8587
- this.parent.trigger('fileSelect', selecEventArgs);
8588
- args.cancel = eventArgs.cancel;
8589
- if (args.cancel) {
8590
- this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;
8591
- this.previousSelected = this.treeObj.selectedNodes;
8592
- this.treeObj.selectedNodes = [args.node.getAttribute("data-uid")];
8593
- if (!isNullOrUndefined(this.parent) && !isNullOrUndefined(this.parent.contextmenuModule)) {
8594
- this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);
8591
+ if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {
8592
+ this.isNodeClickCalled = false;
8593
+ if (!this.isSameNodeClicked) {
8594
+ this.isSameNodeClicked = true;
8595
+ const selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };
8596
+ this.parent.trigger('fileSelect', selecEventArgs);
8597
+ }
8598
+ if (!this.isRightClick) {
8599
+ const eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
8600
+ this.parent.trigger('fileOpen', eventArgs);
8601
+ args.cancel = eventArgs.cancel;
8595
8602
  }
8603
+ if (args.cancel) {
8604
+ this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;
8605
+ this.isNodeClickCalled = true;
8606
+ this.isSameNodeClicked = false;
8607
+ this.previousSelected = this.treeObj.selectedNodes;
8608
+ this.treeObj.selectedNodes = [args.node.getAttribute("data-uid")];
8609
+ }
8610
+ }
8611
+ else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {
8612
+ const selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };
8613
+ this.parent.trigger('fileSelect', selecEventArgs);
8596
8614
  }
8597
8615
  }
8598
8616
  }
@@ -8604,19 +8622,25 @@ class NavigationPane {
8604
8622
  this.parent.itemData = data;
8605
8623
  this.activeNode = node;
8606
8624
  this.parent.activeModule = 'navigationpane';
8607
- updatePath(node, this.parent.itemData[0], this.parent);
8608
- read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);
8609
- this.parent.visitedItem = node;
8610
- this.isPathDragged = this.isRenameParent = this.isRightClick = false;
8611
- this.treeObj.selectedNodes = [node.getAttribute('data-uid')];
8625
+ const eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };
8626
+ this.parent.trigger('fileOpen', eventArgs);
8627
+ this.isNodeClickCalled = true;
8628
+ if (!eventArgs.cancel) {
8629
+ updatePath(node, this.parent.itemData[0], this.parent);
8630
+ read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);
8631
+ this.parent.visitedItem = node;
8632
+ this.isPathDragged = this.isRenameParent = this.isRightClick = false;
8633
+ this.treeObj.selectedNodes = [node.getAttribute('data-uid')];
8634
+ }
8612
8635
  }
8613
8636
  onNodeSelected(args) {
8614
8637
  if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {
8615
8638
  this.parent.breadcrumbbarModule.searchObj.element.value = '';
8616
8639
  this.parent.isFiltered = false;
8640
+ this.isNodeClickCalled = false;
8617
8641
  }
8618
8642
  this.parent.searchedItems = [];
8619
- if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {
8643
+ if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {
8620
8644
  this.parent.pathId = getPathId(args.node);
8621
8645
  return;
8622
8646
  }
@@ -8627,7 +8651,8 @@ class NavigationPane {
8627
8651
  this.parent.selectedItems = [];
8628
8652
  this.parent.itemData = nodeData;
8629
8653
  const previousPath = this.parent.path;
8630
- if (!this.isRightClick) {
8654
+ const sNode = select('[data-uid="' + this.treeObj.selectedNodes[0] + '"]', this.treeObj.element);
8655
+ if (!this.isRightClick && this.isSameNodeClicked && sNode.querySelector('.e-list-text').innerHTML !== this.parent.pathNames[this.parent.pathNames.length - 1]) {
8631
8656
  updatePath(args.node, this.parent.itemData[0], this.parent);
8632
8657
  }
8633
8658
  else {
@@ -8639,12 +8664,13 @@ class NavigationPane {
8639
8664
  if (args.node.querySelector('.' + ICONS) && args.node.querySelector('.' + LIST_ITEM) === null) {
8640
8665
  this.expandNodeTarget = 'add';
8641
8666
  }
8642
- if (!this.isRightClick) {
8667
+ if (!this.isRightClick && this.isSameNodeClicked) {
8643
8668
  read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);
8669
+ this.isNodeClickCalled = true;
8644
8670
  }
8645
8671
  this.parent.visitedItem = args.node;
8646
8672
  }
8647
- this.isPathDragged = this.isRenameParent = this.isRightClick = false;
8673
+ this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;
8648
8674
  }
8649
8675
  /* istanbul ignore next */
8650
8676
  // eslint-disable-next-line
@@ -8688,6 +8714,14 @@ class NavigationPane {
8688
8714
  const layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';
8689
8715
  this.parent.notify(modelChanged, { module: layout, newProp: { selectedItems: [] } });
8690
8716
  }
8717
+ else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled) {
8718
+ if (args.event.which === 3) {
8719
+ this.isRightClick = true;
8720
+ }
8721
+ this.isSameNodeClicked = true;
8722
+ this.isNodeClickCalled = true;
8723
+ this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];
8724
+ }
8691
8725
  }
8692
8726
  /* istanbul ignore next */
8693
8727
  onNodeEditing(args) {
@@ -9515,7 +9549,17 @@ class DetailsView {
9515
9549
  else {
9516
9550
  const sizeValue = getValue('size', args.data);
9517
9551
  const intl = new Internationalization(this.parent.locale);
9518
- const value = intl.formatNumber((sizeValue / 1024), { format: 'n' });
9552
+ let sizeFormat;
9553
+ const columns = this.parent.detailsViewSettings.columns;
9554
+ for (let i = 0; i < columns.length; i++) {
9555
+ if (columns[i].field === 'size') {
9556
+ sizeFormat = columns[i].format.toString();
9557
+ break;
9558
+ }
9559
+ }
9560
+ let value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });
9561
+ let num = Number(value.replace(/,/g, ''));
9562
+ value = num.toLocaleString(intl.culture);
9519
9563
  modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');
9520
9564
  }
9521
9565
  sizeEle.innerHTML = modifiedSize;