@syncfusion/ej2-filemanager 19.3.55 → 19.4.47

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 (58) hide show
  1. package/CHANGELOG.md +20 -3
  2. package/README.md +1 -1
  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 +80 -18
  6. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  7. package/dist/es6/ej2-filemanager.es5.js +80 -18
  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 +15 -15
  13. package/src/file-manager/actions/breadcrumb-bar.js +1 -1
  14. package/src/file-manager/base/file-manager-model.d.ts +1 -1
  15. package/src/file-manager/base/file-manager.d.ts +1 -0
  16. package/src/file-manager/base/file-manager.js +6 -1
  17. package/src/file-manager/base/interface.d.ts +2 -0
  18. package/src/file-manager/common/utility.js +9 -2
  19. package/src/file-manager/layout/large-icons-view.d.ts +1 -1
  20. package/src/file-manager/layout/navigation-pane.d.ts +5 -0
  21. package/src/file-manager/layout/navigation-pane.js +47 -5
  22. package/src/file-manager/models/search-settings-model.d.ts +8 -0
  23. package/src/file-manager/models/search-settings.d.ts +7 -0
  24. package/src/file-manager/models/search-settings.js +3 -0
  25. package/src/file-manager/pop-up/context-menu.d.ts +1 -0
  26. package/src/file-manager/pop-up/context-menu.js +14 -9
  27. package/styles/bootstrap-dark.css +2 -2
  28. package/styles/bootstrap.css +1 -1
  29. package/styles/bootstrap4.css +2 -2
  30. package/styles/bootstrap5-dark.css +8 -3
  31. package/styles/bootstrap5.css +8 -3
  32. package/styles/fabric-dark.css +3 -3
  33. package/styles/fabric.css +4 -4
  34. package/styles/file-manager/_bootstrap-dark-definition.scss +1 -1
  35. package/styles/file-manager/_bootstrap-definition.scss +1 -1
  36. package/styles/file-manager/_bootstrap4-definition.scss +1 -1
  37. package/styles/file-manager/_fabric-dark-definition.scss +2 -2
  38. package/styles/file-manager/_fabric-definition.scss +3 -3
  39. package/styles/file-manager/_fluent-definition.scss +245 -0
  40. package/styles/file-manager/_layout.scss +29 -5
  41. package/styles/file-manager/_material-definition.scss +1 -1
  42. package/styles/file-manager/_tailwind-definition.scss +2 -2
  43. package/styles/file-manager/bootstrap-dark.css +2 -2
  44. package/styles/file-manager/bootstrap.css +1 -1
  45. package/styles/file-manager/bootstrap4.css +2 -2
  46. package/styles/file-manager/bootstrap5-dark.css +8 -3
  47. package/styles/file-manager/bootstrap5.css +8 -3
  48. package/styles/file-manager/fabric-dark.css +3 -3
  49. package/styles/file-manager/fabric.css +4 -4
  50. package/styles/file-manager/icons/_fluent.scss +235 -0
  51. package/styles/file-manager/material-dark.css +6 -0
  52. package/styles/file-manager/material.css +7 -1
  53. package/styles/file-manager/tailwind-dark.css +4 -4
  54. package/styles/file-manager/tailwind.css +4 -4
  55. package/styles/material-dark.css +6 -0
  56. package/styles/material.css +7 -1
  57. package/styles/tailwind-dark.css +4 -4
  58. package/styles/tailwind.css +4 -4
@@ -1,4 +1,4 @@
1
- import { Ajax, Browser, ChildProperty, Complex, Component, Draggable, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, Touch, addClass, closest, createElement, detach, extend, formatUnit, getValue, isNullOrUndefined, isVisible, matches, remove, removeClass, select, selectAll, setStyleAttribute, setValue } from '@syncfusion/ej2-base';
1
+ import { Ajax, Browser, ChildProperty, Complex, Component, Draggable, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, Touch, addClass, closest, createElement, detach, extend, formatUnit, getUniqueID, getValue, isNullOrUndefined, isVisible, matches, remove, removeClass, select, selectAll, setStyleAttribute, setValue } from '@syncfusion/ej2-base';
2
2
  import { Splitter } from '@syncfusion/ej2-layouts';
3
3
  import { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';
4
4
  import { DataManager, Query } from '@syncfusion/ej2-data';
@@ -73,6 +73,9 @@ __decorate$2([
73
73
  __decorate$2([
74
74
  Property(true)
75
75
  ], SearchSettings.prototype, "ignoreCase", void 0);
76
+ __decorate$2([
77
+ Property(null)
78
+ ], SearchSettings.prototype, "placeholder", void 0);
76
79
 
77
80
  var __decorate$3 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
78
81
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -872,7 +875,13 @@ function searchWordHandler(parent, value, isLayoutChange) {
872
875
  }
873
876
  else {
874
877
  if (!parent.isFiltered) {
875
- read(parent, isLayoutChange ? layoutChange : search, parent.path);
878
+ if (parent.isSortByClicked) {
879
+ parent.notify(layoutChange, { files: parent.largeiconsviewModule.items });
880
+ parent.isSortByClicked = false;
881
+ }
882
+ else {
883
+ read(parent, isLayoutChange ? layoutChange : search, parent.path);
884
+ }
876
885
  }
877
886
  else {
878
887
  filter(parent, layoutChange);
@@ -1053,7 +1062,7 @@ function fileType(file) {
1053
1062
  function getImageUrl(parent, item) {
1054
1063
  const baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;
1055
1064
  let imgUrl;
1056
- const fileName = getValue('name', item);
1065
+ const fileName = encodeURIComponent(getValue('name', item));
1057
1066
  const fPath = getValue('filterPath', item);
1058
1067
  if (parent.hasId) {
1059
1068
  const imgId = getValue('id', item);
@@ -1283,6 +1292,7 @@ function getCssClass(parent, css) {
1283
1292
  */
1284
1293
  function sortbyClickHandler(parent, args) {
1285
1294
  let tick;
1295
+ parent.isSortByClicked = true;
1286
1296
  if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {
1287
1297
  tick = true;
1288
1298
  }
@@ -5630,7 +5640,7 @@ class BreadCrumbBar {
5630
5640
  }
5631
5641
  }
5632
5642
  onSearchTextChange(args) {
5633
- this.searchObj.element.placeholder = getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;
5643
+ this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;
5634
5644
  }
5635
5645
  }
5636
5646
 
@@ -5698,16 +5708,13 @@ class ContextMenu$2 {
5698
5708
  let data;
5699
5709
  let treeFolder = false;
5700
5710
  let target = args.event.target;
5701
- this.menuTarget = target;
5711
+ this.menuTarget = this.targetNodeElement = target;
5702
5712
  this.currentElement = args.element;
5703
5713
  if (target.classList.contains('e-spinner-pane')) {
5704
5714
  target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(FULLROW)[0];
5705
- this.menuTarget = target;
5715
+ this.menuTarget = this.targetNodeElement = target;
5706
5716
  }
5707
- if (target.classList.contains(FULLROW)) {
5708
- this.parent.selectedItems.length = 0;
5709
- }
5710
- this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr') : target;
5717
+ this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;
5711
5718
  const view = this.getTargetView(target);
5712
5719
  this.updateActiveModule();
5713
5720
  /* istanbul ignore next */
@@ -5739,7 +5746,7 @@ class ContextMenu$2 {
5739
5746
  data = this.parent.visitedData;
5740
5747
  selected = true;
5741
5748
  }
5742
- else if (!isNullOrUndefined(closest(target, 'tr'))) {
5749
+ else if (!isNullOrUndefined(closest(target, 'tr.e-row'))) {
5743
5750
  uid = this.targetElement.getAttribute('data-uid');
5744
5751
  // eslint-disable-next-line
5745
5752
  data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;
@@ -5816,7 +5823,7 @@ class ContextMenu$2 {
5816
5823
  this.enableItems(this.disabledItems, false, true);
5817
5824
  args.cancel = menuOpenArgs.cancel;
5818
5825
  if (menuOpenArgs.cancel) {
5819
- this.menuTarget = this.currentElement = null;
5826
+ this.menuTarget = this.targetNodeElement = this.currentElement = null;
5820
5827
  }
5821
5828
  });
5822
5829
  }
@@ -5935,7 +5942,12 @@ class ContextMenu$2 {
5935
5942
  }
5936
5943
  else {
5937
5944
  this.parent.notify(selectedData, {});
5938
- details = this.parent.itemData;
5945
+ if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {
5946
+ details = [this.menuItemData];
5947
+ }
5948
+ else {
5949
+ details = this.parent.itemData;
5950
+ }
5939
5951
  }
5940
5952
  const eventArgs = {
5941
5953
  cancel: false,
@@ -6012,6 +6024,9 @@ class ContextMenu$2 {
6012
6024
  if (this.parent.visitedItem) {
6013
6025
  this.parent.notify(openInit, { target: this.parent.visitedItem });
6014
6026
  }
6027
+ else if (this.parent.activeModule === 'navigationpane') {
6028
+ this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(this.targetNodeElement, 'li'));
6029
+ }
6015
6030
  break;
6016
6031
  case 'details':
6017
6032
  this.parent.notify(detailsInit, {});
@@ -6369,6 +6384,8 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6369
6384
  this.folderPath = '';
6370
6385
  this.isSameAction = false;
6371
6386
  this.isFiltered = false;
6387
+ // Specifies whether the sort by option is clicked or not.
6388
+ this.isSortByClicked = false;
6372
6389
  this.enablePaste = false;
6373
6390
  this.persistData = false;
6374
6391
  this.retryArgs = [];
@@ -6410,6 +6427,9 @@ let FileManager = FileManager_1 = class FileManager extends Component {
6410
6427
  * @returns {void}
6411
6428
  */
6412
6429
  preRender() {
6430
+ if (isNullOrUndefined(this.element.id) || this.element.id === '') {
6431
+ this.element.setAttribute('id', getUniqueID('filemanager'));
6432
+ }
6413
6433
  this.ensurePath();
6414
6434
  this.feParent = [];
6415
6435
  this.feFiles = [];
@@ -8045,6 +8065,12 @@ class NavigationPane {
8045
8065
  this.isRenameParent = false;
8046
8066
  this.isRightClick = false;
8047
8067
  this.renameParent = null;
8068
+ // Specifies the previously selected nodes in the treeview control.
8069
+ this.previousSelected = null;
8070
+ // Specifies whether the nodeClicked event of the treeview control is triggered or not.
8071
+ this.isNodeClickCalled = false;
8072
+ // Specifies whether to restrict node selection in the treeview control.
8073
+ this.restrictSelecting = false;
8048
8074
  this.parent = parent;
8049
8075
  this.addEventListener();
8050
8076
  this.keyConfigs = {
@@ -8084,6 +8110,7 @@ class NavigationPane {
8084
8110
  hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'
8085
8111
  },
8086
8112
  enableHtmlSanitizer: this.parent.enableHtmlSanitizer,
8113
+ nodeSelecting: this.onNodeSelecting.bind(this),
8087
8114
  nodeSelected: this.onNodeSelected.bind(this),
8088
8115
  nodeExpanding: this.onNodeExpand.bind(this),
8089
8116
  nodeClicked: this.onNodeClicked.bind(this),
@@ -8188,6 +8215,44 @@ class NavigationPane {
8188
8215
  this.treeObj.addNodes(directories, target, null, prevent);
8189
8216
  }
8190
8217
  }
8218
+ // Node Selecting event handler
8219
+ onNodeSelecting(args) {
8220
+ if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {
8221
+ this.restrictSelecting = false;
8222
+ this.isNodeClickCalled = false;
8223
+ return;
8224
+ }
8225
+ if (!this.renameParent) {
8226
+ this.parent.activeModule = 'navigationpane';
8227
+ // eslint-disable-next-line
8228
+ const nodeData = this.getTreeData(getValue('id', args.nodeData));
8229
+ const eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
8230
+ this.parent.trigger('fileOpen', eventArgs);
8231
+ args.cancel = eventArgs.cancel;
8232
+ if (args.cancel) {
8233
+ this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] != args.node.getAttribute('data-uid') : false;
8234
+ this.treeObj.selectedNodes = this.isNodeClickCalled ? this.previousSelected : this.treeObj.selectedNodes;
8235
+ this.previousSelected = this.treeObj.selectedNodes;
8236
+ if (!isNullOrUndefined(this.parent) && !isNullOrUndefined(this.parent.contextmenuModule)) {
8237
+ this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);
8238
+ }
8239
+ }
8240
+ }
8241
+ }
8242
+ // Opens the folder while clicking open context menu item in the treeview.
8243
+ openFileOnContextMenuClick(node) {
8244
+ const data = this.treeObj.getTreeData(node);
8245
+ // eslint-disable-next-line
8246
+ this.parent.selectedItems = [];
8247
+ this.parent.itemData = data;
8248
+ this.activeNode = node;
8249
+ this.parent.activeModule = 'navigationpane';
8250
+ updatePath(node, this.parent.itemData[0], this.parent);
8251
+ read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);
8252
+ this.parent.visitedItem = node;
8253
+ this.isPathDragged = this.isRenameParent = this.isRightClick = false;
8254
+ this.treeObj.selectedNodes = [node.getAttribute('data-uid')];
8255
+ }
8191
8256
  onNodeSelected(args) {
8192
8257
  if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {
8193
8258
  this.parent.breadcrumbbarModule.searchObj.element.value = '';
@@ -8201,11 +8266,6 @@ class NavigationPane {
8201
8266
  this.parent.activeModule = 'navigationpane';
8202
8267
  // eslint-disable-next-line
8203
8268
  const nodeData = this.getTreeData(getValue('id', args.nodeData));
8204
- if (!this.renameParent) {
8205
- const eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
8206
- delete eventArgs.cancel;
8207
- this.parent.trigger('fileOpen', eventArgs);
8208
- }
8209
8269
  this.parent.selectedItems = [];
8210
8270
  this.parent.itemData = nodeData;
8211
8271
  updatePath(args.node, this.parent.itemData[0], this.parent);
@@ -8247,9 +8307,11 @@ class NavigationPane {
8247
8307
  }
8248
8308
  onNodeClicked(args) {
8249
8309
  this.parent.activeModule = 'navigationpane';
8310
+ this.previousSelected = this.treeObj.selectedNodes;
8250
8311
  this.activeNode = args.node;
8251
8312
  if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {
8252
8313
  this.isRightClick = true;
8314
+ this.isNodeClickCalled = true;
8253
8315
  this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];
8254
8316
  }
8255
8317
  else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {