@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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 27.1.51
3
+ * version : 27.1.53
4
4
  * Copyright Syncfusion Inc. 2001 - 2023. 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@27.1.50",
3
+ "_id": "@syncfusion/ej2-filemanager@27.1.52",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-lQcbSmuhubN8h3u3rT6htJR/YPvo8ukcq3fp1W+F7fd6k4rDjkpqdtqkGB7+dI50eR9wlVjWFu70Dpiv3OK3yA==",
5
+ "_integrity": "sha512-U0UQRAbfvPPuY5OCEXBnXOQ7iluYVdm4XEPLYmPbGyDdMFcnBlJThLH+vswhSwYthmyajeP0BiwH+WKtr7QD5Q==",
6
6
  "_location": "/@syncfusion/ej2-filemanager",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -24,8 +24,8 @@
24
24
  "/@syncfusion/ej2-richtexteditor",
25
25
  "/@syncfusion/ej2-vue-filemanager"
26
26
  ],
27
- "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-filemanager/-/ej2-filemanager-27.1.50.tgz",
28
- "_shasum": "07d479afde33def32353db2fd1079f16ca48dffd",
27
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-filemanager/-/ej2-filemanager-27.1.52.tgz",
28
+ "_shasum": "2e674b99a75e0464193ccd790c6f4653f48be4a8",
29
29
  "_spec": "@syncfusion/ej2-filemanager@*",
30
30
  "_where": "/jenkins/workspace/elease-automation_release_27.1.1/packages/included",
31
31
  "author": {
@@ -36,15 +36,15 @@
36
36
  },
37
37
  "bundleDependencies": false,
38
38
  "dependencies": {
39
- "@syncfusion/ej2-base": "~27.1.50",
40
- "@syncfusion/ej2-buttons": "~27.1.51",
41
- "@syncfusion/ej2-data": "~27.1.51",
42
- "@syncfusion/ej2-grids": "~27.1.51",
39
+ "@syncfusion/ej2-base": "~27.1.53",
40
+ "@syncfusion/ej2-buttons": "~27.1.53",
41
+ "@syncfusion/ej2-data": "~27.1.52",
42
+ "@syncfusion/ej2-grids": "~27.1.53",
43
43
  "@syncfusion/ej2-inputs": "~27.1.50",
44
- "@syncfusion/ej2-layouts": "~27.1.51",
44
+ "@syncfusion/ej2-layouts": "~27.1.53",
45
45
  "@syncfusion/ej2-lists": "~27.1.50",
46
- "@syncfusion/ej2-navigations": "~27.1.51",
47
- "@syncfusion/ej2-popups": "~27.1.50",
46
+ "@syncfusion/ej2-navigations": "~27.1.53",
47
+ "@syncfusion/ej2-popups": "~27.1.53",
48
48
  "@syncfusion/ej2-splitbuttons": "~27.1.50"
49
49
  },
50
50
  "deprecated": false,
@@ -75,6 +75,6 @@
75
75
  "url": "git+https://github.com/syncfusion/ej2-javascript-ui-controls.git"
76
76
  },
77
77
  "typings": "index.d.ts",
78
- "version": "27.1.51",
78
+ "version": "27.1.53",
79
79
  "sideEffects": false
80
80
  }
@@ -1,4 +1,4 @@
1
- import { Component, EmitType, ModuleDeclaration, isNullOrUndefined, L10n, closest, Collection, detach, selectAll, setStyleAttribute } 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 { ToolbarItem, ToolbarItemModel } 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, CancelEventArgs } 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, FolderCreateEventArgs, DeleteEventArgs, RenameEventArgs, MoveEventArgs, SearchEventArgs } from './interface';import { FileOpenEventArgs, FileSelectEventArgs, MenuClickEventArgs, MenuOpenEventArgs, MenuCloseEventArgs } 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, closePopup } 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';import { Virtualization } from '../actions/virtualization';import { SortComparer } from './interface';
1
+ import { Component, EmitType, ModuleDeclaration, isNullOrUndefined, L10n, closest, Collection, detach, selectAll, setStyleAttribute } 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 { ToolbarItem, ToolbarItemModel } 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, CancelEventArgs } 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, FolderCreateEventArgs, DeleteEventArgs, RenameEventArgs, MoveEventArgs, SearchEventArgs } from './interface';import { FileOpenEventArgs, FileSelectEventArgs, MenuClickEventArgs, MenuOpenEventArgs, MenuCloseEventArgs } 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, closePopup } from '../common/utility';import { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';import { ColumnModel } from '@syncfusion/ej2-grids';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';import { Virtualization } from '../actions/virtualization';import { SortComparer } from './interface';
2
2
  import {ComponentModel} from '@syncfusion/ej2-base';
3
3
 
4
4
  /**
@@ -804,7 +804,9 @@ var FileManager = /** @class */ (function (_super) {
804
804
  */
805
805
  /* istanbul ignore next */
806
806
  FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {
807
+ var _this = this;
807
808
  var height;
809
+ var requiresRefresh = false;
808
810
  for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {
809
811
  var prop = _a[_i];
810
812
  switch (prop) {
@@ -815,6 +817,14 @@ var FileManager = /** @class */ (function (_super) {
815
817
  this.allowDragAndDrop = newProp.allowDragAndDrop;
816
818
  this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });
817
819
  break;
820
+ case 'showItemCheckBoxes':
821
+ this.showItemCheckBoxes = newProp.showItemCheckBoxes;
822
+ this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });
823
+ break;
824
+ case 'enableVirtualization':
825
+ this.enableVirtualization = newProp.enableVirtualization;
826
+ requiresRefresh = true;
827
+ break;
818
828
  case 'allowMultiSelection':
819
829
  if (this.allowMultiSelection) {
820
830
  addClass([this.element], CLS.CHECK_SELECT);
@@ -842,11 +852,11 @@ var FileManager = /** @class */ (function (_super) {
842
852
  break;
843
853
  case 'enableRtl':
844
854
  this.enableRtl = newProp.enableRtl;
845
- this.refresh();
855
+ requiresRefresh = true;
846
856
  break;
847
857
  case 'rootAliasName':
848
858
  this.rootAliasName = newProp.rootAliasName;
849
- this.refresh();
859
+ requiresRefresh = true;
850
860
  break;
851
861
  case 'height':
852
862
  height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;
@@ -921,11 +931,21 @@ var FileManager = /** @class */ (function (_super) {
921
931
  this.notify(events.sortByChange, {});
922
932
  break;
923
933
  case 'sortBy':
924
- refresh(this);
925
- this.notify(events.sortByChange, {});
926
934
  if (this.view === 'Details') {
935
+ var columns = this.detailsViewSettings.columns;
936
+ var isValidSortField = !isNullOrUndefined(columns) &&
937
+ columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;
938
+ if (!isValidSortField) {
939
+ return;
940
+ }
941
+ refresh(this);
942
+ this.notify(events.sortByChange, {});
927
943
  this.notify(events.sortColumn, {});
928
944
  }
945
+ else {
946
+ refresh(this);
947
+ this.notify(events.sortByChange, {});
948
+ }
929
949
  break;
930
950
  case 'popupTarget':
931
951
  if (this.uploadDialogObj) {
@@ -943,10 +963,13 @@ var FileManager = /** @class */ (function (_super) {
943
963
  break;
944
964
  case 'fileSystemData':
945
965
  this.fileSystemData = newProp.fileSystemData;
946
- this.refresh();
966
+ requiresRefresh = true;
947
967
  break;
948
968
  }
949
969
  }
970
+ if (requiresRefresh) {
971
+ this.refresh();
972
+ }
950
973
  };
951
974
  /* istanbul ignore next */
952
975
  FileManager.prototype.ajaxSettingSetModel = function (newProp) {
@@ -846,13 +846,18 @@ function readSuccess(parent, result, event) {
846
846
  * @private
847
847
  */
848
848
  function filterSuccess(parent, result, event, action) {
849
- if (!isNOU(result.files)) {
850
- parent.notify(event, result);
851
- var args = { action: action, result: result };
852
- parent.trigger('success', args);
849
+ try {
850
+ if (!isNOU(result.files)) {
851
+ parent.notify(event, result);
852
+ var args = { action: action, result: result };
853
+ parent.trigger('success', args);
854
+ }
855
+ else {
856
+ onFailure(parent, result, action);
857
+ }
853
858
  }
854
- else {
855
- onFailure(parent, result, action);
859
+ catch (error) {
860
+ handleCatchError(parent, error, action);
856
861
  }
857
862
  }
858
863
  /* istanbul ignore next */
@@ -866,51 +871,59 @@ function filterSuccess(parent, result, event, action) {
866
871
  * @private
867
872
  */
868
873
  function createSuccess(parent, result, itemName) {
869
- if (!isNOU(result.files)) {
870
- if (parent.dialogObj && parent.dialogObj.visible) {
871
- parent.dialogObj.hide();
872
- }
873
- parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];
874
- parent.breadcrumbbarModule.searchObj.value = '';
875
- var createEventArgs = {
876
- folderName: itemName,
877
- path: parent.path,
878
- parentFolder: parent.itemData
879
- };
880
- parent.trigger('folderCreate', createEventArgs);
881
- var args = { action: 'create', result: result };
882
- parent.trigger('success', args);
883
- parent.itemData = [getPathObject(parent)];
884
- read(parent, events.createEnd, parent.path);
885
- }
886
- else {
887
- if (result.error.code === '400') {
874
+ try {
875
+ if (!isNOU(result.files)) {
888
876
  if (parent.dialogObj && parent.dialogObj.visible) {
889
- var ele = select('#newname', parent.dialogObj.element);
890
- var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + ele.value + '"');
891
- ele.parentElement.nextElementSibling.innerHTML = error;
892
- }
893
- else {
894
- var result_2 = {
895
- files: null,
896
- error: {
897
- code: '400',
898
- message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + itemName + '"'),
899
- fileExists: null
900
- }
901
- };
902
- createDialog(parent, 'Error', result_2);
877
+ parent.dialogObj.hide();
903
878
  }
904
- var args = { action: 'create', error: result.error };
905
- parent.trigger('failure', args);
879
+ parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];
880
+ parent.breadcrumbbarModule.searchObj.value = '';
881
+ var createEventArgs = {
882
+ folderName: itemName,
883
+ path: parent.path,
884
+ parentFolder: parent.itemData
885
+ };
886
+ parent.trigger('folderCreate', createEventArgs);
887
+ var args = { action: 'create', result: result };
888
+ parent.trigger('success', args);
889
+ parent.itemData = [getPathObject(parent)];
890
+ read(parent, events.createEnd, parent.path);
906
891
  }
907
892
  else {
908
- if (parent.dialogObj && parent.dialogObj.visible) {
909
- parent.dialogObj.hide();
893
+ if (result.error.code === '400') {
894
+ if (parent.dialogObj && parent.dialogObj.visible) {
895
+ var ele = select('#newname', parent.dialogObj.element);
896
+ var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + ele.value + '"');
897
+ ele.parentElement.nextElementSibling.innerHTML = error;
898
+ }
899
+ else {
900
+ var result_2 = {
901
+ files: null,
902
+ error: {
903
+ code: '400',
904
+ message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '"' + itemName + '"'),
905
+ fileExists: null
906
+ }
907
+ };
908
+ createDialog(parent, 'Error', result_2);
909
+ }
910
+ var args = { action: 'create', error: result.error };
911
+ parent.trigger('failure', args);
912
+ }
913
+ else {
914
+ if (parent.dialogObj && parent.dialogObj.visible) {
915
+ parent.dialogObj.hide();
916
+ }
917
+ onFailure(parent, result, 'create');
910
918
  }
911
- onFailure(parent, result, 'create');
912
919
  }
913
920
  }
921
+ catch (error) {
922
+ if (parent.dialogObj && parent.dialogObj.visible) {
923
+ parent.dialogObj.hide();
924
+ }
925
+ handleCatchError(parent, error, 'create');
926
+ }
914
927
  }
915
928
  /* istanbul ignore next */
916
929
  /**
@@ -455,12 +455,11 @@ export declare function removeItemClass(parent: IFileManager, value: string): vo
455
455
  * @param {Element} scrollParent - specifies the scrolling target.
456
456
  * @param {IFileManager} parent - specifies the parent.
457
457
  * @param {string} nodeClass - specifies the node class.
458
- * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.
459
458
  * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.
460
459
  * @returns {void}
461
460
  * @private
462
461
  */
463
- export declare function scrollHandler(scrollParent: Element, parent: IFileManager, nodeClass: string, screenY: number, clientY: number): void;
462
+ export declare function scrollHandler(scrollParent: Element, parent: IFileManager, nodeClass: string, clientY: number): void;
464
463
  /**
465
464
  * Dragging handler
466
465
  *
@@ -602,9 +602,8 @@ export function getSortedData(parent, items) {
602
602
  */
603
603
  export function getObject(parent, key, value) {
604
604
  var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);
605
- var query = new Query().where(key, 'equal', value);
606
- var lists = new DataManager(currFiles).executeLocal(query);
607
- return lists[0];
605
+ var result = currFiles.filter(function (data) { return data[key].toString() === value; });
606
+ return result.length > 0 ? result[0] : null;
608
607
  }
609
608
  /**
610
609
  * Creates empty element
@@ -1289,16 +1288,15 @@ export function removeItemClass(parent, value) {
1289
1288
  * @param {Element} scrollParent - specifies the scrolling target.
1290
1289
  * @param {IFileManager} parent - specifies the parent.
1291
1290
  * @param {string} nodeClass - specifies the node class.
1292
- * @param {number} screenY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the entire screen.
1293
1291
  * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.
1294
1292
  * @returns {void}
1295
1293
  * @private
1296
1294
  */
1297
- export function scrollHandler(scrollParent, parent, nodeClass, screenY, clientY) {
1295
+ export function scrollHandler(scrollParent, parent, nodeClass, clientY) {
1298
1296
  var position;
1299
1297
  var elementData = scrollParent.getBoundingClientRect();
1300
1298
  var node = select('.' + nodeClass, scrollParent);
1301
- if ((screenY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {
1299
+ if ((clientY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {
1302
1300
  position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;
1303
1301
  scrollParent.scrollBy(0, position);
1304
1302
  }
@@ -1335,7 +1333,7 @@ export function draggingHandler(parent, args) {
1335
1333
  /* istanbul ignore next */
1336
1334
  parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);
1337
1335
  scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;
1338
- scrollHandler(scrollParent, parent, 'e-level-2', args.event.screenY, args.event.y);
1336
+ scrollHandler(scrollParent, parent, 'e-level-2', args.event.y);
1339
1337
  }
1340
1338
  else if (parent.targetModule === 'detailsview') {
1341
1339
  node = closest(args.target, 'tr');
@@ -1347,7 +1345,7 @@ export function draggingHandler(parent, args) {
1347
1345
  }
1348
1346
  canDrop = true;
1349
1347
  scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');
1350
- scrollHandler(scrollParent, parent, 'e-row', args.event.screenY, args.event.y);
1348
+ scrollHandler(scrollParent, parent, 'e-row', args.event.y);
1351
1349
  }
1352
1350
  else if (parent.targetModule === 'largeiconsview') {
1353
1351
  node = closest(args.target, 'li');
@@ -1356,7 +1354,7 @@ export function draggingHandler(parent, args) {
1356
1354
  }
1357
1355
  canDrop = true;
1358
1356
  scrollParent = parent.largeiconsviewModule.element.firstElementChild;
1359
- scrollHandler(scrollParent, parent, 'e-large-icon', args.event.screenY, args.event.y);
1357
+ scrollHandler(scrollParent, parent, 'e-large-icon', args.event.y);
1360
1358
  /* istanbul ignore next */
1361
1359
  }
1362
1360
  else if (parent.targetModule === 'breadcrumbbar') {
@@ -27,6 +27,7 @@ export declare class DetailsView {
27
27
  private isRendered;
28
28
  private isLoaded;
29
29
  private isNameWidth;
30
+ private isMultiSelect;
30
31
  gridObj: Grid;
31
32
  pasteOperation: boolean;
32
33
  uploadOperation: boolean;
@@ -39,6 +39,7 @@ var DetailsView = /** @class */ (function () {
39
39
  this.isRendered = true;
40
40
  this.isLoaded = false;
41
41
  this.isNameWidth = false;
42
+ this.isMultiSelect = false;
42
43
  this.pasteOperation = false;
43
44
  this.uploadOperation = false;
44
45
  Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);
@@ -86,6 +87,7 @@ var DetailsView = /** @class */ (function () {
86
87
  }
87
88
  /* istanbul ignore next */
88
89
  DetailsView.prototype.render = function (args) {
90
+ var _this = this;
89
91
  showSpinner(this.parent.element);
90
92
  if (this.parent.view === 'Details') {
91
93
  removeClass([this.parent.element], CLS.MULTI_SELECT);
@@ -93,7 +95,9 @@ var DetailsView = /** @class */ (function () {
93
95
  this.checkNameWidth();
94
96
  var columns = this.getColumns();
95
97
  var sortSettings = void 0;
96
- if (this.parent.isMobile) {
98
+ var isValidSortField = !isNullOrUndefined(columns) &&
99
+ columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;
100
+ if (this.parent.isMobile || !isValidSortField) {
97
101
  sortSettings = [];
98
102
  }
99
103
  else {
@@ -304,7 +308,9 @@ var DetailsView = /** @class */ (function () {
304
308
  if (textEle) {
305
309
  var name_1 = getValue('name', args.data);
306
310
  var type = getValue('type', args.data);
307
- textEle.innerHTML = name_1.substr(0, name_1.length - type.length);
311
+ if (name_1.indexOf(type) !== -1) {
312
+ textEle.innerHTML = name_1.substr(0, name_1.length - type.length);
313
+ }
308
314
  }
309
315
  }
310
316
  if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {
@@ -567,6 +573,7 @@ var DetailsView = /** @class */ (function () {
567
573
  case 'showHiddenItems':
568
574
  read(this.parent, events.pathChanged, this.parent.path);
569
575
  break;
576
+ case 'showItemCheckBoxes':
570
577
  case 'allowMultiSelection':
571
578
  if (!isNullOrUndefined(this.gridObj)) {
572
579
  this.currentSelectedItem = this.parent.selectedItems;
@@ -1130,6 +1137,17 @@ var DetailsView = /** @class */ (function () {
1130
1137
  };
1131
1138
  this.parent.trigger('fileSelection', eventArgs);
1132
1139
  args.cancel = eventArgs.cancel;
1140
+ if (!this.isMultiSelect) {
1141
+ this.isMultiSelect = true;
1142
+ if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {
1143
+ args.cancel = true;
1144
+ var rowIndex = (args && args.rowIndexes)
1145
+ ? args.rowIndexes[args.rowIndexes.length - 1]
1146
+ : args.rowIndex;
1147
+ this.gridObj.selectRow(rowIndex);
1148
+ }
1149
+ this.isMultiSelect = false;
1150
+ }
1133
1151
  };
1134
1152
  /* istanbul ignore next */
1135
1153
  DetailsView.prototype.onSelected = function (args) {
@@ -269,7 +269,9 @@ var LargeIconsView = /** @class */ (function () {
269
269
  var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);
270
270
  var txt = getValue('name', args.curData);
271
271
  var type = getValue('type', args.curData);
272
- textEle.innerHTML = txt.substr(0, txt.length - type.length);
272
+ if (txt.indexOf(type) !== -1) {
273
+ textEle.innerHTML = txt.substr(0, txt.length - type.length);
274
+ }
273
275
  }
274
276
  this.renderCheckbox(args);
275
277
  var eventArgs = {
@@ -637,6 +639,7 @@ var LargeIconsView = /** @class */ (function () {
637
639
  read(this.parent, events.pathChanged, this.parent.path);
638
640
  break;
639
641
  case 'allowMultiSelection':
642
+ case 'showItemCheckBoxes':
640
643
  if (this.parent.view !== 'LargeIcons') {
641
644
  break;
642
645
  }
@@ -692,7 +695,6 @@ var LargeIconsView = /** @class */ (function () {
692
695
  if (toBind) {
693
696
  this.clickObj = new Touch(this.element, {
694
697
  tap: function (eve) {
695
- eve.originalEvent.preventDefault();
696
698
  if (_this.parent.isDevice) {
697
699
  _this.tapCount = eve.tapCount;
698
700
  _this.tapEvent = eve;