mirror of https://github.com/docusealco/docuseal
				
				
				
			
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							57 lines
						
					
					
						
							1.4 KiB
						
					
					
				| const emailRegexp = /([^@;,<>\s]+@[^@;,<>\s]+)/g
 | |
| 
 | |
| export default class extends HTMLElement {
 | |
|   connectedCallback () {
 | |
|     if (this.dataset.limit) {
 | |
|       this.textarea.addEventListener('input', () => {
 | |
|         const emails = this.textarea.value.match(emailRegexp) || []
 | |
| 
 | |
|         this.updateCounter(emails.length)
 | |
|       })
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   updateCounter (count) {
 | |
|     let counter = document.getElementById('emails_counter')
 | |
|     let bulkMessage = document.getElementById('bulk_message')
 | |
| 
 | |
|     if (count < 2) {
 | |
|       counter?.remove()
 | |
| 
 | |
|       return
 | |
|     }
 | |
| 
 | |
|     if ((count + 10) > this.dataset.limit) {
 | |
|       if (!counter) {
 | |
|         counter = document.createElement('span')
 | |
| 
 | |
|         counter.id = 'emails_counter'
 | |
|         counter.classList.add('text-xs', 'right-0', 'absolute')
 | |
|         counter.style.bottom = '-15px'
 | |
| 
 | |
|         this.textarea.parentNode.append(counter)
 | |
|       }
 | |
| 
 | |
|       counter.innerText = `${count} / ${this.dataset.limit}`
 | |
|     }
 | |
| 
 | |
|     if (this.dataset.bulkEnabled !== 'true') {
 | |
|       if (!bulkMessage) {
 | |
|         bulkMessage = document.createElement('span')
 | |
| 
 | |
|         bulkMessage.id = 'bulk_message'
 | |
|         bulkMessage.classList.add('text-xs', 'left-0', 'absolute')
 | |
|         bulkMessage.style.bottom = '-15px'
 | |
| 
 | |
|         this.textarea.parentNode.append(bulkMessage)
 | |
|       }
 | |
| 
 | |
|       bulkMessage.innerHTML = '<a class="link" data-turbo="false" href="/upgrade">Upgrade</a> to bulk send multiple recipients'
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   get textarea () {
 | |
|     return this.querySelector('textarea')
 | |
|   }
 | |
| }
 |