diff --git a/api/src/main/resources/static/js/chat.js b/api/src/main/resources/static/js/chat.js index ba4450c1..64ca585c 100644 --- a/api/src/main/resources/static/js/chat.js +++ b/api/src/main/resources/static/js/chat.js @@ -271,8 +271,12 @@ export function switchToAgent(agentName,agentId, sessionId, agentHost) { appendToChatWindow(msg.sender, msg.message); }); - container.classList.remove("hidden"); - container.style.display = "block"; + // Show container with animation + container.style.display = "flex"; + setTimeout(() => { + container.classList.remove("hidden"); + }, 10); + console.log("Chat container displayed"); } @@ -307,14 +311,49 @@ export function appendToChatWindow(sender, message) { const chatBox = document.getElementById("chat-messages"); const div = document.createElement("div"); div.classList.add("chat-message"); - div.innerHTML = `${sender}: ${message}`; + + // Determine if message is from user or agent + const isUser = sender === "You" || sender === "user"; + div.classList.add(isUser ? "user" : "agent"); + + // Create message content with modern styling + const messageContent = document.createElement("div"); + messageContent.classList.add("chat-message-content"); + messageContent.textContent = message; + + // Add sender name (smaller, less prominent) + const senderElement = document.createElement("strong"); + senderElement.textContent = sender; + + div.appendChild(senderElement); + div.appendChild(messageContent); + chatBox.appendChild(div); chatBox.scrollTop = chatBox.scrollHeight; } export function toggleChat() { const container = document.getElementById("chat-container"); - container.classList.toggle("hidden"); + + if (container.classList.contains("hidden")) { + container.style.display = "flex"; + // Small delay to ensure display change is processed + setTimeout(() => { + container.classList.remove("hidden"); + }, 10); + + // Focus input when opening + setTimeout(() => { + const input = document.getElementById("chat-input"); + if (input) input.focus(); + }, 300); + } else { + container.classList.add("hidden"); + // Hide after animation completes + setTimeout(() => { + container.style.display = "none"; + }, 300); + } } // ========================= @@ -344,4 +383,5 @@ export async function fetchAvailableAgents() { } } -window.sendMessage = sendMessage; \ No newline at end of file +window.sendMessage = sendMessage; +window.toggleChat = toggleChat; \ No newline at end of file diff --git a/api/src/main/resources/templates/fragments/chat.html b/api/src/main/resources/templates/fragments/chat.html index a4204ad1..df88cdeb 100644 --- a/api/src/main/resources/templates/fragments/chat.html +++ b/api/src/main/resources/templates/fragments/chat.html @@ -6,83 +6,164 @@ let chatFocus = false; let chatConnection = null; - function toggleChat() { - let chatContainer = document.getElementById("chat-container"); - if (chatContainer.style.display === "none" || chatContainer.style.display === "") { - chatContainer.style.display = "flex"; - document.getElementById("chat-input").focus(); - termFocus = false; - chatFocus = true; - enableSessionChat(); - } else { - chatContainer.style.display = (chatContainer.style.display === "none" || chatContainer.style.display === "") ? "flex" : "none"; - } - // + function toggleChat() { + let chatContainer = document.getElementById("chat-container"); + + if (chatContainer.style.display === "none" || chatContainer.style.display === "") { + chatContainer.style.display = "flex"; + // Small delay to ensure display change is processed + setTimeout(() => { + chatContainer.classList.remove("hidden"); + }, 10); + + // Focus input when opening + setTimeout(() => { + const input = document.getElementById("chat-input"); + if (input) input.focus(); + }, 300); + + termFocus = false; + chatFocus = true; + enableSessionChat(); + } else { + chatContainer.classList.add("hidden"); + // Hide after animation completes + setTimeout(() => { + chatContainer.style.display = "none"; + }, 300); + } } - diff --git a/api/src/main/resources/templates/sso/dashboard.html b/api/src/main/resources/templates/sso/dashboard.html index 999b4b9c..60006ff0 100755 --- a/api/src/main/resources/templates/sso/dashboard.html +++ b/api/src/main/resources/templates/sso/dashboard.html @@ -351,35 +351,168 @@ }); -