@syncfusion/ej2-filemanager 33.1.47 → 33.2.4

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.
@@ -5299,9 +5299,11 @@ class LargeIconsView {
5299
5299
  }
5300
5300
  }
5301
5301
  }
5302
- const targetItem = this.getFocusedItem() || mappedItem || this.parent.visitedItem || this.getFirstItem();
5303
- if (targetItem) {
5304
- this.addFocus(targetItem);
5302
+ if (this.parent.activeModule !== 'navigationpane') {
5303
+ const targetItem = this.getFocusedItem() || mappedItem || this.parent.visitedItem || this.getFirstItem();
5304
+ if (targetItem) {
5305
+ this.addFocus(targetItem);
5306
+ }
5305
5307
  }
5306
5308
  }
5307
5309
  }
@@ -7056,10 +7058,16 @@ class ContextMenu {
7056
7058
  }
7057
7059
  else if (!isNullOrUndefined(closest(target, 'tr.e-row'))) {
7058
7060
  uid = this.targetElement.getAttribute('data-uid');
7059
- data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;
7060
- if (isNullOrUndefined(this.targetElement.getAttribute('aria-selected'))) {
7061
- /* istanbul ignore next */
7062
- this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10) - 1]);
7061
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7062
+ const gridObj = this.parent.detailsviewModule && this.parent.detailsviewModule.gridObj;
7063
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7064
+ const rowObj = (!isNullOrUndefined(uid) && !isNullOrUndefined(gridObj)) ? gridObj.getRowObjectFromUID(uid) : null;
7065
+ if (!isNullOrUndefined(rowObj)) {
7066
+ data = rowObj.data;
7067
+ if (isNullOrUndefined(this.targetElement.getAttribute('aria-selected'))) {
7068
+ /* istanbul ignore next */
7069
+ gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10) - 1]);
7070
+ }
7063
7071
  }
7064
7072
  selected = true;
7065
7073
  /* istanbul ignore next */
@@ -7255,10 +7263,12 @@ class ContextMenu {
7255
7263
  this.menuType = 'layout';
7256
7264
  this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map((item) => item.trim()));
7257
7265
  this.contextMenu.dataBind();
7258
- if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&
7259
- (closest(target, '#' + this.parent.element.id + LARGEICON_ID).getElementsByClassName(EMPTY).length !== 0))
7260
- || (this.parent.view === 'Details' &&
7261
- (closest(target, '#' + this.parent.element.id + GRID_ID).getElementsByClassName(EMPTY).length !== 0)))) {
7266
+ const largeIconsEle = closest(target, '#' + this.parent.element.id + LARGEICON_ID);
7267
+ const detailsViewEle = closest(target, '#' + this.parent.element.id + GRID_ID);
7268
+ if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' && !isNullOrUndefined(largeIconsEle) &&
7269
+ (largeIconsEle.getElementsByClassName(EMPTY).length !== 0))
7270
+ || (this.parent.view === 'Details' && !isNullOrUndefined(detailsViewEle) &&
7271
+ (detailsViewEle.getElementsByClassName(EMPTY).length !== 0)))) {
7262
7272
  this.disabledItems.push('SelectAll');
7263
7273
  }
7264
7274
  else {
@@ -8470,41 +8480,74 @@ let FileManager = FileManager_1 = class FileManager extends Component {
8470
8480
  return;
8471
8481
  }
8472
8482
  }
8483
+ const contentElem = this.viewElem.firstChild;
8484
+ const isLargeIcons = this.viewElem.classList.contains('e-large-icons');
8485
+ if (isLargeIcons) {
8486
+ this.dragContainer = (contentElem && contentElem.tagName === 'UL') ? contentElem : this.viewElem;
8487
+ }
8488
+ else {
8489
+ this.dragContainer = this.viewElem.firstChild;
8490
+ }
8491
+ if (!this.dragContainer) {
8492
+ return;
8493
+ }
8473
8494
  event.preventDefault();
8474
- this.dragX = event.pageX;
8475
- this.dragY = event.pageY;
8495
+ this.lastDragEvent = event;
8496
+ const ulRect = this.dragContainer.getBoundingClientRect();
8497
+ this.dragX = event.clientX - ulRect.left - this.dragContainer.clientLeft + this.dragContainer.scrollLeft;
8498
+ this.dragY = event.clientY - ulRect.top - this.dragContainer.clientTop + this.dragContainer.scrollTop;
8476
8499
  if (!this.dragSelectElement) {
8477
8500
  this.dragSelectElement = createElement('div', {
8478
8501
  id: this.element.id + '_drag',
8479
- className: 'e-filemanager e-drag-select',
8480
- styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'
8502
+ className: 'e-filemanager e-drag-select'
8503
+ });
8504
+ setStyleAttribute(this.dragSelectElement, {
8505
+ position: 'absolute',
8506
+ left: this.dragX + 'px',
8507
+ top: this.dragY + 'px',
8508
+ width: '0px',
8509
+ height: '0px',
8510
+ pointerEvents: 'none'
8481
8511
  });
8482
- document.body.append(this.dragSelectElement);
8512
+ this.dragContainer.appendChild(this.dragSelectElement);
8513
+ this.dragContainer.style.position = 'relative';
8483
8514
  }
8515
+ EventHandler.add(this.dragContainer, 'scroll', this.onDragScroll, this);
8484
8516
  EventHandler.add(document, 'mouseup', this.onDragStop, this);
8485
- EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);
8517
+ EventHandler.add(this.dragContainer, 'mousemove', this.onDrag, this);
8486
8518
  EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);
8487
8519
  }
8488
8520
  }
8489
8521
  onDrag(event) {
8522
+ this.lastDragEvent = event;
8490
8523
  event.stopPropagation();
8491
- if (this.dragSelectElement) {
8492
- const diffX = event.pageX - this.dragX;
8493
- const diffY = event.pageY - this.dragY;
8524
+ if (this.dragSelectElement && this.dragContainer) {
8525
+ const ulRect = this.dragContainer.getBoundingClientRect();
8526
+ const currentX = event.clientX - ulRect.left - this.dragContainer.clientLeft + this.dragContainer.scrollLeft;
8527
+ const currentY = event.clientY - ulRect.top - this.dragContainer.clientTop + this.dragContainer.scrollTop;
8494
8528
  setStyleAttribute(this.dragSelectElement, {
8495
- 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',
8496
- 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'
8529
+ left: Math.min(this.dragX, currentX) + 'px',
8530
+ top: Math.min(this.dragY, currentY) + 'px',
8531
+ height: Math.abs(currentY - this.dragY) + 'px',
8532
+ width: Math.abs(currentX - this.dragX) + 'px'
8497
8533
  });
8498
8534
  this.selectItems();
8499
8535
  }
8500
- else {
8501
- EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);
8536
+ else if (this.dragContainer) {
8537
+ EventHandler.remove(this.dragContainer, 'mousemove', this.onDrag);
8502
8538
  }
8503
8539
  }
8540
+ onDragScroll() {
8541
+ if (!this.dragSelectElement || !this.lastDragEvent) {
8542
+ return;
8543
+ }
8544
+ this.onDrag(this.lastDragEvent);
8545
+ }
8504
8546
  onDragStop() {
8505
- if (this.viewElem) {
8506
- EventHandler.remove(document, 'mouseup', this.onDragStop);
8507
- EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);
8547
+ EventHandler.remove(document, 'mouseup', this.onDragStop);
8548
+ if (this.dragContainer) {
8549
+ EventHandler.remove(this.dragContainer, 'mousemove', this.onDrag);
8550
+ EventHandler.remove(this.dragContainer, 'scroll', this.onDragScroll);
8508
8551
  }
8509
8552
  if (this.dragSelectElement) {
8510
8553
  EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);
@@ -8515,6 +8558,7 @@ let FileManager = FileManager_1 = class FileManager extends Component {
8515
8558
  detach(this.dragSelectElement);
8516
8559
  this.dragSelectElement = null;
8517
8560
  }
8561
+ this.dragContainer = null;
8518
8562
  }
8519
8563
  selectItems() {
8520
8564
  const dragRect = this.dragSelectElement.getBoundingClientRect();