@syncfusion/ej2-filemanager 20.1.47 → 20.1.52-10459

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 (203) hide show
  1. package/.eslintrc.json +20 -3
  2. package/README.md +54 -43
  3. package/dist/ej2-filemanager.min.js +1 -0
  4. package/dist/ej2-filemanager.umd.min.js +1 -10
  5. package/dist/ej2-filemanager.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-filemanager.es2015.js +2353 -659
  7. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  8. package/dist/es6/ej2-filemanager.es5.js +2422 -709
  9. package/dist/es6/ej2-filemanager.es5.js.map +1 -1
  10. package/dist/global/ej2-filemanager.min.js +1 -10
  11. package/dist/global/ej2-filemanager.min.js.map +1 -1
  12. package/dist/global/index.d.ts +0 -9
  13. package/helpers/e2e/filemanagerHelper.js +183 -166
  14. package/package.json +71 -71
  15. package/src/file-manager/actions/breadcrumb-bar.js +1 -5
  16. package/src/file-manager/actions/index.d.ts +1 -0
  17. package/src/file-manager/actions/index.js +1 -0
  18. package/src/file-manager/actions/toolbar.d.ts +1 -0
  19. package/src/file-manager/actions/toolbar.js +129 -17
  20. package/src/file-manager/actions/virtualization.d.ts +93 -0
  21. package/src/file-manager/actions/virtualization.js +279 -0
  22. package/src/file-manager/base/file-manager-model.d.ts +154 -28
  23. package/src/file-manager/base/file-manager.d.ts +176 -27
  24. package/src/file-manager/base/file-manager.js +244 -28
  25. package/src/file-manager/base/interface.d.ts +329 -3
  26. package/src/file-manager/base/interface.js +0 -1
  27. package/src/file-manager/common/operations.d.ts +7 -0
  28. package/src/file-manager/common/operations.js +830 -185
  29. package/src/file-manager/common/utility.d.ts +46 -3
  30. package/src/file-manager/common/utility.js +249 -73
  31. package/src/file-manager/index.d.ts +1 -0
  32. package/src/file-manager/index.js +1 -0
  33. package/src/file-manager/layout/details-view.d.ts +10 -0
  34. package/src/file-manager/layout/details-view.js +203 -94
  35. package/src/file-manager/layout/large-icons-view.d.ts +4 -2
  36. package/src/file-manager/layout/large-icons-view.js +122 -73
  37. package/src/file-manager/layout/navigation-pane.d.ts +2 -0
  38. package/src/file-manager/layout/navigation-pane.js +97 -73
  39. package/src/file-manager/models/column-model.d.ts +23 -5
  40. package/src/file-manager/models/column.d.ts +21 -2
  41. package/src/file-manager/models/column.js +6 -0
  42. package/src/file-manager/models/default-locale.js +0 -1
  43. package/src/file-manager/models/details-view-settings-model.d.ts +1 -1
  44. package/src/file-manager/models/details-view-settings.js +8 -3
  45. package/src/file-manager/models/search-settings.d.ts +5 -0
  46. package/src/file-manager/models/toolbar-settings-model.d.ts +177 -2
  47. package/src/file-manager/models/toolbar-settings.d.ts +157 -2
  48. package/src/file-manager/models/toolbar-settings.js +64 -2
  49. package/src/file-manager/models/upload-settings-model.d.ts +13 -0
  50. package/src/file-manager/models/upload-settings.d.ts +12 -0
  51. package/src/file-manager/models/upload-settings.js +3 -0
  52. package/src/file-manager/pop-up/context-menu.d.ts +2 -1
  53. package/src/file-manager/pop-up/context-menu.js +111 -36
  54. package/src/file-manager/pop-up/dialog.d.ts +1 -2
  55. package/src/file-manager/pop-up/dialog.js +19 -40
  56. package/src/global.js +1 -1
  57. package/styles/bootstrap-dark-lite.css +1058 -0
  58. package/styles/bootstrap-dark-lite.scss +16 -0
  59. package/styles/bootstrap-dark.css +371 -665
  60. package/styles/bootstrap-dark.scss +17 -1
  61. package/styles/bootstrap-lite.css +1040 -0
  62. package/styles/bootstrap-lite.scss +16 -0
  63. package/styles/bootstrap.css +353 -644
  64. package/styles/bootstrap.scss +17 -1
  65. package/styles/bootstrap4-lite.css +1068 -0
  66. package/styles/bootstrap4-lite.scss +16 -0
  67. package/styles/bootstrap4.css +381 -680
  68. package/styles/bootstrap4.scss +17 -1
  69. package/styles/bootstrap5-dark-lite.css +1078 -0
  70. package/styles/bootstrap5-dark-lite.scss +16 -0
  71. package/styles/bootstrap5-dark.css +376 -694
  72. package/styles/bootstrap5-dark.scss +17 -1
  73. package/styles/bootstrap5-lite.css +1078 -0
  74. package/styles/bootstrap5-lite.scss +16 -0
  75. package/styles/bootstrap5.3-lite.css +1035 -0
  76. package/styles/bootstrap5.3-lite.scss +16 -0
  77. package/styles/bootstrap5.3.css +1603 -0
  78. package/styles/bootstrap5.3.scss +17 -0
  79. package/styles/bootstrap5.css +376 -694
  80. package/styles/bootstrap5.scss +17 -1
  81. package/styles/fabric-dark-lite.css +1039 -0
  82. package/styles/fabric-dark-lite.scss +16 -0
  83. package/styles/fabric-dark.css +358 -642
  84. package/styles/fabric-dark.scss +17 -1
  85. package/styles/fabric-lite.css +1039 -0
  86. package/styles/fabric-lite.scss +16 -0
  87. package/styles/fabric.css +357 -641
  88. package/styles/fabric.scss +17 -1
  89. package/styles/file-manager/_all.scss +1 -1
  90. package/styles/file-manager/_bds-definition.scss +236 -0
  91. package/styles/file-manager/_bigger.scss +758 -0
  92. package/styles/file-manager/_bootstrap-dark-definition.scss +6 -2
  93. package/styles/file-manager/_bootstrap-definition.scss +6 -2
  94. package/styles/file-manager/_bootstrap4-definition.scss +6 -2
  95. package/styles/file-manager/_bootstrap5-definition.scss +20 -15
  96. package/styles/file-manager/_bootstrap5.3-definition.scss +242 -0
  97. package/styles/file-manager/_fabric-dark-definition.scss +6 -2
  98. package/styles/file-manager/_fabric-definition.scss +6 -2
  99. package/styles/file-manager/_fluent-definition.scss +20 -16
  100. package/styles/file-manager/_fluent2-definition.scss +255 -0
  101. package/styles/file-manager/_fusionnew-definition.scss +241 -0
  102. package/styles/file-manager/_highcontrast-definition.scss +6 -2
  103. package/styles/file-manager/_highcontrast-light-definition.scss +6 -2
  104. package/styles/file-manager/_layout.scss +367 -921
  105. package/styles/file-manager/_material-dark-definition.scss +7 -2
  106. package/styles/file-manager/_material-definition.scss +7 -2
  107. package/styles/file-manager/_material3-dark-definition.scss +1 -0
  108. package/styles/file-manager/_material3-definition.scss +235 -0
  109. package/styles/file-manager/_tailwind-definition.scss +20 -16
  110. package/styles/file-manager/_theme.scss +126 -102
  111. package/styles/file-manager/bootstrap-dark.css +371 -665
  112. package/styles/file-manager/bootstrap-dark.scss +2 -1
  113. package/styles/file-manager/bootstrap.css +353 -644
  114. package/styles/file-manager/bootstrap.scss +2 -1
  115. package/styles/file-manager/bootstrap4.css +381 -680
  116. package/styles/file-manager/bootstrap4.scss +2 -1
  117. package/styles/file-manager/bootstrap5-dark.css +376 -694
  118. package/styles/file-manager/bootstrap5-dark.scss +2 -1
  119. package/styles/file-manager/bootstrap5.3.css +1603 -0
  120. package/styles/file-manager/bootstrap5.3.scss +17 -0
  121. package/styles/file-manager/bootstrap5.css +376 -694
  122. package/styles/file-manager/bootstrap5.scss +2 -1
  123. package/styles/file-manager/fabric-dark.css +358 -642
  124. package/styles/file-manager/fabric-dark.scss +2 -1
  125. package/styles/file-manager/fabric.css +357 -641
  126. package/styles/file-manager/fabric.scss +2 -1
  127. package/styles/file-manager/fluent-dark.css +359 -641
  128. package/styles/file-manager/fluent-dark.scss +2 -1
  129. package/styles/file-manager/fluent.css +358 -641
  130. package/styles/file-manager/fluent.scss +2 -1
  131. package/styles/file-manager/fluent2.css +1886 -0
  132. package/styles/file-manager/fluent2.scss +17 -0
  133. package/styles/file-manager/highcontrast-light.css +354 -644
  134. package/styles/file-manager/highcontrast-light.scss +2 -1
  135. package/styles/file-manager/highcontrast.css +377 -647
  136. package/styles/file-manager/highcontrast.scss +2 -1
  137. package/styles/file-manager/icons/_bds.scss +235 -0
  138. package/styles/file-manager/icons/_bootstrap.scss +0 -1
  139. package/styles/file-manager/icons/_bootstrap4.scss +0 -1
  140. package/styles/file-manager/icons/_bootstrap5.3.scss +235 -0
  141. package/styles/file-manager/icons/_fabric-dark.scss +0 -1
  142. package/styles/file-manager/icons/_fabric.scss +0 -1
  143. package/styles/file-manager/icons/_fluent2.scss +235 -0
  144. package/styles/file-manager/icons/_fusionnew.scss +235 -0
  145. package/styles/file-manager/icons/_material3-dark.scss +1 -0
  146. package/styles/file-manager/icons/_material3.scss +235 -0
  147. package/styles/file-manager/material-dark.css +392 -671
  148. package/styles/file-manager/material-dark.scss +2 -1
  149. package/styles/file-manager/material.css +391 -654
  150. package/styles/file-manager/material.scss +2 -1
  151. package/styles/file-manager/material3-dark.css +1633 -0
  152. package/styles/file-manager/material3-dark.scss +18 -0
  153. package/styles/file-manager/material3.css +1635 -0
  154. package/styles/file-manager/material3.scss +18 -0
  155. package/styles/file-manager/tailwind-dark.css +347 -664
  156. package/styles/file-manager/tailwind-dark.scss +2 -1
  157. package/styles/file-manager/tailwind.css +347 -664
  158. package/styles/file-manager/tailwind.scss +2 -1
  159. package/styles/fluent-dark-lite.css +1037 -0
  160. package/styles/fluent-dark-lite.scss +16 -0
  161. package/styles/fluent-dark.css +359 -641
  162. package/styles/fluent-dark.scss +17 -1
  163. package/styles/fluent-lite.css +1036 -0
  164. package/styles/fluent-lite.scss +16 -0
  165. package/styles/fluent.css +358 -641
  166. package/styles/fluent.scss +17 -1
  167. package/styles/fluent2-lite.css +1272 -0
  168. package/styles/fluent2-lite.scss +16 -0
  169. package/styles/fluent2.css +1886 -0
  170. package/styles/fluent2.scss +17 -0
  171. package/styles/highcontrast-light-lite.css +1039 -0
  172. package/styles/highcontrast-light-lite.scss +16 -0
  173. package/styles/highcontrast-light.css +354 -644
  174. package/styles/highcontrast-light.scss +17 -1
  175. package/styles/highcontrast-lite.css +1059 -0
  176. package/styles/highcontrast-lite.scss +16 -0
  177. package/styles/highcontrast.css +377 -647
  178. package/styles/highcontrast.scss +17 -1
  179. package/styles/material-dark-lite.css +1092 -0
  180. package/styles/material-dark-lite.scss +16 -0
  181. package/styles/material-dark.css +392 -671
  182. package/styles/material-dark.scss +17 -1
  183. package/styles/material-lite.css +1097 -0
  184. package/styles/material-lite.scss +16 -0
  185. package/styles/material.css +391 -654
  186. package/styles/material.scss +17 -1
  187. package/styles/material3-dark-lite.css +1090 -0
  188. package/styles/material3-dark-lite.scss +16 -0
  189. package/styles/material3-dark.css +1633 -0
  190. package/styles/material3-dark.scss +19 -0
  191. package/styles/material3-lite.css +1092 -0
  192. package/styles/material3-lite.scss +16 -0
  193. package/styles/material3.css +1635 -0
  194. package/styles/material3.scss +19 -0
  195. package/styles/tailwind-dark-lite.css +1060 -0
  196. package/styles/tailwind-dark-lite.scss +16 -0
  197. package/styles/tailwind-dark.css +347 -664
  198. package/styles/tailwind-dark.scss +17 -1
  199. package/styles/tailwind-lite.css +1060 -0
  200. package/styles/tailwind-lite.scss +16 -0
  201. package/styles/tailwind.css +347 -664
  202. package/styles/tailwind.scss +17 -1
  203. package/CHANGELOG.md +0 -404
@@ -12,8 +12,9 @@ export declare class LargeIconsView {
12
12
  private keyboardDownModule;
13
13
  private keyConfigs;
14
14
  private isInteraction;
15
- private itemList;
15
+ itemList: HTMLElement[];
16
16
  items: Object[];
17
+ allItems: Object[];
17
18
  private clickObj;
18
19
  private perRow;
19
20
  private startItem;
@@ -23,6 +24,7 @@ export declare class LargeIconsView {
23
24
  private count;
24
25
  private isRendered;
25
26
  private tapCount;
27
+ private isSelectAllCalled;
26
28
  private tapEvent;
27
29
  private isPasteOperation;
28
30
  private dragObj;
@@ -35,6 +37,7 @@ export declare class LargeIconsView {
35
37
  */
36
38
  constructor(parent?: IFileManager);
37
39
  private render;
40
+ private comparer;
38
41
  private preventImgDrag;
39
42
  private createDragObj;
40
43
  dragHelper(args: {
@@ -49,7 +52,6 @@ export declare class LargeIconsView {
49
52
  * @private
50
53
  */
51
54
  private getModuleName;
52
- private adjustHeight;
53
55
  private onItemCreated;
54
56
  private renderCheckbox;
55
57
  private onLayoutChange;
@@ -2,7 +2,7 @@ import { ListBase } from '@syncfusion/ej2-lists';
2
2
  import { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable } from '@syncfusion/ej2-base';
3
3
  import { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';
4
4
  import { getValue, setValue, remove } from '@syncfusion/ej2-base';
5
- import { DataManager, Query } from '@syncfusion/ej2-data';
5
+ import { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';
6
6
  import { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';
7
7
  import * as events from '../base/constant';
8
8
  import * as CLS from '../base/classes';
@@ -31,6 +31,7 @@ var LargeIconsView = /** @class */ (function () {
31
31
  this.count = 0;
32
32
  this.isRendered = true;
33
33
  this.tapCount = 0;
34
+ this.isSelectAllCalled = false;
34
35
  this.isPasteOperation = false;
35
36
  this.isInteracted = true;
36
37
  this.parent = parent;
@@ -72,9 +73,9 @@ var LargeIconsView = /** @class */ (function () {
72
73
  altEnter: 'alt+enter',
73
74
  esc: 'escape',
74
75
  del: 'delete',
75
- ctrlX: 'ctrl+x',
76
- ctrlC: 'ctrl+c',
77
- ctrlV: 'ctrl+v',
76
+ ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',
77
+ ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',
78
+ ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',
78
79
  f2: 'f2',
79
80
  shiftdel: 'shift+delete',
80
81
  back: 'backspace',
@@ -111,14 +112,22 @@ var LargeIconsView = /** @class */ (function () {
111
112
  };
112
113
  this.items = [];
113
114
  this.items = this.renderList(args);
114
- this.items = getSortedData(this.parent, this.items);
115
- // eslint-disable-next-line
115
+ if (this.parent.sortComparer && this.parent.sortBy !== 'None') {
116
+ this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));
117
+ }
118
+ else {
119
+ this.items = this.allItems = getSortedData(this.parent, this.items);
120
+ }
121
+ iconsView.classList.remove(CLS.DISPLAY_NONE);
122
+ if (this.parent.enableVirtualization && this.allItems.length > 0) {
123
+ this.parent.virtualizationModule.setUIVirtualization();
124
+ }
116
125
  this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);
117
126
  this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));
118
127
  this.element.appendChild(this.listElements);
128
+ this.listElements.setAttribute('aria-label', 'listbox');
119
129
  this.preventImgDrag();
120
130
  this.createDragObj();
121
- iconsView.classList.remove(CLS.DISPLAY_NONE);
122
131
  if (this.itemList.length === 0) {
123
132
  var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);
124
133
  this.element.removeChild(emptyList);
@@ -148,11 +157,14 @@ var LargeIconsView = /** @class */ (function () {
148
157
  for (var i = 0; i < activeEle.length; i++) {
149
158
  activeEle[i].setAttribute('aria-selected', 'true');
150
159
  }
151
- this.adjustHeight();
152
160
  this.element.style.maxHeight = '100%';
153
161
  this.getItemCount();
154
162
  this.addEventListener();
155
163
  this.wireEvents();
164
+ if (this.parent.enableVirtualization && this.allItems.length > 0) {
165
+ this.parent.virtualizationModule.setUlElementHeight();
166
+ this.parent.virtualizationModule.wireScrollEvent(false);
167
+ }
156
168
  this.isRendered = true;
157
169
  hideSpinner(this.parent.element);
158
170
  if (this.parent.selectedItems.length) {
@@ -160,6 +172,14 @@ var LargeIconsView = /** @class */ (function () {
160
172
  }
161
173
  }
162
174
  };
175
+ LargeIconsView.prototype.comparer = function (x, y) {
176
+ if (this.parent.sortOrder === 'Descending') {
177
+ var z = x;
178
+ x = y;
179
+ y = z;
180
+ }
181
+ return this.parent.sortComparer(x, y);
182
+ };
163
183
  LargeIconsView.prototype.preventImgDrag = function () {
164
184
  var i = 0;
165
185
  while (i < this.itemList.length) {
@@ -172,7 +192,7 @@ var LargeIconsView = /** @class */ (function () {
172
192
  };
173
193
  LargeIconsView.prototype.createDragObj = function () {
174
194
  var _this = this;
175
- if (!this.parent.isMobile && this.listObj) {
195
+ if (this.listObj) {
176
196
  if (this.parent.allowDragAndDrop) {
177
197
  if (this.dragObj) {
178
198
  this.dragObj.destroy();
@@ -180,7 +200,7 @@ var LargeIconsView = /** @class */ (function () {
180
200
  this.dragObj = new Draggable(this.listElements, {
181
201
  enableTailMode: true,
182
202
  distance: 5,
183
- enableAutoScroll: true,
203
+ enableAutoScroll: false,
184
204
  dragTarget: '.' + CLS.LARGE_ICON,
185
205
  helper: this.dragHelper.bind(this),
186
206
  cursorAt: this.parent.dragCursorPosition,
@@ -211,8 +231,7 @@ var LargeIconsView = /** @class */ (function () {
211
231
  this.parent.activeElements = [];
212
232
  this.parent.dragData = [];
213
233
  for (var i = 0; i < activeEle.length; i++) {
214
- // eslint-disable-next-line
215
- this.parent.dragData.push(this.getItemObject(activeEle[i]));
234
+ this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));
216
235
  this.parent.activeElements.push(activeEle[i]);
217
236
  }
218
237
  getModule(this.parent, dragLi);
@@ -223,10 +242,8 @@ var LargeIconsView = /** @class */ (function () {
223
242
  LargeIconsView.prototype.onDropInit = function (args) {
224
243
  if (this.parent.targetModule === this.getModuleName()) {
225
244
  var dropLi = closest(args.target, '.e-list-item');
226
- // eslint-disable-next-line
227
245
  var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);
228
246
  if (dropLi) {
229
- // eslint-disable-next-line
230
247
  var info = this.getItemObject(dropLi);
231
248
  this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);
232
249
  this.parent.dropData = info.isFile ? cwdData : info;
@@ -246,11 +263,6 @@ var LargeIconsView = /** @class */ (function () {
246
263
  LargeIconsView.prototype.getModuleName = function () {
247
264
  return 'largeiconsview';
248
265
  };
249
- LargeIconsView.prototype.adjustHeight = function () {
250
- var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);
251
- var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);
252
- this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';
253
- };
254
266
  LargeIconsView.prototype.onItemCreated = function (args) {
255
267
  args.item.removeAttribute('aria-level');
256
268
  if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {
@@ -268,7 +280,7 @@ var LargeIconsView = /** @class */ (function () {
268
280
  this.parent.trigger('fileLoad', eventArgs);
269
281
  };
270
282
  LargeIconsView.prototype.renderCheckbox = function (args) {
271
- if (!this.parent.allowMultiSelection) {
283
+ if (!this.parent.showItemCheckBoxes) {
272
284
  return;
273
285
  }
274
286
  var checkElement = createCheckBox(createElement, false, {
@@ -277,11 +289,15 @@ var LargeIconsView = /** @class */ (function () {
277
289
  });
278
290
  checkElement.setAttribute('role', 'checkbox');
279
291
  checkElement.setAttribute('aria-checked', 'false');
292
+ checkElement.setAttribute('aria-label', 'checkbox');
280
293
  args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);
281
294
  };
282
295
  LargeIconsView.prototype.onLayoutChange = function (args) {
283
296
  if (this.parent.view === 'LargeIcons') {
284
297
  this.destroy();
298
+ if (this.parent.enableVirtualization) {
299
+ this.parent.setProperties({ selectedItems: [] }, true);
300
+ }
285
301
  this.render(args);
286
302
  /* istanbul ignore next */
287
303
  if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&
@@ -314,10 +330,8 @@ var LargeIconsView = /** @class */ (function () {
314
330
  }
315
331
  }
316
332
  };
317
- // eslint-disable-next-line
318
333
  LargeIconsView.prototype.renderList = function (args) {
319
334
  var i = 0;
320
- // eslint-disable-next-line
321
335
  var items = JSON.parse(JSON.stringify(args.files));
322
336
  while (i < items.length) {
323
337
  var icon = fileType(items[i]);
@@ -354,6 +368,7 @@ var LargeIconsView = /** @class */ (function () {
354
368
  this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);
355
369
  this.parent.createdItem = null;
356
370
  this.parent.largeiconsviewModule.element.focus();
371
+ this.parent.activeModule = 'largeiconsview';
357
372
  };
358
373
  LargeIconsView.prototype.onSelectedData = function () {
359
374
  if (this.parent.activeModule === 'largeiconsview') {
@@ -398,7 +413,6 @@ var LargeIconsView = /** @class */ (function () {
398
413
  if (this.parent.renamedItem) {
399
414
  this.clearSelect();
400
415
  this.addSelection(this.parent.renamedItem);
401
- this.parent.renamedItem = null;
402
416
  }
403
417
  }
404
418
  };
@@ -448,7 +462,6 @@ var LargeIconsView = /** @class */ (function () {
448
462
  if (this.parent.view !== 'LargeIcons') {
449
463
  return;
450
464
  }
451
- this.adjustHeight();
452
465
  };
453
466
  LargeIconsView.prototype.onUpdateSelectionData = function () {
454
467
  if (this.parent.view !== 'LargeIcons') {
@@ -540,7 +553,6 @@ var LargeIconsView = /** @class */ (function () {
540
553
  this.parent.on(events.filterEnd, this.onPathChanged, this);
541
554
  };
542
555
  LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };
543
- // eslint-disable-next-line
544
556
  LargeIconsView.prototype.onMenuItemData = function (args) {
545
557
  if (this.parent.activeModule === this.getModuleName()) {
546
558
  var ele = closest(args.target, 'li');
@@ -577,7 +589,8 @@ var LargeIconsView = /** @class */ (function () {
577
589
  LargeIconsView.prototype.onpasteEnd = function (args) {
578
590
  if (this.parent.view === 'LargeIcons') {
579
591
  this.isPasteOperation = true;
580
- if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {
592
+ if (this.parent.path === this.parent.destinationPath ||
593
+ this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {
581
594
  this.onPathChanged(args);
582
595
  }
583
596
  }
@@ -599,9 +612,6 @@ var LargeIconsView = /** @class */ (function () {
599
612
  case 'allowDragAndDrop':
600
613
  this.createDragObj();
601
614
  break;
602
- case 'height':
603
- this.adjustHeight();
604
- break;
605
615
  case 'selectedItems':
606
616
  this.isInteraction = false;
607
617
  this.isInteracted = false;
@@ -646,6 +656,8 @@ var LargeIconsView = /** @class */ (function () {
646
656
  if (this.listObj) {
647
657
  this.unWireEvents();
648
658
  }
659
+ this.startItem = null;
660
+ this.listElements = null;
649
661
  };
650
662
  LargeIconsView.prototype.wireEvents = function () {
651
663
  this.wireClickEvent(true);
@@ -676,38 +688,37 @@ var LargeIconsView = /** @class */ (function () {
676
688
  }
677
689
  };
678
690
  LargeIconsView.prototype.wireClickEvent = function (toBind) {
691
+ var _this = this;
679
692
  if (toBind) {
680
- // eslint-disable-next-line
681
- var proxy_1 = this;
682
693
  this.clickObj = new Touch(this.element, {
683
694
  tap: function (eve) {
684
695
  eve.originalEvent.preventDefault();
685
- if (proxy_1.parent.isDevice) {
686
- proxy_1.tapCount = eve.tapCount;
687
- proxy_1.tapEvent = eve;
696
+ if (_this.parent.isDevice) {
697
+ _this.tapCount = eve.tapCount;
698
+ _this.tapEvent = eve;
688
699
  setTimeout(function () {
689
- if (proxy_1.tapCount > 0) {
690
- proxy_1.doTapAction(proxy_1.tapEvent);
700
+ if (_this.tapCount > 0) {
701
+ _this.doTapAction(_this.tapEvent);
691
702
  }
692
- proxy_1.tapCount = 0;
703
+ _this.tapCount = 0;
693
704
  }, 350);
694
705
  }
695
706
  else {
696
707
  if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {
697
- proxy_1.dblClickHandler(eve);
708
+ _this.dblClickHandler(eve);
698
709
  }
699
710
  else {
700
- proxy_1.clickHandler(eve);
711
+ _this.clickHandler(eve);
701
712
  }
702
713
  }
703
714
  },
704
715
  tapHold: function (e) {
705
- if (proxy_1.parent.isDevice) {
706
- proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;
707
- if (proxy_1.parent.allowMultiSelection) {
708
- addClass([proxy_1.parent.element], CLS.MULTI_SELECT);
716
+ if (_this.parent.isDevice) {
717
+ _this.multiSelect = _this.parent.allowMultiSelection ? true : false;
718
+ if (_this.parent.allowMultiSelection) {
719
+ addClass([_this.parent.element], CLS.MULTI_SELECT);
709
720
  }
710
- proxy_1.clickHandler(e);
721
+ _this.clickHandler(e);
711
722
  }
712
723
  }
713
724
  });
@@ -758,6 +769,7 @@ var LargeIconsView = /** @class */ (function () {
758
769
  this.parent.isFile = false;
759
770
  var action = 'select';
760
771
  if (e.which === 3 && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {
772
+ this.addActive(item);
761
773
  this.updateType(item);
762
774
  return;
763
775
  }
@@ -766,6 +778,9 @@ var LargeIconsView = /** @class */ (function () {
766
778
  && (e.ctrlKey || target.classList.contains(CLS.CHECK))) {
767
779
  action = 'unselect';
768
780
  }
781
+ if (e.ctrlKey && e.shiftKey) {
782
+ this.isSelectAllCalled = true;
783
+ }
769
784
  var fileSelectionArgs = this.triggerSelection(action, item);
770
785
  if (fileSelectionArgs.cancel !== true) {
771
786
  if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))
@@ -812,9 +827,13 @@ var LargeIconsView = /** @class */ (function () {
812
827
  }
813
828
  }
814
829
  else {
830
+ if (this.parent.selectedItems.length === this.itemList.length) {
831
+ this.isSelectAllCalled = true;
832
+ }
815
833
  this.clearSelection();
816
834
  }
817
835
  if (!isNOU(item)) {
836
+ this.isSelectAllCalled = false;
818
837
  this.updateType(item);
819
838
  }
820
839
  };
@@ -841,7 +860,6 @@ var LargeIconsView = /** @class */ (function () {
841
860
  this.parent.isFile = false;
842
861
  if (!isNOU(item)) {
843
862
  this.updateType(item);
844
- // eslint-disable-next-line
845
863
  var details_1 = this.getItemObject(item);
846
864
  if (!hasReadAccess(details_1)) {
847
865
  createDeniedDialog(this.parent, details_1, events.permissionRead);
@@ -855,6 +873,7 @@ var LargeIconsView = /** @class */ (function () {
855
873
  var val = _this.parent.breadcrumbbarModule.searchObj.element.value;
856
874
  if (val === '' && !_this.parent.isFiltered) {
857
875
  var id = getValue('id', details_1);
876
+ _this.parent.oldPath = _this.parent.path;
858
877
  var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';
859
878
  _this.parent.setProperties({ path: newPath }, true);
860
879
  _this.parent.pathNames.push(text);
@@ -884,7 +903,6 @@ var LargeIconsView = /** @class */ (function () {
884
903
  this.parent.isFile = isNOU(folder) ? true : false;
885
904
  };
886
905
  /* istanbul ignore next */
887
- // eslint:disable-next-line
888
906
  LargeIconsView.prototype.keydownActionHandler = function (e) {
889
907
  if (!this.isRendered) {
890
908
  return;
@@ -933,8 +951,8 @@ var LargeIconsView = /** @class */ (function () {
933
951
  }
934
952
  };
935
953
  /* istanbul ignore next */
936
- // eslint:disable-next-line
937
954
  LargeIconsView.prototype.keyActionHandler = function (e) {
955
+ var _this = this;
938
956
  if (!this.isRendered) {
939
957
  return;
940
958
  }
@@ -943,10 +961,28 @@ var LargeIconsView = /** @class */ (function () {
943
961
  var lastItem = this.getLastItem();
944
962
  switch (e.action) {
945
963
  case 'end':
946
- this.navigateItem(lastItem);
964
+ if (this.parent.enableVirtualization) {
965
+ this.clearSelect();
966
+ this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);
967
+ setTimeout(function () {
968
+ _this.navigateItem(_this.itemList[_this.itemList.length - 1]);
969
+ }, 10);
970
+ }
971
+ else {
972
+ this.navigateItem(lastItem);
973
+ }
947
974
  break;
948
975
  case 'home':
949
- this.navigateItem(firstItem);
976
+ if (this.parent.enableVirtualization) {
977
+ this.clearSelect();
978
+ this.element.firstElementChild.scrollTop = 0;
979
+ setTimeout(function () {
980
+ _this.navigateItem(_this.itemList[0]);
981
+ }, 10);
982
+ }
983
+ else {
984
+ this.navigateItem(firstItem);
985
+ }
950
986
  break;
951
987
  case 'tab':
952
988
  if (!isNOU(fItem)) {
@@ -1041,6 +1077,9 @@ var LargeIconsView = /** @class */ (function () {
1041
1077
  case 'ctrlD':
1042
1078
  this.doDownload();
1043
1079
  break;
1080
+ case 'back':
1081
+ this.parent.traverseBackward();
1082
+ break;
1044
1083
  }
1045
1084
  };
1046
1085
  LargeIconsView.prototype.doDownload = function () {
@@ -1050,7 +1089,6 @@ var LargeIconsView = /** @class */ (function () {
1050
1089
  LargeIconsView.prototype.performDelete = function () {
1051
1090
  if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {
1052
1091
  this.updateSelectedData();
1053
- // eslint-disable-next-line
1054
1092
  var data = this.parent.itemData;
1055
1093
  for (var i = 0; i < data.length; i++) {
1056
1094
  if (!hasEditAccess(data[i])) {
@@ -1069,7 +1107,6 @@ var LargeIconsView = /** @class */ (function () {
1069
1107
  };
1070
1108
  LargeIconsView.prototype.updateRenameData = function () {
1071
1109
  var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);
1072
- // eslint-disable-next-line
1073
1110
  var data = this.getItemObject(item);
1074
1111
  updateRenamingData(this.parent, data);
1075
1112
  };
@@ -1115,6 +1152,12 @@ var LargeIconsView = /** @class */ (function () {
1115
1152
  index = perRow ? index - perRow : index - 1;
1116
1153
  }
1117
1154
  nextItem = this.itemList[index];
1155
+ if (this.parent.enableVirtualization && isNOU(nextItem)) {
1156
+ var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +
1157
+ parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);
1158
+ var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;
1159
+ this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);
1160
+ }
1118
1161
  if (isNOU(nextItem)) {
1119
1162
  return li;
1120
1163
  }
@@ -1279,7 +1322,6 @@ var LargeIconsView = /** @class */ (function () {
1279
1322
  }
1280
1323
  };
1281
1324
  LargeIconsView.prototype.getDataName = function (item) {
1282
- // eslint-disable-next-line
1283
1325
  var data = this.getItemObject(item);
1284
1326
  return getItemName(this.parent, data);
1285
1327
  };
@@ -1295,7 +1337,7 @@ var LargeIconsView = /** @class */ (function () {
1295
1337
  item.focus();
1296
1338
  };
1297
1339
  LargeIconsView.prototype.checkState = function (item, toCheck) {
1298
- if (!this.parent.allowMultiSelection) {
1340
+ if (!this.parent.showItemCheckBoxes) {
1299
1341
  return;
1300
1342
  }
1301
1343
  var checkEle = select('.' + CLS.FRAME, item);
@@ -1330,9 +1372,6 @@ var LargeIconsView = /** @class */ (function () {
1330
1372
  };
1331
1373
  LargeIconsView.prototype.resizeHandler = function () {
1332
1374
  this.getItemCount();
1333
- if (!isNOU(this.listObj)) {
1334
- this.adjustHeight();
1335
- }
1336
1375
  };
1337
1376
  LargeIconsView.prototype.splitterResizeHandler = function () {
1338
1377
  this.getItemCount();
@@ -1352,20 +1391,38 @@ var LargeIconsView = /** @class */ (function () {
1352
1391
  this.perRow = perRow;
1353
1392
  };
1354
1393
  LargeIconsView.prototype.triggerSelection = function (action, item) {
1355
- // eslint-disable-next-line
1356
- var data = this.getItemObject(item);
1357
- var eventArgs = {
1358
- action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item
1394
+ var data = [];
1395
+ if (this.isSelectAllCalled) {
1396
+ for (var i = 0, len = this.itemList.length; i < len; i++) {
1397
+ data[i] = this.getItemObject(this.itemList[i]);
1398
+ }
1399
+ }
1400
+ else {
1401
+ data[0] = this.getItemObject(item);
1402
+ }
1403
+ var eventArgs = { action: action, fileDetails: data.length > 1
1404
+ ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null
1405
+ : item
1359
1406
  };
1360
1407
  this.parent.trigger('fileSelection', eventArgs);
1361
1408
  this.isInteraction = true;
1362
1409
  return eventArgs;
1363
1410
  };
1364
1411
  LargeIconsView.prototype.triggerSelect = function (action, item) {
1365
- // eslint-disable-next-line
1366
- var data = this.getItemObject(item);
1367
- this.parent.visitedData = data;
1368
- var eventArgs = { action: action, fileDetails: data, isInteracted: this.isInteracted };
1412
+ var data = [];
1413
+ if (this.isSelectAllCalled) {
1414
+ for (var i = 0, len = this.itemList.length; i < len; i++) {
1415
+ data[i] = this.getItemObject(this.itemList[i]);
1416
+ }
1417
+ this.isSelectAllCalled = false;
1418
+ }
1419
+ else {
1420
+ data[0] = this.getItemObject(item);
1421
+ }
1422
+ this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];
1423
+ var eventArgs = { action: action, fileDetails: data.length > 1
1424
+ ? data
1425
+ : data[0], isInteracted: this.isInteracted };
1369
1426
  this.parent.trigger('fileSelect', eventArgs);
1370
1427
  this.isInteracted = true;
1371
1428
  };
@@ -1386,21 +1443,17 @@ var LargeIconsView = /** @class */ (function () {
1386
1443
  }
1387
1444
  return indexes;
1388
1445
  };
1389
- // eslint-disable-next-line
1390
1446
  LargeIconsView.prototype.getItemObject = function (item) {
1391
1447
  var index = this.itemList.indexOf(item);
1392
1448
  return this.items[index];
1393
1449
  };
1394
- // eslint-disable-next-line
1395
1450
  LargeIconsView.prototype.addSelection = function (data) {
1396
- // eslint-disable-next-line
1397
1451
  var resultData = [];
1398
1452
  if (this.parent.hasId) {
1399
1453
  resultData = new DataManager(this.items).
1400
1454
  executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));
1401
1455
  }
1402
1456
  else {
1403
- // eslint-disable-next-line
1404
1457
  var newData = new DataManager(this.items).
1405
1458
  executeLocal(new Query().where('name', 'equal', getValue('name', data), false));
1406
1459
  if (newData.length > 0) {
@@ -1415,7 +1468,6 @@ var LargeIconsView = /** @class */ (function () {
1415
1468
  }
1416
1469
  };
1417
1470
  LargeIconsView.prototype.updateSelectedData = function () {
1418
- // eslint-disable-next-line
1419
1471
  var data = [];
1420
1472
  var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);
1421
1473
  for (var i = 0; i < items.length; i++) {
@@ -1423,7 +1475,6 @@ var LargeIconsView = /** @class */ (function () {
1423
1475
  }
1424
1476
  this.parent.itemData = data;
1425
1477
  };
1426
- // eslint-disable-next-line
1427
1478
  LargeIconsView.prototype.onMethodCall = function (args) {
1428
1479
  if (this.parent.view !== 'LargeIcons') {
1429
1480
  return;
@@ -1474,7 +1525,7 @@ var LargeIconsView = /** @class */ (function () {
1474
1525
  else {
1475
1526
  for (var i = 0, len = this.items.length; i < len; i++) {
1476
1527
  var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);
1477
- if (items.indexOf(name_2) !== -1) {
1528
+ if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {
1478
1529
  indexes.push(i);
1479
1530
  }
1480
1531
  }
@@ -1491,7 +1542,6 @@ var LargeIconsView = /** @class */ (function () {
1491
1542
  if (indexes.length === 0) {
1492
1543
  return;
1493
1544
  }
1494
- // eslint-disable-next-line
1495
1545
  var data = [];
1496
1546
  var newIds = [];
1497
1547
  for (var i = 0; i < indexes.length; i++) {
@@ -1509,7 +1559,6 @@ var LargeIconsView = /** @class */ (function () {
1509
1559
  if (index.length === 0) {
1510
1560
  return;
1511
1561
  }
1512
- // eslint-disable-next-line
1513
1562
  var data = [];
1514
1563
  var newIds = [];
1515
1564
  for (var i = 0; i < index.length; i++) {
@@ -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;