@syncfusion/ej2-filemanager 27.1.51 → 27.1.53

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.
@@ -1430,9 +1430,8 @@ function getSortedData(parent, items) {
1430
1430
  */
1431
1431
  function getObject(parent, key, value) {
1432
1432
  var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);
1433
- var query = new Query().where(key, 'equal', value);
1434
- var lists = new DataManager(currFiles).executeLocal(query);
1435
- return lists[0];
1433
+ var result = currFiles.filter(function (data) { return data[key].toString() === value; });
1434
+ return result.length > 0 ? result[0] : null;
1436
1435
  }
1437
1436
  /**
1438
1437
  * Creates empty element
@@ -2117,16 +2116,15 @@ function removeItemClass(parent, value) {
2117
2116
  * @param {Element} scrollParent - specifies the scrolling target.
2118
2117
  * @param {IFileManager} parent - specifies the parent.
2119
2118
  * @param {string} nodeClass - specifies the node class.
2120
- * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.
2121
2119
  * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.
2122
2120
  * @returns {void}
2123
2121
  * @private
2124
2122
  */
2125
- function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {
2123
+ function scrollHandler(scrollParent, parent, nodeClass, clientY) {
2126
2124
  var position;
2127
2125
  var elementData = scrollParent.getBoundingClientRect();
2128
2126
  var node = select('.' + nodeClass, scrollParent);
2129
- if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {
2127
+ if ((clientY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {
2130
2128
  position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;
2131
2129
  scrollParent.scrollBy(0, position);
2132
2130
  }
@@ -2163,7 +2161,7 @@ function draggingHandler(parent, args) {
2163
2161
  /* istanbul ignore next */
2164
2162
  parent.treeExpandTimer = window.setTimeout(function () { parent.notify(dragging, args); }, 800);
2165
2163
  scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;
2166
- scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);
2164
+ scrollHandler(scrollParent, parent, 'e-level-2', args.event.y);
2167
2165
  }
2168
2166
  else if (parent.targetModule === 'detailsview') {
2169
2167
  node = closest(args.target, 'tr');
@@ -2175,7 +2173,7 @@ function draggingHandler(parent, args) {
2175
2173
  }
2176
2174
  canDrop = true;
2177
2175
  scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');
2178
- scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);
2176
+ scrollHandler(scrollParent, parent, 'e-row', args.event.y);
2179
2177
  }
2180
2178
  else if (parent.targetModule === 'largeiconsview') {
2181
2179
  node = closest(args.target, 'li');
@@ -2184,7 +2182,7 @@ function draggingHandler(parent, args) {
2184
2182
  }
2185
2183
  canDrop = true;
2186
2184
  scrollParent = parent.largeiconsviewModule.element.firstElementChild;
2187
- scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);
2185
+ scrollHandler(scrollParent, parent, 'e-large-icon', args.event.y);
2188
2186
  /* istanbul ignore next */
2189
2187
  }
2190
2188
  else if (parent.targetModule === 'breadcrumbbar') {
@@ -3343,13 +3341,18 @@ function readSuccess(parent, result, event) {
3343
3341
  * @private
3344
3342
  */
3345
3343
  function filterSuccess(parent, result, event, action) {
3346
- if (!isNullOrUndefined(result.files)) {
3347
- parent.notify(event, result);
3348
- var args = { action: action, result: result };
3349
- parent.trigger('success', args);
3344
+ try {
3345
+ if (!isNullOrUndefined(result.files)) {
3346
+ parent.notify(event, result);
3347
+ var args = { action: action, result: result };
3348
+ parent.trigger('success', args);
3349
+ }
3350
+ else {
3351
+ onFailure(parent, result, action);
3352
+ }
3350
3353
  }
3351
- else {
3352
- onFailure(parent, result, action);
3354
+ catch (error) {
3355
+ handleCatchError(parent, error, action);
3353
3356
  }
3354
3357
  }
3355
3358
  /* istanbul ignore next */
@@ -3363,50 +3366,58 @@ function filterSuccess(parent, result, event, action) {
3363
3366
  * @private
3364
3367
  */
3365
3368
  function createSuccess(parent, result, itemName) {
3366
- if (!isNullOrUndefined(result.files)) {
3367
- if (parent.dialogObj && parent.dialogObj.visible) {
3368
- parent.dialogObj.hide();
3369
- }
3370
- parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];
3371
- parent.breadcrumbbarModule.searchObj.value = '';
3372
- var createEventArgs = {
3373
- folderName: itemName,
3374
- path: parent.path,
3375
- parentFolder: parent.itemData
3376
- };
3377
- parent.trigger('folderCreate', createEventArgs);
3378
- var args = { action: 'create', result: result };
3379
- parent.trigger('success', args);
3380
- parent.itemData = [getPathObject(parent)];
3381
- read(parent, createEnd, parent.path);
3382
- }
3383
- else {
3384
- if (result.error.code === '400') {
3369
+ try {
3370
+ if (!isNullOrUndefined(result.files)) {
3385
3371
  if (parent.dialogObj && parent.dialogObj.visible) {
3386
- var ele = select('#newname', parent.dialogObj.element);
3387
- var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + ele.value + '"');
3388
- ele.parentElement.nextElementSibling.innerHTML = error;
3389
- }
3390
- else {
3391
- var result_2 = {
3392
- files: null,
3393
- error: {
3394
- code: '400',
3395
- message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + itemName + '"'),
3396
- fileExists: null
3397
- }
3398
- };
3399
- createDialog(parent, 'Error', result_2);
3372
+ parent.dialogObj.hide();
3400
3373
  }
3401
- var args = { action: 'create', error: result.error };
3402
- parent.trigger('failure', args);
3374
+ parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];
3375
+ parent.breadcrumbbarModule.searchObj.value = '';
3376
+ var createEventArgs = {
3377
+ folderName: itemName,
3378
+ path: parent.path,
3379
+ parentFolder: parent.itemData
3380
+ };
3381
+ parent.trigger('folderCreate', createEventArgs);
3382
+ var args = { action: 'create', result: result };
3383
+ parent.trigger('success', args);
3384
+ parent.itemData = [getPathObject(parent)];
3385
+ read(parent, createEnd, parent.path);
3403
3386
  }
3404
3387
  else {
3405
- if (parent.dialogObj && parent.dialogObj.visible) {
3406
- parent.dialogObj.hide();
3388
+ if (result.error.code === '400') {
3389
+ if (parent.dialogObj && parent.dialogObj.visible) {
3390
+ var ele = select('#newname', parent.dialogObj.element);
3391
+ var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + ele.value + '"');
3392
+ ele.parentElement.nextElementSibling.innerHTML = error;
3393
+ }
3394
+ else {
3395
+ var result_2 = {
3396
+ files: null,
3397
+ error: {
3398
+ code: '400',
3399
+ message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + itemName + '"'),
3400
+ fileExists: null
3401
+ }
3402
+ };
3403
+ createDialog(parent, 'Error', result_2);
3404
+ }
3405
+ var args = { action: 'create', error: result.error };
3406
+ parent.trigger('failure', args);
3407
3407
  }
3408
- onFailure(parent, result, 'create');
3408
+ else {
3409
+ if (parent.dialogObj && parent.dialogObj.visible) {
3410
+ parent.dialogObj.hide();
3411
+ }
3412
+ onFailure(parent, result, 'create');
3413
+ }
3414
+ }
3415
+ }
3416
+ catch (error) {
3417
+ if (parent.dialogObj && parent.dialogObj.visible) {
3418
+ parent.dialogObj.hide();
3409
3419
  }
3420
+ handleCatchError(parent, error, 'create');
3410
3421
  }
3411
3422
  }
3412
3423
  /* istanbul ignore next */
@@ -5003,7 +5014,9 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5003
5014
  var textEle = args.item.querySelector('.' + LIST_TEXT);
5004
5015
  var txt = getValue('name', args.curData);
5005
5016
  var type = getValue('type', args.curData);
5006
- textEle.innerHTML = txt.substr(0, txt.length - type.length);
5017
+ if (txt.indexOf(type) !== -1) {
5018
+ textEle.innerHTML = txt.substr(0, txt.length - type.length);
5019
+ }
5007
5020
  }
5008
5021
  this.renderCheckbox(args);
5009
5022
  var eventArgs = {
@@ -5371,6 +5384,7 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5371
5384
  read(this.parent, pathChanged, this.parent.path);
5372
5385
  break;
5373
5386
  case 'allowMultiSelection':
5387
+ case 'showItemCheckBoxes':
5374
5388
  if (this.parent.view !== 'LargeIcons') {
5375
5389
  break;
5376
5390
  }
@@ -5426,7 +5440,6 @@ var LargeIconsView = /** @__PURE__ @class */ (function () {
5426
5440
  if (toBind) {
5427
5441
  this.clickObj = new Touch(this.element, {
5428
5442
  tap: function (eve) {
5429
- eve.originalEvent.preventDefault();
5430
5443
  if (_this.parent.isDevice) {
5431
5444
  _this.tapCount = eve.tapCount;
5432
5445
  _this.tapEvent = eve;
@@ -8290,7 +8303,9 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8290
8303
  */
8291
8304
  /* istanbul ignore next */
8292
8305
  FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {
8306
+ var _this = this;
8293
8307
  var height;
8308
+ var requiresRefresh = false;
8294
8309
  for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {
8295
8310
  var prop = _a[_i];
8296
8311
  switch (prop) {
@@ -8301,6 +8316,14 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8301
8316
  this.allowDragAndDrop = newProp.allowDragAndDrop;
8302
8317
  this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });
8303
8318
  break;
8319
+ case 'showItemCheckBoxes':
8320
+ this.showItemCheckBoxes = newProp.showItemCheckBoxes;
8321
+ this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });
8322
+ break;
8323
+ case 'enableVirtualization':
8324
+ this.enableVirtualization = newProp.enableVirtualization;
8325
+ requiresRefresh = true;
8326
+ break;
8304
8327
  case 'allowMultiSelection':
8305
8328
  if (this.allowMultiSelection) {
8306
8329
  addClass([this.element], CHECK_SELECT);
@@ -8328,11 +8351,11 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8328
8351
  break;
8329
8352
  case 'enableRtl':
8330
8353
  this.enableRtl = newProp.enableRtl;
8331
- this.refresh();
8354
+ requiresRefresh = true;
8332
8355
  break;
8333
8356
  case 'rootAliasName':
8334
8357
  this.rootAliasName = newProp.rootAliasName;
8335
- this.refresh();
8358
+ requiresRefresh = true;
8336
8359
  break;
8337
8360
  case 'height':
8338
8361
  height = !isNullOrUndefined(newProp.height) ? formatUnit(newProp.height) : newProp.height;
@@ -8407,11 +8430,21 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8407
8430
  this.notify(sortByChange, {});
8408
8431
  break;
8409
8432
  case 'sortBy':
8410
- refresh(this);
8411
- this.notify(sortByChange, {});
8412
8433
  if (this.view === 'Details') {
8434
+ var columns = this.detailsViewSettings.columns;
8435
+ var isValidSortField = !isNullOrUndefined(columns) &&
8436
+ columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;
8437
+ if (!isValidSortField) {
8438
+ return;
8439
+ }
8440
+ refresh(this);
8441
+ this.notify(sortByChange, {});
8413
8442
  this.notify(sortColumn, {});
8414
8443
  }
8444
+ else {
8445
+ refresh(this);
8446
+ this.notify(sortByChange, {});
8447
+ }
8415
8448
  break;
8416
8449
  case 'popupTarget':
8417
8450
  if (this.uploadDialogObj) {
@@ -8429,10 +8462,13 @@ var FileManager = /** @__PURE__ @class */ (function (_super) {
8429
8462
  break;
8430
8463
  case 'fileSystemData':
8431
8464
  this.fileSystemData = newProp.fileSystemData;
8432
- this.refresh();
8465
+ requiresRefresh = true;
8433
8466
  break;
8434
8467
  }
8435
8468
  }
8469
+ if (requiresRefresh) {
8470
+ this.refresh();
8471
+ }
8436
8472
  };
8437
8473
  /* istanbul ignore next */
8438
8474
  FileManager.prototype.ajaxSettingSetModel = function (newProp) {
@@ -10736,6 +10772,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
10736
10772
  this.isRendered = true;
10737
10773
  this.isLoaded = false;
10738
10774
  this.isNameWidth = false;
10775
+ this.isMultiSelect = false;
10739
10776
  this.pasteOperation = false;
10740
10777
  this.uploadOperation = false;
10741
10778
  Grid.Inject(Resize, ContextMenu$2, Sort, VirtualScroll);
@@ -10783,6 +10820,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
10783
10820
  }
10784
10821
  /* istanbul ignore next */
10785
10822
  DetailsView.prototype.render = function (args) {
10823
+ var _this = this;
10786
10824
  showSpinner(this.parent.element);
10787
10825
  if (this.parent.view === 'Details') {
10788
10826
  removeClass([this.parent.element], MULTI_SELECT);
@@ -10790,7 +10828,9 @@ var DetailsView = /** @__PURE__ @class */ (function () {
10790
10828
  this.checkNameWidth();
10791
10829
  var columns = this.getColumns();
10792
10830
  var sortSettings = void 0;
10793
- if (this.parent.isMobile) {
10831
+ var isValidSortField = !isNullOrUndefined(columns) &&
10832
+ columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;
10833
+ if (this.parent.isMobile || !isValidSortField) {
10794
10834
  sortSettings = [];
10795
10835
  }
10796
10836
  else {
@@ -11001,7 +11041,9 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11001
11041
  if (textEle) {
11002
11042
  var name_1 = getValue('name', args.data);
11003
11043
  var type = getValue('type', args.data);
11004
- textEle.innerHTML = name_1.substr(0, name_1.length - type.length);
11044
+ if (name_1.indexOf(type) !== -1) {
11045
+ textEle.innerHTML = name_1.substr(0, name_1.length - type.length);
11046
+ }
11005
11047
  }
11006
11048
  }
11007
11049
  if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {
@@ -11264,6 +11306,7 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11264
11306
  case 'showHiddenItems':
11265
11307
  read(this.parent, pathChanged, this.parent.path);
11266
11308
  break;
11309
+ case 'showItemCheckBoxes':
11267
11310
  case 'allowMultiSelection':
11268
11311
  if (!isNullOrUndefined(this.gridObj)) {
11269
11312
  this.currentSelectedItem = this.parent.selectedItems;
@@ -11827,6 +11870,17 @@ var DetailsView = /** @__PURE__ @class */ (function () {
11827
11870
  };
11828
11871
  this.parent.trigger('fileSelection', eventArgs);
11829
11872
  args.cancel = eventArgs.cancel;
11873
+ if (!this.isMultiSelect) {
11874
+ this.isMultiSelect = true;
11875
+ if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {
11876
+ args.cancel = true;
11877
+ var rowIndex = (args && args.rowIndexes)
11878
+ ? args.rowIndexes[args.rowIndexes.length - 1]
11879
+ : args.rowIndex;
11880
+ this.gridObj.selectRow(rowIndex);
11881
+ }
11882
+ this.isMultiSelect = false;
11883
+ }
11830
11884
  };
11831
11885
  /* istanbul ignore next */
11832
11886
  DetailsView.prototype.onSelected = function (args) {