@syncfusion/ej2-filemanager 19.3.53 → 19.4.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 (61) hide show
  1. package/.eslintrc.json +244 -0
  2. package/CHANGELOG.md +17 -1
  3. package/README.md +1 -1
  4. package/dist/ej2-filemanager.umd.min.js +2 -2
  5. package/dist/ej2-filemanager.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-filemanager.es2015.js +74 -18
  7. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  8. package/dist/es6/ej2-filemanager.es5.js +74 -18
  9. package/dist/es6/ej2-filemanager.es5.js.map +1 -1
  10. package/dist/global/ej2-filemanager.min.js +2 -2
  11. package/dist/global/ej2-filemanager.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/package.json +15 -15
  14. package/src/file-manager/actions/breadcrumb-bar.js +1 -1
  15. package/src/file-manager/base/file-manager-model.d.ts +1 -1
  16. package/src/file-manager/base/file-manager.js +4 -1
  17. package/src/file-manager/base/interface.d.ts +1 -0
  18. package/src/file-manager/common/operations.js +1 -1
  19. package/src/file-manager/common/utility.js +2 -2
  20. package/src/file-manager/layout/details-view.js +1 -1
  21. package/src/file-manager/layout/navigation-pane.d.ts +5 -0
  22. package/src/file-manager/layout/navigation-pane.js +47 -5
  23. package/src/file-manager/models/default-locale.js +1 -1
  24. package/src/file-manager/models/search-settings-model.d.ts +8 -0
  25. package/src/file-manager/models/search-settings.d.ts +7 -0
  26. package/src/file-manager/models/search-settings.js +3 -0
  27. package/src/file-manager/pop-up/context-menu.d.ts +1 -0
  28. package/src/file-manager/pop-up/context-menu.js +14 -6
  29. package/styles/bootstrap-dark.css +2 -2
  30. package/styles/bootstrap.css +1 -1
  31. package/styles/bootstrap4.css +2 -2
  32. package/styles/bootstrap5-dark.css +8 -3
  33. package/styles/bootstrap5.css +8 -3
  34. package/styles/fabric-dark.css +3 -3
  35. package/styles/fabric.css +4 -4
  36. package/styles/file-manager/_bootstrap-dark-definition.scss +1 -1
  37. package/styles/file-manager/_bootstrap-definition.scss +1 -1
  38. package/styles/file-manager/_bootstrap4-definition.scss +1 -1
  39. package/styles/file-manager/_fabric-dark-definition.scss +2 -2
  40. package/styles/file-manager/_fabric-definition.scss +3 -3
  41. package/styles/file-manager/_fluent-definition.scss +245 -0
  42. package/styles/file-manager/_layout.scss +29 -5
  43. package/styles/file-manager/_material-definition.scss +1 -1
  44. package/styles/file-manager/_tailwind-definition.scss +2 -2
  45. package/styles/file-manager/bootstrap-dark.css +2 -2
  46. package/styles/file-manager/bootstrap.css +1 -1
  47. package/styles/file-manager/bootstrap4.css +2 -2
  48. package/styles/file-manager/bootstrap5-dark.css +8 -3
  49. package/styles/file-manager/bootstrap5.css +8 -3
  50. package/styles/file-manager/fabric-dark.css +3 -3
  51. package/styles/file-manager/fabric.css +4 -4
  52. package/styles/file-manager/icons/_fluent.scss +235 -0
  53. package/styles/file-manager/material-dark.css +6 -0
  54. package/styles/file-manager/material.css +7 -1
  55. package/styles/file-manager/tailwind-dark.css +4 -4
  56. package/styles/file-manager/tailwind.css +4 -4
  57. package/styles/material-dark.css +6 -0
  58. package/styles/material.css +7 -1
  59. package/styles/tailwind-dark.css +4 -4
  60. package/styles/tailwind.css +4 -4
  61. package/tslint.json +111 -0
@@ -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';
@@ -125,6 +125,9 @@ var SearchSettings = /** @__PURE__ @class */ (function (_super) {
125
125
  __decorate$2([
126
126
  Property(true)
127
127
  ], SearchSettings.prototype, "ignoreCase", void 0);
128
+ __decorate$2([
129
+ Property(null)
130
+ ], SearchSettings.prototype, "placeholder", void 0);
128
131
  return SearchSettings;
129
132
  }(ChildProperty));
130
133
 
@@ -1197,7 +1200,7 @@ function fileType(file) {
1197
1200
  function getImageUrl(parent, item) {
1198
1201
  var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;
1199
1202
  var imgUrl;
1200
- var fileName = getValue('name', item);
1203
+ var fileName = encodeURIComponent(getValue('name', item));
1201
1204
  var fPath = getValue('filterPath', item);
1202
1205
  if (parent.hasId) {
1203
1206
  var imgId = getValue('id', item);
@@ -1771,7 +1774,7 @@ function createVirtualDragElement(parent) {
1771
1774
  parent.dragNodes.push(parent.selectedItems[i]);
1772
1775
  i++;
1773
1776
  }
1774
- if (parent.selectedItems.length == 0 && parent.dragData && parent.dragData.length == 1) {
1777
+ if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {
1775
1778
  parent.dragNodes.push(getItemName(parent, parent.dragData[0]));
1776
1779
  }
1777
1780
  }
@@ -2289,7 +2292,7 @@ function filter(parent, event) {
2289
2292
  var filterData;
2290
2293
  // eslint-disable-next-line
2291
2294
  var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;
2292
- createAjax(parent, filterData, filterSuccess, event, getValue('action', filterDataVal));
2295
+ createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));
2293
2296
  }
2294
2297
  /**
2295
2298
  * Function to rename the folder/file in File Manager.
@@ -5783,7 +5786,7 @@ var BreadCrumbBar = /** @__PURE__ @class */ (function () {
5783
5786
  }
5784
5787
  };
5785
5788
  BreadCrumbBar.prototype.onSearchTextChange = function (args) {
5786
- this.searchObj.element.placeholder = getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;
5789
+ this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + args.cwd.name;
5787
5790
  };
5788
5791
  return BreadCrumbBar;
5789
5792
  }());
@@ -5853,16 +5856,16 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
5853
5856
  var data;
5854
5857
  var treeFolder = false;
5855
5858
  var target = args.event.target;
5856
- this.menuTarget = target;
5859
+ this.menuTarget = this.targetNodeElement = target;
5857
5860
  this.currentElement = args.element;
5858
5861
  if (target.classList.contains('e-spinner-pane')) {
5859
5862
  target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(FULLROW)[0];
5860
- this.menuTarget = target;
5863
+ this.menuTarget = this.targetNodeElement = target;
5861
5864
  }
5862
5865
  if (target.classList.contains(FULLROW)) {
5863
5866
  this.parent.selectedItems.length = 0;
5864
5867
  }
5865
- this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr') : target;
5868
+ this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;
5866
5869
  var view = this.getTargetView(target);
5867
5870
  this.updateActiveModule();
5868
5871
  /* istanbul ignore next */
@@ -5894,7 +5897,7 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
5894
5897
  data = this.parent.visitedData;
5895
5898
  selected = true;
5896
5899
  }
5897
- else if (!isNullOrUndefined(closest(target, 'tr'))) {
5900
+ else if (!isNullOrUndefined(closest(target, 'tr.e-row'))) {
5898
5901
  uid = this.targetElement.getAttribute('data-uid');
5899
5902
  // eslint-disable-next-line
5900
5903
  data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;
@@ -5971,7 +5974,7 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
5971
5974
  _this.enableItems(_this.disabledItems, false, true);
5972
5975
  args.cancel = menuOpenArgs.cancel;
5973
5976
  if (menuOpenArgs.cancel) {
5974
- _this.menuTarget = _this.currentElement = null;
5977
+ _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;
5975
5978
  }
5976
5979
  });
5977
5980
  };
@@ -6091,7 +6094,12 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
6091
6094
  }
6092
6095
  else {
6093
6096
  this.parent.notify(selectedData, {});
6094
- details = this.parent.itemData;
6097
+ if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {
6098
+ details = [this.menuItemData];
6099
+ }
6100
+ else {
6101
+ details = this.parent.itemData;
6102
+ }
6095
6103
  }
6096
6104
  var eventArgs = {
6097
6105
  cancel: false,
@@ -6168,6 +6176,9 @@ var ContextMenu$2 = /** @__PURE__ @class */ (function () {
6168
6176
  if (_this.parent.visitedItem) {
6169
6177
  _this.parent.notify(openInit, { target: _this.parent.visitedItem });
6170
6178
  }
6179
+ else if (_this.parent.activeModule === 'navigationpane') {
6180
+ _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));
6181
+ }
6171
6182
  break;
6172
6183
  case 'details':
6173
6184
  _this.parent.notify(detailsInit, {});
@@ -6468,7 +6479,7 @@ var defaultLocale = {
6468
6479
  'Filter-Empty': 'No results found',
6469
6480
  'Filter-Key': 'Try with different filter',
6470
6481
  'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',
6471
- "Same-Folder-Error": "The destination folder is the same as the source folder.",
6482
+ 'Same-Folder-Error': 'The destination folder is the same as the source folder.',
6472
6483
  'Access-Denied': 'Access Denied',
6473
6484
  'Access-Details': 'You don"t have permission to access this folder.',
6474
6485
  'Header-Retry': 'File Already Exists',
@@ -6583,6 +6594,9 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
6583
6594
  * @returns {void}
6584
6595
  */
6585
6596
  FileManager.prototype.preRender = function () {
6597
+ if (isNullOrUndefined(this.element.id) || this.element.id === '') {
6598
+ this.element.setAttribute('id', getUniqueID('filemanager'));
6599
+ }
6586
6600
  this.ensurePath();
6587
6601
  this.feParent = [];
6588
6602
  this.feFiles = [];
@@ -8229,6 +8243,12 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
8229
8243
  this.isRenameParent = false;
8230
8244
  this.isRightClick = false;
8231
8245
  this.renameParent = null;
8246
+ // Specifies the previously selected nodes in the treeview control.
8247
+ this.previousSelected = null;
8248
+ // Specifies whether the nodeClicked event of the treeview control is triggered or not.
8249
+ this.isNodeClickCalled = false;
8250
+ // Specifies whether to restrict node selection in the treeview control.
8251
+ this.restrictSelecting = false;
8232
8252
  this.parent = parent;
8233
8253
  this.addEventListener();
8234
8254
  this.keyConfigs = {
@@ -8268,6 +8288,7 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
8268
8288
  hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'
8269
8289
  },
8270
8290
  enableHtmlSanitizer: this.parent.enableHtmlSanitizer,
8291
+ nodeSelecting: this.onNodeSelecting.bind(this),
8271
8292
  nodeSelected: this.onNodeSelected.bind(this),
8272
8293
  nodeExpanding: this.onNodeExpand.bind(this),
8273
8294
  nodeClicked: this.onNodeClicked.bind(this),
@@ -8373,6 +8394,44 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
8373
8394
  this.treeObj.addNodes(directories, target, null, prevent);
8374
8395
  }
8375
8396
  };
8397
+ // Node Selecting event handler
8398
+ NavigationPane.prototype.onNodeSelecting = function (args) {
8399
+ if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {
8400
+ this.restrictSelecting = false;
8401
+ return;
8402
+ }
8403
+ if (!this.renameParent) {
8404
+ this.parent.activeModule = 'navigationpane';
8405
+ // eslint-disable-next-line
8406
+ var nodeData = this.getTreeData(getValue('id', args.nodeData));
8407
+ var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
8408
+ delete eventArgs.cancel;
8409
+ this.parent.trigger('fileOpen', eventArgs);
8410
+ args.cancel = eventArgs.cancel;
8411
+ if (args.cancel) {
8412
+ this.restrictSelecting = true;
8413
+ this.treeObj.selectedNodes = this.isNodeClickCalled ? this.previousSelected : this.treeObj.selectedNodes;
8414
+ this.isNodeClickCalled = false;
8415
+ if (!isNullOrUndefined(this.parent) && !isNullOrUndefined(this.parent.contextmenuModule)) {
8416
+ this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);
8417
+ }
8418
+ }
8419
+ }
8420
+ };
8421
+ // Opens the folder while clicking open context menu item in the treeview.
8422
+ NavigationPane.prototype.openFileOnContextMenuClick = function (node) {
8423
+ var data = this.treeObj.getTreeData(node);
8424
+ // eslint-disable-next-line
8425
+ this.parent.selectedItems = [];
8426
+ this.parent.itemData = data;
8427
+ this.activeNode = node;
8428
+ this.parent.activeModule = 'navigationpane';
8429
+ updatePath(node, this.parent.itemData[0], this.parent);
8430
+ read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);
8431
+ this.parent.visitedItem = node;
8432
+ this.isPathDragged = this.isRenameParent = this.isRightClick = false;
8433
+ this.treeObj.selectedNodes = [node.getAttribute('data-uid')];
8434
+ };
8376
8435
  NavigationPane.prototype.onNodeSelected = function (args) {
8377
8436
  if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {
8378
8437
  this.parent.breadcrumbbarModule.searchObj.element.value = '';
@@ -8386,11 +8445,6 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
8386
8445
  this.parent.activeModule = 'navigationpane';
8387
8446
  // eslint-disable-next-line
8388
8447
  var nodeData = this.getTreeData(getValue('id', args.nodeData));
8389
- if (!this.renameParent) {
8390
- var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
8391
- delete eventArgs.cancel;
8392
- this.parent.trigger('fileOpen', eventArgs);
8393
- }
8394
8448
  this.parent.selectedItems = [];
8395
8449
  this.parent.itemData = nodeData;
8396
8450
  updatePath(args.node, this.parent.itemData[0], this.parent);
@@ -8435,6 +8489,8 @@ var NavigationPane = /** @__PURE__ @class */ (function () {
8435
8489
  this.activeNode = args.node;
8436
8490
  if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {
8437
8491
  this.isRightClick = true;
8492
+ this.isNodeClickCalled = true;
8493
+ this.previousSelected = this.treeObj.selectedNodes;
8438
8494
  this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];
8439
8495
  }
8440
8496
  else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {
@@ -9875,7 +9931,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
9875
9931
  // eslint-disable-next-line
9876
9932
  this.parent.dragData = this.gridObj.getSelectedRecords();
9877
9933
  var dragRow;
9878
- if (this.parent.dragData.length == 0 && dragLi) {
9934
+ if (this.parent.dragData.length === 0 && dragLi) {
9879
9935
  dragRow = this.gridObj.getRowInfo(dragLi);
9880
9936
  }
9881
9937
  if (dragRow) {