|
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