@syncfusion/ej2-base 20.2.38 → 20.2.39

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.
@@ -7699,23 +7699,30 @@ let Draggable = Draggable_1 = class Draggable extends Base {
7699
7699
  draEleTop -= this.parentScrollY;
7700
7700
  draEleLeft -= this.parentScrollX;
7701
7701
  }
7702
- if (this.helperElement.classList.contains('e-treeview')) {
7703
- let body = document.body;
7704
- let html = document.documentElement;
7705
- let tempHeight = Math.max(body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
7706
- let tempWidth = Math.max(body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);
7707
- if (draEleTop > tempHeight) {
7708
- draEleTop = tempHeight;
7709
- }
7710
- if (draEleLeft > tempWidth) {
7711
- draEleLeft = tempWidth;
7712
- }
7713
- }
7714
7702
  let dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });
7715
7703
  setStyleAttribute(helperElement, this.getDragPosition(dragValue));
7716
- if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {
7704
+ if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {
7717
7705
  this.helperElement.scrollIntoView();
7718
7706
  }
7707
+ let elements = document.querySelectorAll(':hover');
7708
+ if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {
7709
+ if (elements.length === 0) {
7710
+ elements = this.getPathElements(evt);
7711
+ }
7712
+ /* tslint:disable no-any */
7713
+ let scrollParent = this.getScrollParent(elements, false);
7714
+ if (this.elementInViewport(this.helperElement)) {
7715
+ this.getScrollPosition(scrollParent, draEleTop);
7716
+ }
7717
+ else if (!this.elementInViewport(this.helperElement)) {
7718
+ elements = [].slice.call(document.querySelectorAll(':hover'));
7719
+ if (elements.length === 0) {
7720
+ elements = this.getPathElements(evt);
7721
+ }
7722
+ scrollParent = this.getScrollParent(elements, true);
7723
+ this.getScrollPosition(scrollParent, draEleTop);
7724
+ }
7725
+ }
7719
7726
  this.dragProcessStarted = true;
7720
7727
  this.prevLeft = left;
7721
7728
  this.prevTop = top;
@@ -7724,6 +7731,48 @@ let Draggable = Draggable_1 = class Draggable extends Base {
7724
7731
  this.pageX = pagex;
7725
7732
  this.pageY = pagey;
7726
7733
  }
7734
+ /* tslint:disable no-any */
7735
+ getScrollParent(node, reverse) {
7736
+ /* tslint:disable no-any */
7737
+ const nodeEl = reverse ? node.reverse() : node;
7738
+ let hasScroll;
7739
+ for (let i = nodeEl.length - 1; i >= 0; i--) {
7740
+ hasScroll = window.getComputedStyle(nodeEl[i])['overflow-y'];
7741
+ if ((hasScroll === 'auto' || hasScroll === 'scroll')
7742
+ && nodeEl[i].scrollHeight > nodeEl[i].clientHeight) {
7743
+ return nodeEl[i];
7744
+ }
7745
+ }
7746
+ hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];
7747
+ if (hasScroll === 'visible') {
7748
+ document.scrollingElement.style.overflow = 'auto';
7749
+ return document.scrollingElement;
7750
+ }
7751
+ }
7752
+ getScrollPosition(nodeEle, draEleTop) {
7753
+ if (nodeEle && nodeEle === document.scrollingElement) {
7754
+ if ((nodeEle.clientHeight - nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight) < draEleTop
7755
+ && nodeEle.getBoundingClientRect().height > draEleTop) {
7756
+ nodeEle.scrollTop += this.helperElement.clientHeight;
7757
+ }
7758
+ else if (nodeEle.scrollHeight - nodeEle.clientHeight > draEleTop) {
7759
+ nodeEle.scrollTop -= this.helperElement.clientHeight;
7760
+ }
7761
+ }
7762
+ else if (nodeEle && nodeEle !== document.scrollingElement) {
7763
+ if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight) < draEleTop) {
7764
+ nodeEle.scrollTop += this.helperElement.clientHeight;
7765
+ }
7766
+ else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight)) {
7767
+ nodeEle.scrollTop -= this.helperElement.clientHeight;
7768
+ }
7769
+ }
7770
+ }
7771
+ getPathElements(evt) {
7772
+ const elementTop = evt.clientX > 0 ? evt.clientX : 0;
7773
+ const elementLeft = evt.clientY > 0 ? evt.clientY : 0;
7774
+ return document.elementsFromPoint(elementTop, elementLeft);
7775
+ }
7727
7776
  triggerOutFunction(evt, eleObj) {
7728
7777
  this.hoverObject.instance.intOut(evt, eleObj.target);
7729
7778
  this.hoverObject.instance.dragData[this.scope] = null;