From b28c50fa6ccd967246c704dd12759d4727f7b4eb Mon Sep 17 00:00:00 2001 From: Andrew Gundersen Date: Sat, 13 Mar 2021 15:16:21 -0600 Subject: [PATCH] scrolling bug --- src/components/settings.vue | 9 +++++-- src/modules/draggify.ts | 4 +-- src/modules/messages.ts | 52 +++++++++++++++++++++++++++++++++++++ src/views/messenger.vue | 11 ++------ 4 files changed, 63 insertions(+), 13 deletions(-) diff --git a/src/components/settings.vue b/src/components/settings.vue index 57e8266..307183c 100644 --- a/src/components/settings.vue +++ b/src/components/settings.vue @@ -114,11 +114,16 @@ display: flex; flex-direction: row; + padding: 5px; margin-right: 20px; - margin-top: 24px; + margin-top: 19px; z-index: 2; - background-color: #EBEBEB; + background-color: Transparent; +} + +.settingsIcon:hover { + cursor: pointer; } .settingsButtonDot { diff --git a/src/modules/draggify.ts b/src/modules/draggify.ts index 8ce6897..b357ddf 100644 --- a/src/modules/draggify.ts +++ b/src/modules/draggify.ts @@ -113,8 +113,8 @@ export default function draggify(input: { elementId: string }) { }); // Initialize the coordinants. - elementX.value = 600 - 38 - 20; - elementY.value = 500 - 38 - 20; + elementX.value = 20; + elementY.value = 200 - 38 - 20; // remove event listeners on component dismount. onUnmounted(() => { diff --git a/src/modules/messages.ts b/src/modules/messages.ts index a745c03..654ca59 100644 --- a/src/modules/messages.ts +++ b/src/modules/messages.ts @@ -25,23 +25,75 @@ function deleteOldest() { messages.value.delete(lastKey); } + + + + + +// Is the message div scrolled to the bottom? +let isScrolledToBottom: boolean; + +// Update isScrolledToBottom +const updateScrollRef = () => { + const e = document.getElementById("messenger") + + if (e) { + isScrolledToBottom = e.scrollHeight - e.clientHeight <= e.scrollTop + 1 + } + +} + +// Adjust scroll after we add content to the messenger. +const adjustScroll = () => { + const e = document.getElementById("messenger") + + if (e) { + + console.log(`Bottom? : ${isScrolledToBottom}`) + console.log(e.scrollHeight) + console.log(e.clientHeight) + console.log(e.scrollTop) + + // // Scroll to bottom if isScrolledToBottom is true + if (isScrolledToBottom) { + e.scrollTop = e.scrollHeight - e.clientHeight + } + + } + +} + + + + + export default function useMessages() { const addMessage = (m: RenderMessage) => { + updateScrollRef() // must update before we add new elements. + console.log(`Adding message: ${m.content.text}`) // check for message limit before setting a new message. if (messages.value.size >= sizeLimit) deleteOldest(); messages.value.set(m.uid, m); + + adjustScroll() } const updateMessage = (a: Annotation) => { + updateScrollRef() + + console.log(`Updating message...`) + // update message if in the map. const m = messages.value.get(a.uid) m.context = a.context m.text = a.text + adjustScroll() + return m } diff --git a/src/views/messenger.vue b/src/views/messenger.vue index 7763b3b..1e1e70b 100644 --- a/src/views/messenger.vue +++ b/src/views/messenger.vue @@ -101,17 +101,10 @@ export default defineComponent({