Added scroll only when has reached bottom.
This commit is contained in:
		
							parent
							
								
									f28be3ba55
								
							
						
					
					
						commit
						2e69ac5921
					
				| @ -45,11 +45,18 @@ | |||||||
|             time.innerText = app.timeDescription(time.dataset.created_at); |             time.innerText = app.timeDescription(time.dataset.created_at); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 |     function isElementVisible(element) { | ||||||
|     function updateLayout() { |         const rect = element.getBoundingClientRect(); | ||||||
|  |         return ( | ||||||
|  |             rect.top >= 0 && | ||||||
|  |             rect.left >= 0 && | ||||||
|  |             rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && | ||||||
|  |             rect.right <= (window.innerWidth || document.documentElement.clientWidth) | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  |     function updateLayout(doScrollDown) { | ||||||
|         const messagesContainer = document.querySelector(".chat-messages"); |         const messagesContainer = document.querySelector(".chat-messages"); | ||||||
|         //messagesContainer.scrollTop = messagesContainer.scrollHeight + 1000; |         //messagesContainer.scrollTop = messagesContainer.scrollHeight + 1000; | ||||||
|          |  | ||||||
|         updateTimes(); |         updateTimes(); | ||||||
|         let previousUser = null; |         let previousUser = null; | ||||||
|         document.querySelectorAll(".message").forEach((message) => { |         document.querySelectorAll(".message").forEach((message) => { | ||||||
| @ -60,8 +67,10 @@ | |||||||
|                 message.classList.remove("switch-user"); |                 message.classList.remove("switch-user"); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|         const lastMessage = messagesContainer.querySelector(".message:last-child"); |         lastMessage = messagesContainer.querySelector(".message:last-child"); | ||||||
|         lastMessage.scrollIntoView({ inline: "nearest" }); |         if(doScrollDown){  | ||||||
|  |             lastMessage.scrollIntoView({ inline: "nearest" }); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -74,6 +83,11 @@ | |||||||
|             app.playSound(0); |             app.playSound(0); | ||||||
|         } |         } | ||||||
|          |          | ||||||
|  |         const messagesContainer = document.querySelector(".chat-messages"); | ||||||
|  |         const lastMessage = messagesContainer.querySelector(".message:last-child");  | ||||||
|  |         const doScrollDownBecauseLastMessageIsVisible = !lastMessage || isElementVisible(lastMessage); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|         const message = document.createElement("div"); |         const message = document.createElement("div"); | ||||||
|         message.dataset.color = data.color; |         message.dataset.color = data.color; | ||||||
|         message.dataset.created_at = data.created_at; |         message.dataset.created_at = data.created_at; | ||||||
| @ -81,14 +95,14 @@ | |||||||
|         message.dataset.uid = data.uid; |         message.dataset.uid = data.uid; | ||||||
|         message.innerHTML = data.html; |         message.innerHTML = data.html; | ||||||
|         document.querySelector(".chat-messages").appendChild(message.firstChild); |         document.querySelector(".chat-messages").appendChild(message.firstChild); | ||||||
|         updateLayout(); |         updateLayout(doScrollDownBecauseLastMessageIsVisible); | ||||||
|         setTimeout(()=>{ |         setTimeout(()=>{ | ||||||
|             updateLayout() |             updateLayout(doScrollDownBecauseLastMessageIsVisible) | ||||||
|         },1000) |         },1000) | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     initInputField(document.querySelector("textarea")); |     initInputField(document.querySelector("textarea")); | ||||||
|     updateLayout(); |     updateLayout(true); | ||||||
| </script> | </script> | ||||||
| {% endblock %} | {% endblock %} | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user