Update.
This commit is contained in:
		
							parent
							
								
									4f71f74574
								
							
						
					
					
						commit
						2a3e225e1d
					
				
							
								
								
									
										40
									
								
								src/snek/static/chat-input.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/snek/static/chat-input.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | ||||
| 
 | ||||
| 
 | ||||
| class ChatInputElement extends HTMLElement { | ||||
|     constructor() { | ||||
|         super(); | ||||
|         this.attachShadow({ mode: 'open' }); | ||||
|         this.component = document.createElement('div'); | ||||
|         this.shadowRoot.appendChild(this.component); | ||||
|     } | ||||
|     connectedCallback() { | ||||
|         const link = document.createElement("link") | ||||
|         link.rel = 'stylesheet' | ||||
|         link.href = '/base.css' | ||||
|         this.component.appendChild(link) | ||||
|         this.container = document.createElement('div') | ||||
|         this.container.classList.add("chat-input") | ||||
|         this.container.innerHTML = ` | ||||
|             <textarea placeholder="Type a message..." rows="2"></textarea> | ||||
|             <button>Send</button> | ||||
|         `;
 | ||||
|         this.container.querySelector('textarea').addEventListener('input', (e) => { | ||||
|             this.dispatchEvent(new CustomEvent("input", {detail:e.target.value,bubbles:true})) | ||||
|             const message = e.target.value; | ||||
|             const button = this.container.querySelector('button'); | ||||
|             button.disabled = !message; | ||||
|         }) | ||||
|         this.container.querySelector('textarea').addEventListener('change',(e)=>{ | ||||
|             this.dispatchEvent(new CustomEvent("change", {detail:e.target.value,bubbles:true})) | ||||
|             console.error(e.target.value) | ||||
|         }) | ||||
|         this.container.querySelector('textarea').addEventListener('keyup', (e) => { | ||||
|             if(e.key == 'Enter' && !e.shiftKey){ | ||||
|                 this.dispatchEvent(new CustomEvent("submit", {detail:e.target.value,bubbles:true})) | ||||
|                 e.target.value = '' | ||||
|             } | ||||
|         }) | ||||
|         this.component.appendChild(this.container) | ||||
|     } | ||||
| } | ||||
| customElements.define('chat-input', ChatInputElement); | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user