Scrolled to bottom fix.
This commit is contained in:
parent
cdc3d10df5
commit
538a9ce25d
src/snek
@ -38,6 +38,18 @@ class MessageList extends HTMLElement {
|
||||
})
|
||||
|
||||
}
|
||||
isElementVisible(element) {
|
||||
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)
|
||||
);
|
||||
}
|
||||
isScrolledToBottom() {
|
||||
return this.isElementVisible(this.querySelector(".message-list-bottom"));
|
||||
}
|
||||
scrollToBottom(force) {
|
||||
console.info("Scrolling down")
|
||||
// if (force) {
|
||||
|
@ -184,7 +184,7 @@ app.addEventListener("channel-message", (data) => {
|
||||
}
|
||||
const lastMessage = messagesContainer.querySelector(".message:last-child");
|
||||
const lastElement = messagesContainer.querySelector(".message-list-bottom");
|
||||
const doScrollDown = !lastMessage || isElementVisible(lastMessage);
|
||||
const doScrollDown = messagesContainer.isScrolledToBottom();
|
||||
const message = document.createElement("div");
|
||||
message.innerHTML = data.html;
|
||||
message.style.display = display;
|
||||
@ -251,15 +251,7 @@ function updateLayout(doScrollDown) {
|
||||
}
|
||||
|
||||
// --- Utility: check if element is visible ---
|
||||
function isElementVisible(element) {
|
||||
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)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// --- Utility: check if scrolled past half ---
|
||||
function isScrolledPastHalf() {
|
||||
|
Loading…
Reference in New Issue
Block a user