diff --git a/app.vue b/app.vue
index 7af306b..cb5ec34 100644
--- a/app.vue
+++ b/app.vue
@@ -33,7 +33,7 @@ body {
font-family: Arial, Helvetica, sans-serif;
box-sizing: border-box;
color: var(--text-color);
- background: var(--optional-chat-background);
+ background: var(--optional-body-background);
background-color: var(--chat-background-color);
margin: 0;
}
diff --git a/components/MessageArea.vue b/components/MessageArea.vue
index 18b9ac5..aa50cbc 100644
--- a/components/MessageArea.vue
+++ b/components/MessageArea.vue
@@ -9,11 +9,28 @@
@@ -106,11 +123,38 @@ function pushMessage(message: MessageResponse) {
messages.value.push(message);
}
+function handleTextboxKeyDown(event: KeyboardEvent) {
+ if (event.key === "Enter" && event.shiftKey && messageTextboxInput.value) {
+ // this enters a newline, due to not preventing default
+ } else if (event.key === "Enter") {
+ event.preventDefault()
+ sendMessage(event)
+ }
+
+ adjustTextboxHeight()
+}
+
+function handleTextboxInput() {
+ if (messageTextboxInput.value) {
+ messageInput.value = messageTextboxInput.value.innerText;
+ }
+
+ adjustTextboxHeight()
+}
+
+// this technically uses pixel units, but it's still set using dynamic units
+function adjustTextboxHeight() {
+ if (messageTextboxInput.value && messageTextboxDisplay.value) {
+ messageTextboxInput.value.style.height = "auto"
+ messageTextboxInput.value.style.height = `${messageTextboxInput.value.scrollHeight}px`
+ }
+}
+
const messages = ref([]);
-
-const messageInput = ref();
-
+const messageInput = ref("");
const messagesElement = ref();
+const messageTextboxInput = ref();
+const messageTextboxDisplay = ref();
if (messagesRes) messages.value = messagesRes;
@@ -158,14 +202,21 @@ if (accessToken && apiBase) {
function sendMessage(e: Event) {
e.preventDefault();
- const message = {
- message: messageInput.value
- }
- console.log("message:", message);
- if (message.message) {
+ if (messageInput.value && messageInput.value.trim() !== "") {
+ const message = {
+ message: messageInput.value.trim().replace(/\n/g, "
") // trim, and replace \n with
+ }
+
+ console.log("message:", message);
ws.send(JSON.stringify(message));
- messageInput.value = "";
- console.log("MESSAGE SENT!!!");
+
+ // reset input field
+ messageInput.value = ""
+ if (messageTextboxInput.value) {
+ messageTextboxInput.value.innerText = ""
+ }
+
+ adjustTextboxHeight()
}
}
@@ -241,38 +292,62 @@ router.beforeEach((to, from, next) => {