|
76 | 76 | function sendRecipeRequest(message) { |
77 | 77 | // Ensure we don't add on to the previous message |
78 | 78 | assistantMessageFinished(); |
79 | | - addAssistantMessageToUI("Executing Recipe: " + message); |
| 79 | + addAssistantMessageToUI({ |
| 80 | + textContent: "Executing Recipe: " + message, |
| 81 | + outcome: "success", |
| 82 | + }); |
80 | 83 | // Ensure new responses don't get added on to this one |
81 | 84 | assistantMessageFinished(); |
82 | 85 | sendRequestToExtension(message); |
|
103 | 106 | ); |
104 | 107 | userMessageElement.innerHTML = templateMessage; |
105 | 108 | chatContainer.append(userMessageElement); |
| 109 | + userMessageElement.scrollIntoView(); |
106 | 110 | assistantMessageFinished(); |
107 | 111 | } |
108 | 112 |
|
|
116 | 120 | const addMessageToCurrentAssistantMessage = () => { |
117 | 121 | let assistantMessageSpan = document.createElement("span"); |
118 | 122 | assistantMessageSpan.textContent = message.textContent; |
119 | | - if (message.outcome === "error") { |
120 | | - assistantMessageSpan.style.color = "red"; |
121 | | - } |
122 | 123 | currentAssistantMessage.append(assistantMessageSpan); |
| 124 | + assistantMessageSpan.scrollIntoView(); |
123 | 125 | }; |
124 | 126 |
|
125 | | - if (currentAssistantMessage != null) { |
| 127 | + if (currentAssistantMessage != null && message.outcome !== "error") { |
126 | 128 | addMessageToCurrentAssistantMessage(); |
127 | 129 | } else { |
128 | 130 | const templateContents = ` |
|
139 | 141 | assistantMessageElement.classList.add( |
140 | 142 | "sidebar__chat-assistant--chat-bubble-agent" |
141 | 143 | ); |
| 144 | + |
| 145 | + if (message.outcome === "error") { |
| 146 | + assistantMessageElement.classList.add( |
| 147 | + "sidebar__chat-assistant--chat-bubble-error" |
| 148 | + ); |
| 149 | + } |
142 | 150 | assistantMessageElement.innerHTML = templateContents; |
143 | 151 | chatContainer.append(assistantMessageElement); |
144 | 152 | currentAssistantMessage = assistantMessageElement.querySelector( |
|
155 | 163 | } |
156 | 164 | thinkingMessage = thinkingMessageElement; |
157 | 165 | chatContainer.append(thinkingMessage); |
| 166 | + thinkingMessage.scrollIntoView(); |
158 | 167 | } |
159 | 168 |
|
160 | 169 | // Enable/Disable send button depending on whether text area is empty |
|
164 | 173 | } else { |
165 | 174 | sendButton.classList.add("sidebar__textarea-send-button--disabled"); |
166 | 175 | } |
| 176 | + adjustTextareaHeight(messageInput); |
167 | 177 | } |
168 | 178 |
|
169 | | - // Check for disable/enable send button |
| 179 | + // Check for disable/enable send button and sizing |
170 | 180 | messageInput.addEventListener("input", checkTextarea); |
171 | 181 |
|
172 | 182 | // Check to see if we need to disable send button on backspace |
|
183 | 193 | sendUserMessage(); |
184 | 194 | } |
185 | 195 | }); |
| 196 | + |
| 197 | + const adjustTextareaHeight = (textarea) => { |
| 198 | + // Reset height to auto to get the actual scroll height, and set it to that value |
| 199 | + textarea.style.height = "auto"; |
| 200 | + textarea.style.height = textarea.scrollHeight + "px"; |
| 201 | + |
| 202 | + // Check if scrolling occurs after setting the new height |
| 203 | + if (textarea.clientHeight < textarea.scrollHeight) { |
| 204 | + textarea.style.height = textarea.scrollHeight + "px"; |
| 205 | + } |
| 206 | + }; |
186 | 207 | })(); |
0 commit comments