Skip to content

Commit eb20c8e

Browse files
committed
Enhance ChatWindow component: implement auto-scrolling for new messages and adjust layout for better visibility
1 parent 354f6b3 commit eb20c8e

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

frontend/src/components/chats/ChatWindow.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from "@/lib/utils";
88
import { User } from "@/types/user.type";
99
import { Send } from "lucide-react";
10-
import { useState } from "react";
10+
import { useEffect, useRef, useState } from "react";
1111

1212
interface Message {
1313
id: string;
@@ -26,6 +26,11 @@ export default function ChatWindow({
2626
onMessageSend: (message: { text: string }) => void;
2727
}) {
2828
const [newMessage, setNewMessage] = useState("");
29+
const messagesEndRef = useRef<HTMLDivElement>(null);
30+
useEffect(() => {
31+
console.log(messagesEndRef.current);
32+
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
33+
}, [messages]);
2934

3035
const handleSendMessage = () => {
3136
if (newMessage.trim()) {
@@ -57,7 +62,7 @@ export default function ChatWindow({
5762
<p className="text-sm text-gray-500">Unkown Status</p>
5863
</div>
5964
</div>
60-
<div className="flex-1 overflow-y-auto p-4 space-y-4">
65+
<div className="flex-1 overflow-y-auto p-4 space-y-4 max-h-[calc(100vh-265px)]">
6166
{messages.map((message) => (
6267
<div
6368
key={message.id}
@@ -83,6 +88,7 @@ export default function ChatWindow({
8388
</div>
8489
</div>
8590
))}
91+
<div ref={messagesEndRef} />
8692
</div>
8793
<div className="border-t border-gray-200 dark:border-slate-800 p-4">
8894
<div className="flex space-x-2">

0 commit comments

Comments
 (0)