Skip to content

Commit bcc230e

Browse files
authored
Merge pull request #121 from iceljc/features/refine-chat-window
Features/refine chat window
2 parents c3fc6df + 360df52 commit bcc230e

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

src/lib/scss/custom/pages/_chat.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,14 @@
377377
}
378378
}
379379

380+
.scroll-bottom-to-top {
381+
display: flex;
382+
flex-direction: column-reverse;
383+
overflow-y: auto;
384+
scrollbar-width: none;
385+
scroll-behavior: smooth;
386+
}
387+
380388
.chat-input-section {
381389
border-top: 1px solid var(--#{$prefix}border-color);
382390
padding: 2vmin 2%;

src/routes/chat/[agentId]/[conversationId]/chat-box.svelte

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,9 @@
138138
signalr.onConversationMessageDeleted = onConversationMessageDeleted;
139139
await signalr.start(params.conversationId);
140140
141-
const scrollbarElements = [
141+
scrollbars = [
142142
document.querySelector('.chat-scrollbar')
143143
].filter(Boolean);
144-
scrollbarElements.forEach(elem => {
145-
scrollbars = [ ...scrollbars, OverlayScrollbars(elem, options) ];
146-
});
147144
refresh();
148145
});
149146
@@ -237,13 +234,11 @@
237234
}
238235
239236
function autoScrollToBottom() {
240-
// @ts-ignore
241-
scrollbars.forEach(scrollbar => {
242-
setTimeout(() => {
243-
const { viewport } = scrollbar.elements();
244-
viewport.scrollTo({ top: viewport.scrollHeight, behavior: 'smooth' });
245-
}, 200);
246-
});
237+
scrollbars.forEach(scrollbar => {
238+
setTimeout(() => {
239+
scrollbar.scrollTo({ top: scrollbar.scrollHeight, behavior: 'smooth' });
240+
}, 200);
241+
})
247242
}
248243
249244
/** @param {import('$types').ChatResponseModel[]} dialogs */
@@ -789,9 +784,11 @@
789784
790785
elements.forEach(item => {
791786
const scrollElement = document.querySelector(item.wrapperName);
792-
const logScroll = OverlayScrollbars(scrollElement, options);
793-
const { viewport } = logScroll.elements();
794-
viewport.scrollTo({ top: item.elm.offsetTop, behavior: 'smooth' });
787+
if (!!scrollElement && !!item.elm) {
788+
const logScroll = OverlayScrollbars(scrollElement, options);
789+
const { viewport } = logScroll.elements();
790+
viewport.scrollTo({ top: item.elm.offsetTop - 5, behavior: 'smooth' });
791+
}
795792
});
796793
}
797794
@@ -915,7 +912,7 @@
915912
</div>
916913
</div>
917914
918-
<div class="chat-scrollbar" style="height: 82%">
915+
<div class="chat-scrollbar scroll-bottom-to-top" style="height: 82%;">
919916
<div class="chat-conversation p-3">
920917
<ul class="list-unstyled mb-0">
921918
{#each Object.entries(groupedDialogs) as [createDate, dialogGroup]}

0 commit comments

Comments
 (0)