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/Button.vue b/components/Button.vue
index fb44cf2..66706de 100644
--- a/components/Button.vue
+++ b/components/Button.vue
@@ -21,7 +21,7 @@ const props = defineProps<{
background-color: var(--primary-color);
color: var(--text-color);
- padding: 0.7dvh 1.2dvw;
+ padding: 0.4em 0.75em;
font-size: 1.1em;
transition: background-color 0.2s;
diff --git a/components/Channel.vue b/components/Channel.vue
index 0f48323..98f210e 100644
--- a/components/Channel.vue
+++ b/components/Channel.vue
@@ -23,14 +23,14 @@ const isCurrentChannel = props.uuid == props.currentUuid;
.channel-list-link {
text-decoration: none;
color: inherit;
- padding-left: .5dvw;
- padding-right: .5dvw;
+ padding-left: .25em;
+ padding-right: .25em;
}
.channel-list-link-container {
text-align: left;
display: flex;
- height: 4dvh;
+ height: 1.5em;
white-space: nowrap;
align-items: center;
}
diff --git a/components/Message.vue b/components/Message.vue
index dce8ed4..eb073ac 100644
--- a/components/Message.vue
+++ b/components/Message.vue
@@ -188,12 +188,12 @@ function getDayDifference(date1: Date, date2: Date) {
diff --git a/components/MessageArea.vue b/components/MessageArea.vue
index 18b9ac5..fff4a5c 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,63 @@ router.beforeEach((to, from, next) => {
\ No newline at end of file
diff --git a/pages/index.vue b/pages/index.vue
index f970926..41deadf 100644
--- a/pages/index.vue
+++ b/pages/index.vue
@@ -1,6 +1,19 @@
-
+
+
+
+
+ Welcome to gorb :3
+
+
+ Click on a guild to the left to view a guild.
+
+ Or click the button in the bottom left to join a guild.
+
+
+
+
diff --git a/pages/servers/[serverId]/channels/[channelId].vue b/pages/servers/[serverId]/channels/[channelId].vue
index 6bdcc7c..5c55655 100644
--- a/pages/servers/[serverId]/channels/[channelId].vue
+++ b/pages/servers/[serverId]/channels/[channelId].vue
@@ -83,36 +83,36 @@ function handleMemberClick(member: GuildMemberResponse) {