mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-11-01 01:21:18 +01:00 
			
		
		
		
	Fix drop on self bug
Fix highlight fadeout bug UI tweaks
This commit is contained in:
		
							parent
							
								
									ca3002f925
								
							
						
					
					
						commit
						2bdda9acba
					
				@ -85,12 +85,12 @@ html[dir="rtl"] .drag-manager_draghover img {
 | 
			
		||||
    width: 80px;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.moved-element {
 | 
			
		||||
  background-color: darkgreen;
 | 
			
		||||
  border-radius: 8px;
 | 
			
		||||
  transition: background-color  0.5s ease-out;
 | 
			
		||||
.moved-element img {
 | 
			
		||||
  border: 8px solid #198754;
 | 
			
		||||
  border-radius: 3px;
 | 
			
		||||
  transition: border  0.5s ease-out;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.moved-element.remove {
 | 
			
		||||
  background-color: transparent;
 | 
			
		||||
.moved-element.remove img{
 | 
			
		||||
  border: 8px solid transparent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,7 @@ class DragDropManager {
 | 
			
		||||
    this.draggedImageEl = undefined;
 | 
			
		||||
    this.draggedEl = undefined;
 | 
			
		||||
    this.selectedPageElements = []; // Store selected pages for multi-page mode
 | 
			
		||||
    this.elementTimeouts = new Map();
 | 
			
		||||
 | 
			
		||||
    // Add CSS dynamically
 | 
			
		||||
    const styleElement = document.createElement('link');
 | 
			
		||||
@ -101,55 +102,78 @@ class DragDropManager {
 | 
			
		||||
 | 
			
		||||
    if (window.selectPage) {
 | 
			
		||||
      // Multi-page drop logic
 | 
			
		||||
      if (!this.hoveredEl || !this.hoveredEl.classList.contains('page-container')) {
 | 
			
		||||
      if (
 | 
			
		||||
        !this.hoveredEl ||
 | 
			
		||||
        !this.hoveredEl.classList.contains('page-container') ||
 | 
			
		||||
        this.selectedPageElements.includes(this.hoveredEl)
 | 
			
		||||
      ) {
 | 
			
		||||
        this.selectedPageElements.forEach((pageEl) => {
 | 
			
		||||
          pageEl.style.transform = pageEl.initialTransform || 'translate(0px, 0px)';
 | 
			
		||||
          pageEl.classList.remove('drag-manager_dragging');
 | 
			
		||||
          this.pageDragging = false;
 | 
			
		||||
          return;
 | 
			
		||||
        });
 | 
			
		||||
      } else {
 | 
			
		||||
        this.selectedPageElements.forEach((pageEl) => {
 | 
			
		||||
          pageEl.classList.remove('drag-manager_dragging');
 | 
			
		||||
 | 
			
		||||
          if (this.hoveredEl === this.endInsertionElement) {
 | 
			
		||||
            this.movePageTo(pageEl);
 | 
			
		||||
          } else {
 | 
			
		||||
            this.movePageTo(pageEl, this.hoveredEl);
 | 
			
		||||
          }
 | 
			
		||||
          pageEl.classList.remove('moved-element', 'remove');
 | 
			
		||||
          pageEl.classList.add('moved-element');
 | 
			
		||||
          setTimeout(() => {
 | 
			
		||||
            pageEl.classList.add('remove');
 | 
			
		||||
          }, 2000);
 | 
			
		||||
 | 
			
		||||
          // Handle timeout for the current element
 | 
			
		||||
          this.handleTimeoutForElement(pageEl);
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
      this.selectedPageElements = [];
 | 
			
		||||
      window.resetPages();
 | 
			
		||||
    } else {
 | 
			
		||||
      // Single-page drop logic
 | 
			
		||||
      if (!this.hoveredEl || !this.hoveredEl.classList.contains('page-container')) {
 | 
			
		||||
      if (
 | 
			
		||||
        !this.hoveredEl ||
 | 
			
		||||
        !this.hoveredEl.classList.contains('page-container') ||
 | 
			
		||||
        this.hoveredEl === this.draggedEl
 | 
			
		||||
      ) {
 | 
			
		||||
        this.draggedEl.style.transform = this.draggedEl.initialTransform || 'translate(0px, 0px)';
 | 
			
		||||
        this.draggedEl.classList.remove('drag-manager_dragging');
 | 
			
		||||
        this.pageDragging = false;
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      if (!this.hoveredEl) return;
 | 
			
		||||
 | 
			
		||||
      this.draggedEl.classList.remove('drag-manager_dragging');
 | 
			
		||||
 | 
			
		||||
      if (this.hoveredEl === this.endInsertionElement) {
 | 
			
		||||
        this.movePageTo(this.draggedEl);
 | 
			
		||||
      } else {
 | 
			
		||||
        this.movePageTo(this.draggedEl, this.hoveredEl);
 | 
			
		||||
      }
 | 
			
		||||
      this.draggedEl.classList.remove('moved-element', 'remove');
 | 
			
		||||
      this.draggedEl.classList.add('moved-element');
 | 
			
		||||
      setTimeout(() => {
 | 
			
		||||
        this.draggedEl.classList.add('remove');
 | 
			
		||||
      }, 2000);
 | 
			
		||||
 | 
			
		||||
      // Handle timeout for the current element
 | 
			
		||||
      this.handleTimeoutForElement(this.draggedEl);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.pageDragging = false;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Helper function to manage independent timeouts
 | 
			
		||||
  handleTimeoutForElement(element) {
 | 
			
		||||
    // Clear existing timeout if present
 | 
			
		||||
    if (this.elementTimeouts.has(element)) {
 | 
			
		||||
      clearTimeout(this.elementTimeouts.get(element));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Add the moved-element class and set a new timeout
 | 
			
		||||
    element.classList.remove('remove');
 | 
			
		||||
    element.classList.add('moved-element');
 | 
			
		||||
 | 
			
		||||
    const timeoutId = setTimeout(() => {
 | 
			
		||||
      element.classList.add('remove');
 | 
			
		||||
      this.elementTimeouts.delete(element); // Cleanup the timeout map
 | 
			
		||||
    }, 2000);
 | 
			
		||||
 | 
			
		||||
    // Store the timeout ID for this element
 | 
			
		||||
    this.elementTimeouts.set(element, timeoutId);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  setActions({movePageTo}) {
 | 
			
		||||
    this.movePageTo = movePageTo;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user