@syncfusion/ej2-filemanager 19.4.38 → 19.4.48

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 : 19.4.38
3
+ * version : 19.4.48
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.6.2",
3
+ "_id": "@syncfusion/ej2-filemanager@19.4.43",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-W8m3Joo+a9Z7owMAvRIhark+b5t/eUMNF4IAtUBuS6gqlEWpdHz7SCyW2k/IYj9skFWFuFwMQOW4uv7zPJZpzg==",
5
+ "_integrity": "sha512-fH3Q1fOFz+gttAUrCzQyH7C8xF93aZRLGdwHR+N3wMY3DheHUl7TW/swq4N+4EGlds0aq4qBXHIH2sm2w/ioIQ==",
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": "http://nexus.syncfusion.com/repository/ej2-release/@syncfusion/ej2-filemanager/-/ej2-filemanager-18.6.2.tgz",
29
- "_shasum": "1adf5496fea6cbb42836e2df0d07b84d995249e7",
28
+ "_resolved": "http://nexus.syncfusion.com/repository/ej2-hotfix-new/@syncfusion/ej2-filemanager/-/ej2-filemanager-19.4.43.tgz",
29
+ "_shasum": "92dd7a5c453ed3b7ae2b40e9b5dd9fff88720219",
30
30
  "_spec": "@syncfusion/ej2-filemanager@*",
31
31
  "_where": "/jenkins/workspace/automation_release_19.1.0.1-ZPMUBNQ6AUYH6YGEFBPVYMEQLRRW2SLD4XCZ6GATNZJFYJ3RIAOA/packages/included",
32
32
  "author": {
@@ -37,16 +37,16 @@
37
37
  },
38
38
  "bundleDependencies": false,
39
39
  "dependencies": {
40
- "@syncfusion/ej2-base": "~19.4.38",
41
- "@syncfusion/ej2-buttons": "~19.4.38",
42
- "@syncfusion/ej2-data": "~19.4.38",
43
- "@syncfusion/ej2-grids": "~19.4.38",
44
- "@syncfusion/ej2-inputs": "~19.4.38",
45
- "@syncfusion/ej2-layouts": "~19.4.38",
46
- "@syncfusion/ej2-lists": "~19.4.38",
47
- "@syncfusion/ej2-navigations": "~19.4.38",
48
- "@syncfusion/ej2-popups": "~19.4.38",
49
- "@syncfusion/ej2-splitbuttons": "~19.4.38",
40
+ "@syncfusion/ej2-base": "~19.4.48",
41
+ "@syncfusion/ej2-buttons": "~19.4.48",
42
+ "@syncfusion/ej2-data": "~19.4.48",
43
+ "@syncfusion/ej2-grids": "~19.4.48",
44
+ "@syncfusion/ej2-inputs": "~19.4.48",
45
+ "@syncfusion/ej2-layouts": "~19.4.48",
46
+ "@syncfusion/ej2-lists": "~19.4.48",
47
+ "@syncfusion/ej2-navigations": "~19.4.48",
48
+ "@syncfusion/ej2-popups": "~19.4.48",
49
+ "@syncfusion/ej2-splitbuttons": "~19.4.48",
50
50
  "selenium-webdriver": "^4.0.0-alpha.1"
51
51
  },
52
52
  "deprecated": false,
@@ -68,6 +68,6 @@
68
68
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
69
69
  },
70
70
  "typings": "index.d.ts",
71
- "version": "19.4.38",
71
+ "version": "19.4.48",
72
72
  "sideEffects": false
73
73
  }
@@ -1,4 +1,4 @@
1
- import { Component, EmitType, ModuleDeclaration, isNullOrUndefined, L10n, closest } from '@syncfusion/ej2-base';import { Property, INotifyPropertyChanged, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';import { createElement, addClass, removeClass, setStyleAttribute as setAttr } from '@syncfusion/ej2-base';import { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents, KeyboardEventArgs } from '@syncfusion/ej2-base';import { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';import { Splitter, PanePropertiesModel } from '@syncfusion/ej2-layouts';import { Dialog, createSpinner, hideSpinner, showSpinner, BeforeOpenEventArgs, BeforeCloseEventArgs } from '@syncfusion/ej2-popups';import { createDialog, createExtDialog } from '../pop-up/dialog';import { ToolbarSettings, ToolbarSettingsModel, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';import { NavigationPaneSettingsModel, DetailsViewSettingsModel } from '../models/index';import { AjaxSettingsModel, SearchSettings, SearchSettingsModel } from '../models/index';import { Toolbar } from '../actions/toolbar';import { DetailsView } from '../layout/details-view';import { LargeIconsView } from '../layout/large-icons-view';import { Uploader, UploadingEventArgs, SelectedEventArgs, FileInfo } from '@syncfusion/ej2-inputs';import { UploadSettingsModel } from '../models/upload-settings-model';import { UploadSettings } from '../models/upload-settings';import * as events from './constant';import * as CLS from './classes';import { read, filter, createFolder } from '../common/operations';import { ITreeView, IContextMenu, ViewType, SortOrder, FileDragEventArgs, RetryArgs, ReadArgs, FileSelectionEventArgs } from './interface';import { BeforeSendEventArgs, SuccessEventArgs, FailureEventArgs, FileLoadEventArgs } from './interface';import { FileOpenEventArgs, FileSelectEventArgs, MenuClickEventArgs, MenuOpenEventArgs } from './interface';import { ToolbarClickEventArgs, ToolbarCreateEventArgs, UploadListCreateArgs } from './interface';import { PopupOpenCloseEventArgs, BeforePopupOpenCloseEventArgs, BeforeDownloadEventArgs, BeforeImageLoadEventArgs } from './interface';import { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';import { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';import { ContextMenuSettingsModel } from '../models/contextMenu-settings-model';import { ContextMenuSettings } from '../models/contextMenu-settings';import { BreadCrumbBar } from '../actions/breadcrumb-bar';import { ContextMenu } from '../pop-up/context-menu';import { defaultLocale } from '../models/default-locale';import { PositionModel } from '@syncfusion/ej2-base/src/draggable-model';
1
+ import { Component, EmitType, ModuleDeclaration, isNullOrUndefined, L10n, closest } from '@syncfusion/ej2-base';import { Property, INotifyPropertyChanged, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';import { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';import { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents, KeyboardEventArgs } from '@syncfusion/ej2-base';import { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';import { Splitter, PanePropertiesModel } from '@syncfusion/ej2-layouts';import { Dialog, createSpinner, hideSpinner, showSpinner, BeforeOpenEventArgs, BeforeCloseEventArgs } from '@syncfusion/ej2-popups';import { createDialog, createExtDialog } from '../pop-up/dialog';import { ToolbarSettings, ToolbarSettingsModel, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';import { NavigationPaneSettingsModel, DetailsViewSettingsModel } from '../models/index';import { AjaxSettingsModel, SearchSettings, SearchSettingsModel } from '../models/index';import { Toolbar } from '../actions/toolbar';import { DetailsView } from '../layout/details-view';import { LargeIconsView } from '../layout/large-icons-view';import { Uploader, UploadingEventArgs, SelectedEventArgs, FileInfo } from '@syncfusion/ej2-inputs';import { UploadSettingsModel } from '../models/upload-settings-model';import { UploadSettings } from '../models/upload-settings';import * as events from './constant';import * as CLS from './classes';import { read, filter, createFolder } from '../common/operations';import { ITreeView, IContextMenu, ViewType, SortOrder, FileDragEventArgs, RetryArgs, ReadArgs, FileSelectionEventArgs } from './interface';import { BeforeSendEventArgs, SuccessEventArgs, FailureEventArgs, FileLoadEventArgs } from './interface';import { FileOpenEventArgs, FileSelectEventArgs, MenuClickEventArgs, MenuOpenEventArgs } from './interface';import { ToolbarClickEventArgs, ToolbarCreateEventArgs, UploadListCreateArgs } from './interface';import { PopupOpenCloseEventArgs, BeforePopupOpenCloseEventArgs, BeforeDownloadEventArgs, BeforeImageLoadEventArgs } from './interface';import { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';import { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem } from '../common/utility';import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';import { ContextMenuSettingsModel } from '../models/contextMenu-settings-model';import { ContextMenuSettings } from '../models/contextMenu-settings';import { BreadCrumbBar } from '../actions/breadcrumb-bar';import { ContextMenu } from '../pop-up/context-menu';import { defaultLocale } from '../models/default-locale';import { PositionModel } from '@syncfusion/ej2-base/src/draggable-model';
2
2
  import {ComponentModel} from '@syncfusion/ej2-base';
3
3
 
4
4
  /**
@@ -106,6 +106,7 @@ export declare class FileManager extends Component<HTMLElement> implements INoti
106
106
  currentItemText: string;
107
107
  renameText: string;
108
108
  isFiltered: boolean;
109
+ isSortByClicked: boolean;
109
110
  enablePaste: boolean;
110
111
  splitterObj: Splitter;
111
112
  persistData: boolean;
@@ -19,7 +19,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
19
19
  };
20
20
  import { Component, isNullOrUndefined, L10n, closest } from '@syncfusion/ej2-base';
21
21
  import { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';
22
- import { createElement, addClass, removeClass, setStyleAttribute as setAttr } from '@syncfusion/ej2-base';
22
+ import { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';
23
23
  import { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';
24
24
  import { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';
25
25
  import { Splitter } from '@syncfusion/ej2-layouts';
@@ -77,6 +77,8 @@ var FileManager = /** @class */ (function (_super) {
77
77
  _this.folderPath = '';
78
78
  _this.isSameAction = false;
79
79
  _this.isFiltered = false;
80
+ // Specifies whether the sort by option is clicked or not.
81
+ _this.isSortByClicked = false;
80
82
  _this.enablePaste = false;
81
83
  _this.persistData = false;
82
84
  _this.retryArgs = [];
@@ -120,6 +122,9 @@ var FileManager = /** @class */ (function (_super) {
120
122
  * @returns {void}
121
123
  */
122
124
  FileManager.prototype.preRender = function () {
125
+ if (isNOU(this.element.id) || this.element.id === '') {
126
+ this.element.setAttribute('id', getUniqueID('filemanager'));
127
+ }
123
128
  this.ensurePath();
124
129
  this.feParent = [];
125
130
  this.feFiles = [];
@@ -543,6 +543,7 @@ export interface IFileManager extends Component<HTMLElement> {
543
543
  isCut: boolean;
544
544
  filterData: Object;
545
545
  isFiltered: boolean;
546
+ isSortByClicked: boolean;
546
547
  isLayoutChange: boolean;
547
548
  isSearchCut: boolean;
548
549
  isPasteError: boolean;
@@ -601,6 +602,7 @@ export interface ITreeView extends Component<HTMLElement> {
601
602
  duplicateFiles: Function;
602
603
  rootID: string;
603
604
  activeNode: Element;
605
+ openFileOnContextMenuClick: Function;
604
606
  }
605
607
  /** @hidden */
606
608
  export interface IContextMenu extends Component<HTMLElement> {
@@ -267,7 +267,13 @@ export function searchWordHandler(parent, value, isLayoutChange) {
267
267
  }
268
268
  else {
269
269
  if (!parent.isFiltered) {
270
- read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);
270
+ if (parent.isSortByClicked) {
271
+ parent.notify(events.layoutChange, { files: parent.largeiconsviewModule.items });
272
+ parent.isSortByClicked = false;
273
+ }
274
+ else {
275
+ read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);
276
+ }
271
277
  }
272
278
  else {
273
279
  filter(parent, events.layoutChange);
@@ -448,7 +454,7 @@ export function fileType(file) {
448
454
  export function getImageUrl(parent, item) {
449
455
  var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;
450
456
  var imgUrl;
451
- var fileName = getValue('name', item);
457
+ var fileName = encodeURIComponent(getValue('name', item));
452
458
  var fPath = getValue('filterPath', item);
453
459
  if (parent.hasId) {
454
460
  var imgId = getValue('id', item);
@@ -678,6 +684,7 @@ export function getCssClass(parent, css) {
678
684
  */
679
685
  export function sortbyClickHandler(parent, args) {
680
686
  var tick;
687
+ parent.isSortByClicked = true;
681
688
  if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {
682
689
  tick = true;
683
690
  }
@@ -13,7 +13,7 @@ export declare class LargeIconsView {
13
13
  private keyConfigs;
14
14
  private isInteraction;
15
15
  private itemList;
16
- private items;
16
+ items: Object[];
17
17
  private clickObj;
18
18
  private perRow;
19
19
  private startItem;
@@ -21,6 +21,9 @@ export declare class NavigationPane {
21
21
  private isRenameParent;
22
22
  private isRightClick;
23
23
  private renameParent;
24
+ private previousSelected;
25
+ private isNodeClickCalled;
26
+ private restrictSelecting;
24
27
  /**
25
28
  * Constructor for the TreeView module
26
29
  *
@@ -38,6 +41,8 @@ export declare class NavigationPane {
38
41
  private getDropPath;
39
42
  private onDrowNode;
40
43
  private addChild;
44
+ private onNodeSelecting;
45
+ openFileOnContextMenuClick(node: HTMLLIElement): void;
41
46
  private onNodeSelected;
42
47
  private onPathDrag;
43
48
  private onNodeExpand;
@@ -29,6 +29,12 @@ var NavigationPane = /** @class */ (function () {
29
29
  this.isRenameParent = false;
30
30
  this.isRightClick = false;
31
31
  this.renameParent = null;
32
+ // Specifies the previously selected nodes in the treeview control.
33
+ this.previousSelected = null;
34
+ // Specifies whether the nodeClicked event of the treeview control is triggered or not.
35
+ this.isNodeClickCalled = false;
36
+ // Specifies whether to restrict node selection in the treeview control.
37
+ this.restrictSelecting = false;
32
38
  this.parent = parent;
33
39
  this.addEventListener();
34
40
  this.keyConfigs = {
@@ -68,6 +74,7 @@ var NavigationPane = /** @class */ (function () {
68
74
  hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'
69
75
  },
70
76
  enableHtmlSanitizer: this.parent.enableHtmlSanitizer,
77
+ nodeSelecting: this.onNodeSelecting.bind(this),
71
78
  nodeSelected: this.onNodeSelected.bind(this),
72
79
  nodeExpanding: this.onNodeExpand.bind(this),
73
80
  nodeClicked: this.onNodeClicked.bind(this),
@@ -173,6 +180,44 @@ var NavigationPane = /** @class */ (function () {
173
180
  this.treeObj.addNodes(directories, target, null, prevent);
174
181
  }
175
182
  };
183
+ // Node Selecting event handler
184
+ NavigationPane.prototype.onNodeSelecting = function (args) {
185
+ if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {
186
+ this.restrictSelecting = false;
187
+ this.isNodeClickCalled = false;
188
+ return;
189
+ }
190
+ if (!this.renameParent) {
191
+ this.parent.activeModule = 'navigationpane';
192
+ // eslint-disable-next-line
193
+ var nodeData = this.getTreeData(getValue('id', args.nodeData));
194
+ var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
195
+ this.parent.trigger('fileOpen', eventArgs);
196
+ args.cancel = eventArgs.cancel;
197
+ if (args.cancel) {
198
+ this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] != args.node.getAttribute('data-uid') : false;
199
+ this.treeObj.selectedNodes = this.isNodeClickCalled ? this.previousSelected : this.treeObj.selectedNodes;
200
+ this.previousSelected = this.treeObj.selectedNodes;
201
+ if (!isNOU(this.parent) && !isNOU(this.parent.contextmenuModule)) {
202
+ this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);
203
+ }
204
+ }
205
+ }
206
+ };
207
+ // Opens the folder while clicking open context menu item in the treeview.
208
+ NavigationPane.prototype.openFileOnContextMenuClick = function (node) {
209
+ var data = this.treeObj.getTreeData(node);
210
+ // eslint-disable-next-line
211
+ this.parent.selectedItems = [];
212
+ this.parent.itemData = data;
213
+ this.activeNode = node;
214
+ this.parent.activeModule = 'navigationpane';
215
+ updatePath(node, this.parent.itemData[0], this.parent);
216
+ read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);
217
+ this.parent.visitedItem = node;
218
+ this.isPathDragged = this.isRenameParent = this.isRightClick = false;
219
+ this.treeObj.selectedNodes = [node.getAttribute('data-uid')];
220
+ };
176
221
  NavigationPane.prototype.onNodeSelected = function (args) {
177
222
  if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {
178
223
  this.parent.breadcrumbbarModule.searchObj.element.value = '';
@@ -186,11 +231,6 @@ var NavigationPane = /** @class */ (function () {
186
231
  this.parent.activeModule = 'navigationpane';
187
232
  // eslint-disable-next-line
188
233
  var nodeData = this.getTreeData(getValue('id', args.nodeData));
189
- if (!this.renameParent) {
190
- var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };
191
- delete eventArgs.cancel;
192
- this.parent.trigger('fileOpen', eventArgs);
193
- }
194
234
  this.parent.selectedItems = [];
195
235
  this.parent.itemData = nodeData;
196
236
  updatePath(args.node, this.parent.itemData[0], this.parent);
@@ -232,9 +272,11 @@ var NavigationPane = /** @class */ (function () {
232
272
  };
233
273
  NavigationPane.prototype.onNodeClicked = function (args) {
234
274
  this.parent.activeModule = 'navigationpane';
275
+ this.previousSelected = this.treeObj.selectedNodes;
235
276
  this.activeNode = args.node;
236
277
  if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {
237
278
  this.isRightClick = true;
279
+ this.isNodeClickCalled = true;
238
280
  this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];
239
281
  }
240
282
  else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {
@@ -15,6 +15,7 @@ export declare class ContextMenu {
15
15
  private currentItems;
16
16
  private currentElement;
17
17
  private disabledItems;
18
+ private targetNodeElement;
18
19
  menuItemData: object;
19
20
  /**
20
21
  * Constructor for the ContextMenu module
@@ -73,14 +73,11 @@ var ContextMenu = /** @class */ (function () {
73
73
  var data;
74
74
  var treeFolder = false;
75
75
  var target = args.event.target;
76
- this.menuTarget = target;
76
+ this.menuTarget = this.targetNodeElement = target;
77
77
  this.currentElement = args.element;
78
78
  if (target.classList.contains('e-spinner-pane')) {
79
79
  target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];
80
- this.menuTarget = target;
81
- }
82
- if (target.classList.contains(CLS.FULLROW)) {
83
- this.parent.selectedItems.length = 0;
80
+ this.menuTarget = this.targetNodeElement = target;
84
81
  }
85
82
  this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;
86
83
  var view = this.getTargetView(target);
@@ -191,7 +188,7 @@ var ContextMenu = /** @class */ (function () {
191
188
  _this.enableItems(_this.disabledItems, false, true);
192
189
  args.cancel = menuOpenArgs.cancel;
193
190
  if (menuOpenArgs.cancel) {
194
- _this.menuTarget = _this.currentElement = null;
191
+ _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;
195
192
  }
196
193
  });
197
194
  };
@@ -311,7 +308,12 @@ var ContextMenu = /** @class */ (function () {
311
308
  }
312
309
  else {
313
310
  this.parent.notify(events.selectedData, {});
314
- details = this.parent.itemData;
311
+ if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {
312
+ details = [this.menuItemData];
313
+ }
314
+ else {
315
+ details = this.parent.itemData;
316
+ }
315
317
  }
316
318
  var eventArgs = {
317
319
  cancel: false,
@@ -388,6 +390,9 @@ var ContextMenu = /** @class */ (function () {
388
390
  if (_this.parent.visitedItem) {
389
391
  _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });
390
392
  }
393
+ else if (_this.parent.activeModule === 'navigationpane') {
394
+ _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));
395
+ }
391
396
  break;
392
397
  case 'details':
393
398
  _this.parent.notify(events.detailsInit, {});