You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							53 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							53 lines
						
					
					
						
							1.8 KiB
						
					
					
				class Tooltip { | 
						|
  constructor(quill, boundsContainer) { | 
						|
    this.quill = quill; | 
						|
    this.boundsContainer = boundsContainer || document.body; | 
						|
    this.root = quill.addContainer('ql-tooltip'); | 
						|
    this.root.innerHTML = this.constructor.TEMPLATE; | 
						|
    if (this.quill.root === this.quill.scrollingContainer) { | 
						|
      this.quill.root.addEventListener('scroll', () => { | 
						|
        this.root.style.marginTop = (-1*this.quill.root.scrollTop) + 'px'; | 
						|
      }); | 
						|
    } | 
						|
    this.hide(); | 
						|
  } | 
						|
 | 
						|
  hide() { | 
						|
    this.root.classList.add('ql-hidden'); | 
						|
  } | 
						|
 | 
						|
  position(reference) { | 
						|
    let left = reference.left + reference.width/2 - this.root.offsetWidth/2; | 
						|
    // root.scrollTop should be 0 if scrollContainer !== root | 
						|
    let top = reference.bottom + this.quill.root.scrollTop; | 
						|
    this.root.style.left = left + 'px'; | 
						|
    this.root.style.top = top + 'px'; | 
						|
    this.root.classList.remove('ql-flip'); | 
						|
    let containerBounds = this.boundsContainer.getBoundingClientRect(); | 
						|
    let rootBounds = this.root.getBoundingClientRect(); | 
						|
    let shift = 0; | 
						|
    if (rootBounds.right > containerBounds.right) { | 
						|
      shift = containerBounds.right - rootBounds.right; | 
						|
      this.root.style.left = (left + shift) + 'px'; | 
						|
    } | 
						|
    if (rootBounds.left < containerBounds.left) { | 
						|
      shift = containerBounds.left - rootBounds.left; | 
						|
      this.root.style.left = (left + shift) + 'px'; | 
						|
    } | 
						|
    if (rootBounds.bottom > containerBounds.bottom) { | 
						|
      let height = rootBounds.bottom - rootBounds.top; | 
						|
      let verticalShift = reference.bottom - reference.top + height; | 
						|
      this.root.style.top = (top - verticalShift) + 'px'; | 
						|
      this.root.classList.add('ql-flip'); | 
						|
    } | 
						|
    return shift; | 
						|
  } | 
						|
 | 
						|
  show() { | 
						|
    this.root.classList.remove('ql-editing'); | 
						|
    this.root.classList.remove('ql-hidden'); | 
						|
  } | 
						|
} | 
						|
 | 
						|
 | 
						|
export default Tooltip;
 | 
						|
 |