@syncfusion/ej2-filemanager 21.1.35 → 21.1.39

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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 21.1.35
3
+ * version : 21.1.39
4
4
  * Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-filemanager@*",
3
- "_id": "@syncfusion/ej2-filemanager@18.20.1",
3
+ "_id": "@syncfusion/ej2-filemanager@21.1.37",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-aWF002IK3S7gXmugPv1V7vnx88KCzVk1ndOj7yJyj8cu11Q/4Lk4B8azq2R8+1Mlyra1qHCFRFoS+RB38D6oIg==",
5
+ "_integrity": "sha512-qIZ+ACsxbmH7pk4hUbOjqSBaa2pTpdhknvGSIXfsyVXA5S5wgWACAGQqyUu52UEHDgNuM3cDpVjAiHeHY8nBJw==",
6
6
  "_location": "/@syncfusion/ej2-filemanager",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -25,8 +25,8 @@
25
25
  "/@syncfusion/ej2-richtexteditor",
26
26
  "/@syncfusion/ej2-vue-filemanager"
27
27
  ],
28
- "_resolved": "https://nexus.syncfusion.com/repository/ej2-release/@syncfusion/ej2-filemanager/-/ej2-filemanager-18.20.1.tgz",
29
- "_shasum": "6115759f03937e73d38d4967b9e9ce8507850442",
28
+ "_resolved": "https://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-filemanager/-/ej2-filemanager-21.1.37.tgz",
29
+ "_shasum": "e9ac521b654f440cfe8dc0b83e465cc564bf44b3",
30
30
  "_spec": "@syncfusion/ej2-filemanager@*",
31
31
  "_where": "/jenkins/workspace/elease-automation_release_21.1.1/packages/included",
32
32
  "author": {
@@ -37,16 +37,16 @@
37
37
  },
38
38
  "bundleDependencies": false,
39
39
  "dependencies": {
40
- "@syncfusion/ej2-base": "~21.1.35",
41
- "@syncfusion/ej2-buttons": "~21.1.35",
42
- "@syncfusion/ej2-data": "~21.1.35",
43
- "@syncfusion/ej2-grids": "~21.1.35",
44
- "@syncfusion/ej2-inputs": "~21.1.35",
45
- "@syncfusion/ej2-layouts": "~21.1.35",
46
- "@syncfusion/ej2-lists": "~21.1.35",
47
- "@syncfusion/ej2-navigations": "~21.1.35",
48
- "@syncfusion/ej2-popups": "~21.1.35",
49
- "@syncfusion/ej2-splitbuttons": "~21.1.35"
40
+ "@syncfusion/ej2-base": "~21.1.39",
41
+ "@syncfusion/ej2-buttons": "~21.1.37",
42
+ "@syncfusion/ej2-data": "~21.1.38",
43
+ "@syncfusion/ej2-grids": "~21.1.39",
44
+ "@syncfusion/ej2-inputs": "~21.1.39",
45
+ "@syncfusion/ej2-layouts": "~21.1.37",
46
+ "@syncfusion/ej2-lists": "~21.1.39",
47
+ "@syncfusion/ej2-navigations": "~21.1.39",
48
+ "@syncfusion/ej2-popups": "~21.1.37",
49
+ "@syncfusion/ej2-splitbuttons": "~21.1.37"
50
50
  },
51
51
  "deprecated": false,
52
52
  "description": "Essential JS 2 FileManager Component",
@@ -76,6 +76,6 @@
76
76
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
77
77
  },
78
78
  "typings": "index.d.ts",
79
- "version": "21.1.35",
79
+ "version": "21.1.39",
80
80
  "sideEffects": false
81
81
  }
@@ -231,7 +231,12 @@ var Toolbar = /** @class */ (function () {
231
231
  items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';
232
232
  }
233
233
  else if (items[itemCount].id === this.getPupupId('date')) {
234
- items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';
234
+ if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {
235
+ items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';
236
+ }
237
+ else {
238
+ items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';
239
+ }
235
240
  }
236
241
  else if (items[itemCount].id === this.getPupupId('ascending')) {
237
242
  items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';
@@ -2,6 +2,7 @@ import { Component, EmitType, L10n } from '@syncfusion/ej2-base';
2
2
  import { Dialog, ButtonPropsModel } from '@syncfusion/ej2-popups';
3
3
  import { FileManagerModel } from '../base/file-manager-model';
4
4
  import { ToolbarSettingsModel, AjaxSettingsModel } from '../models/index';
5
+ import { DetailsViewSettingsModel } from '../models/details-view-settings-model';
5
6
  import { TreeView, ContextMenu, MenuItemModel, ItemModel } from '@syncfusion/ej2-navigations';
6
7
  import { DetailsView } from '../layout/details-view';
7
8
  import { Toolbar } from '../actions/toolbar';
@@ -638,6 +639,7 @@ export interface IFileManager extends Component<HTMLElement> {
638
639
  breadcrumbbarModule: BreadCrumbBar;
639
640
  virtualizationModule: Virtualization;
640
641
  toolbarSelection: boolean;
642
+ detailsViewSettings: DetailsViewSettingsModel;
641
643
  duplicateItems: string[];
642
644
  duplicateRecords: Object[];
643
645
  fileAction: string;
@@ -2,7 +2,7 @@ import { Ajax, createElement, select, extend } from '@syncfusion/ej2-base';
2
2
  import { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';
3
3
  import * as events from '../base/constant';
4
4
  import { createDialog, createExtDialog } from '../pop-up/dialog';
5
- import { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getParentPath, getPathObject } from '../common/utility';
5
+ import { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';
6
6
  import { generatePath } from '../common/utility';
7
7
  /**
8
8
  * Function to read the content from given path in File Manager.
@@ -415,10 +415,15 @@ function renameSuccess(parent, result, path) {
415
415
  var args = { action: 'rename', result: result };
416
416
  parent.trigger('success', args);
417
417
  parent.renamedItem = result.files[0];
418
+ if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {
419
+ parent.pathNames[parent.pathNames.length - 1] = parent.renameText;
420
+ }
418
421
  if (parent.activeModule === 'navigationpane') {
419
422
  parent.pathId.pop();
420
423
  parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];
421
- read(parent, events.renameEndParent, getParentPath(parent.path));
424
+ read(parent, events.renameEndParent, getValue('filterPath', parent.renamedItem).replace(/\\/g, '/'));
425
+ parent.itemData[0] = parent.renamedItem;
426
+ read(parent, events.pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\/g, '/') + parent.renamedItem.name + '/');
422
427
  }
423
428
  else {
424
429
  parent.itemData = [getPathObject(parent)];
@@ -293,7 +293,7 @@ export declare function sortbyClickHandler(parent: IFileManager, args: MenuEvent
293
293
  * @returns {string} - returns the sorted fields
294
294
  * @private
295
295
  */
296
- export declare function getSortField(id: string): string;
296
+ export declare function getSortField(id: string, parent?: IFileManager): string;
297
297
  /**
298
298
  * Sets the next path
299
299
  *
@@ -694,7 +694,7 @@ export function sortbyClickHandler(parent, args) {
694
694
  tick = false;
695
695
  }
696
696
  if (!tick) {
697
- parent.sortBy = getSortField(args.item.id);
697
+ parent.sortBy = getSortField(args.item.id, parent);
698
698
  }
699
699
  else {
700
700
  parent.sortOrder = getSortField(args.item.id);
@@ -721,12 +721,24 @@ export function sortbyClickHandler(parent, args) {
721
721
  * @returns {string} - returns the sorted fields
722
722
  * @private
723
723
  */
724
- export function getSortField(id) {
724
+ export function getSortField(id, parent) {
725
725
  var text = id.substring(id.lastIndexOf('_') + 1);
726
726
  var field = text;
727
+ var column;
728
+ if (parent) {
729
+ column = parent.detailsViewSettings.columns;
730
+ }
727
731
  switch (text) {
728
732
  case 'date':
729
- field = '_fm_modified';
733
+ for (var i = 0, len = column.length; i < len; i++) {
734
+ if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {
735
+ field = column[i].field;
736
+ break;
737
+ }
738
+ else {
739
+ field = '_fm_modified';
740
+ }
741
+ }
730
742
  break;
731
743
  case 'ascending':
732
744
  field = 'Ascending';
@@ -20,6 +20,8 @@ export declare class NavigationPane {
20
20
  private isPathDragged;
21
21
  private isRenameParent;
22
22
  private isRightClick;
23
+ private isSameNodeClicked;
24
+ private isNodeExpandCalled;
23
25
  private renameParent;
24
26
  private previousSelected;
25
27
  private isNodeClickCalled;
@@ -29,6 +29,8 @@ var NavigationPane = /** @class */ (function () {
29
29
  this.isPathDragged = false;
30
30
  this.isRenameParent = false;
31
31
  this.isRightClick = false;
32
+ this.isSameNodeClicked = false;
33
+ this.isNodeExpandCalled = false;
32
34
  this.renameParent = null;
33
35
  // Specifies the previously selected nodes in the treeview control.
34
36
  this.previousSelected = null;
@@ -184,7 +186,7 @@ var NavigationPane = /** @class */ (function () {
184
186
  };
185
187
  // Node Selecting event handler
186
188
  NavigationPane.prototype.onNodeSelecting = function (args) {
187
- if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {
189
+ if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {
188
190
  this.restrictSelecting = false;
189
191
  this.isNodeClickCalled = false;
190
192
  return;
@@ -193,18 +195,29 @@ var NavigationPane = /** @class */ (function () {
193
195
  this.parent.activeModule = 'navigationpane';
194
196
  // eslint-disable-next-line
195
197
  var nodeData = this.getTreeData(getValue('id', args.nodeData));
196
- var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
197
- this.parent.trigger('fileOpen', eventArgs);
198
- var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };
199
- this.parent.trigger('fileSelect', selecEventArgs);
200
- args.cancel = eventArgs.cancel;
201
- if (args.cancel) {
202
- this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;
203
- this.previousSelected = this.treeObj.selectedNodes;
204
- this.treeObj.selectedNodes = [args.node.getAttribute("data-uid")];
205
- if (!isNOU(this.parent) && !isNOU(this.parent.contextmenuModule)) {
206
- this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);
198
+ if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {
199
+ this.isNodeClickCalled = false;
200
+ if (!this.isSameNodeClicked) {
201
+ this.isSameNodeClicked = true;
202
+ var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };
203
+ this.parent.trigger('fileSelect', selecEventArgs);
207
204
  }
205
+ if (!this.isRightClick && args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1]) {
206
+ var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
207
+ this.parent.trigger('fileOpen', eventArgs);
208
+ args.cancel = eventArgs.cancel;
209
+ }
210
+ if (args.cancel) {
211
+ this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;
212
+ this.isNodeClickCalled = true;
213
+ this.isSameNodeClicked = false;
214
+ this.previousSelected = this.treeObj.selectedNodes;
215
+ this.treeObj.selectedNodes = [args.node.getAttribute("data-uid")];
216
+ }
217
+ }
218
+ else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {
219
+ var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };
220
+ this.parent.trigger('fileSelect', selecEventArgs);
208
221
  }
209
222
  }
210
223
  };
@@ -216,19 +229,25 @@ var NavigationPane = /** @class */ (function () {
216
229
  this.parent.itemData = data;
217
230
  this.activeNode = node;
218
231
  this.parent.activeModule = 'navigationpane';
219
- updatePath(node, this.parent.itemData[0], this.parent);
220
- read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);
221
- this.parent.visitedItem = node;
222
- this.isPathDragged = this.isRenameParent = this.isRightClick = false;
223
- this.treeObj.selectedNodes = [node.getAttribute('data-uid')];
232
+ var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };
233
+ this.parent.trigger('fileOpen', eventArgs);
234
+ this.isNodeClickCalled = true;
235
+ if (!eventArgs.cancel) {
236
+ updatePath(node, this.parent.itemData[0], this.parent);
237
+ read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);
238
+ this.parent.visitedItem = node;
239
+ this.isPathDragged = this.isRenameParent = this.isRightClick = false;
240
+ this.treeObj.selectedNodes = [node.getAttribute('data-uid')];
241
+ }
224
242
  };
225
243
  NavigationPane.prototype.onNodeSelected = function (args) {
226
244
  if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {
227
245
  this.parent.breadcrumbbarModule.searchObj.element.value = '';
228
246
  this.parent.isFiltered = false;
247
+ this.isNodeClickCalled = false;
229
248
  }
230
249
  this.parent.searchedItems = [];
231
- if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {
250
+ if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {
232
251
  this.parent.pathId = getPathId(args.node);
233
252
  return;
234
253
  }
@@ -239,7 +258,8 @@ var NavigationPane = /** @class */ (function () {
239
258
  this.parent.selectedItems = [];
240
259
  this.parent.itemData = nodeData;
241
260
  var previousPath = this.parent.path;
242
- if (!this.isRightClick) {
261
+ var sNode = select('[data-uid="' + this.treeObj.selectedNodes[0] + '"]', this.treeObj.element);
262
+ if (!this.isRightClick && this.isSameNodeClicked && sNode.querySelector('.e-list-text').innerHTML !== this.parent.pathNames[this.parent.pathNames.length - 1]) {
243
263
  updatePath(args.node, this.parent.itemData[0], this.parent);
244
264
  }
245
265
  else {
@@ -251,12 +271,13 @@ var NavigationPane = /** @class */ (function () {
251
271
  if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {
252
272
  this.expandNodeTarget = 'add';
253
273
  }
254
- if (!this.isRightClick) {
274
+ if (!this.isRightClick && this.isSameNodeClicked) {
255
275
  read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);
276
+ this.isNodeClickCalled = true;
256
277
  }
257
278
  this.parent.visitedItem = args.node;
258
279
  }
259
- this.isPathDragged = this.isRenameParent = this.isRightClick = false;
280
+ this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;
260
281
  };
261
282
  /* istanbul ignore next */
262
283
  // eslint-disable-next-line
@@ -279,12 +300,14 @@ var NavigationPane = /** @class */ (function () {
279
300
  this.parent.expandedId = this.expandNodeTarget;
280
301
  this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));
281
302
  read(this.parent, events.nodeExpand, path);
303
+ this.isNodeExpandCalled = true;
282
304
  }
283
305
  };
284
306
  /* istanbul ignore next */
285
307
  NavigationPane.prototype.onNodeExpanded = function (args) {
286
308
  this.addChild(args.files, this.expandNodeTarget, false);
287
309
  this.parent.expandedId = null;
310
+ this.isNodeExpandCalled = false;
288
311
  };
289
312
  NavigationPane.prototype.onNodeClicked = function (args) {
290
313
  this.parent.activeModule = 'navigationpane';
@@ -300,6 +323,14 @@ var NavigationPane = /** @class */ (function () {
300
323
  var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';
301
324
  this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });
302
325
  }
326
+ else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {
327
+ if (args.event.which === 3) {
328
+ this.isRightClick = true;
329
+ }
330
+ this.isSameNodeClicked = true;
331
+ this.isNodeClickCalled = true;
332
+ this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];
333
+ }
303
334
  };
304
335
  /* istanbul ignore next */
305
336
  NavigationPane.prototype.onNodeEditing = function (args) {
@@ -243,10 +243,11 @@ var ContextMenu = /** @class */ (function () {
243
243
  this.menuType = 'folder';
244
244
  this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));
245
245
  this.contextMenu.dataBind();
246
- if (isTree) {
246
+ var selectedTreeNode = select('[data-uid="' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '"]', this.parent.navigationpaneModule.treeObj.element);
247
+ if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {
247
248
  this.disabledItems.push('Open');
248
249
  }
249
- else if (this.parent.selectedItems.length !== 1) {
250
+ else if (this.parent.selectedItems.length !== 1 && this.parent.activeModule !== 'navigationpane') {
250
251
  this.disabledItems.push('Rename', 'Paste');
251
252
  }
252
253
  };
@@ -390,10 +391,13 @@ var ContextMenu = /** @class */ (function () {
390
391
  refresh(_this.parent);
391
392
  break;
392
393
  case 'open':
393
- if (_this.parent.visitedItem) {
394
+ if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {
394
395
  _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });
395
396
  }
396
397
  else if (_this.parent.activeModule === 'navigationpane') {
398
+ if (_this.parent.visitedItem) {
399
+ _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });
400
+ }
397
401
  _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));
398
402
  }
399
403
  break;
@@ -5,7 +5,7 @@ import { createFolder } from '../common/operations';
5
5
  import * as CLS from '../base/classes';
6
6
  import * as events from '../base/constant';
7
7
  import { paste, rename } from '../common/operations';
8
- import { getLocaleText, getDuplicateData, getParentPath, objectToString, getCssClass } from '../common/utility';
8
+ import { getLocaleText, getDuplicateData, objectToString, getCssClass } from '../common/utility';
9
9
  import { Input } from '@syncfusion/ej2-inputs';
10
10
  import { CheckBox } from '@syncfusion/ej2-buttons';
11
11
  // eslint:disable-next-line
@@ -840,7 +840,8 @@ function onReSubmit(parent) {
840
840
  parent.dialogObj.hide();
841
841
  return;
842
842
  }
843
- var newPath = (parent.activeModule === 'navigationpane') ? getParentPath(parent.path) : parent.path;
843
+ var newPath = (parent.activeModule === 'navigationpane') ? getValue('filterPath', parent.itemData[0]).replace(/\\/g, '/') : parent.path;
844
+ parent.renamedId = getValue('id', parent.itemData[0]);
844
845
  parent.renamedId = getValue('id', parent.itemData[0]);
845
846
  if (parent.isFile) {
846
847
  var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);