From f69a12a912d425c9d2b4a456a0cbbb2378babd44 Mon Sep 17 00:00:00 2001
From: shpuld <shp@cock.li>
Date: Wed, 11 Apr 2018 00:17:05 +0300
Subject: [PATCH 1/3] Make chat collapsable and expandable, make chat look a
 tiny bit nicer (still works like crap when it comes to scrolling)

---
 src/components/chat_panel/chat_panel.js  |  7 +++-
 src/components/chat_panel/chat_panel.vue | 49 +++++++++++++++++++-----
 2 files changed, 46 insertions(+), 10 deletions(-)

diff --git a/src/components/chat_panel/chat_panel.js b/src/components/chat_panel/chat_panel.js
index b146c5d9..afde7352 100644
--- a/src/components/chat_panel/chat_panel.js
+++ b/src/components/chat_panel/chat_panel.js
@@ -2,7 +2,8 @@ const chatPanel = {
   data () {
     return {
       currentMessage: '',
-      channel: null
+      channel: null,
+      collapsed: false
     }
   },
   computed: {
@@ -12,8 +13,12 @@ const chatPanel = {
   },
   methods: {
     submit (message) {
+      console.log(this.currentMessage)
       this.$store.state.chat.channel.push('new_msg', {text: message}, 10000)
       this.currentMessage = ''
+    },
+    togglePanel () {
+      this.collapsed = !this.collapsed
     }
   }
 }
diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/chat_panel/chat_panel.vue
index 50bd0017..9339dfb6 100644
--- a/src/components/chat_panel/chat_panel.vue
+++ b/src/components/chat_panel/chat_panel.vue
@@ -1,35 +1,54 @@
 <template>
-  <div class="chat-panel">
+  <div class="chat-panel" v-if="this.collapsed">
     <div class="panel panel-default">
-      <div class="panel-heading timeline-heading">
+      <div class="panel-heading timeline-heading chat-heading" @click.stop.prevent="togglePanel">
         <div class="title">
           {{$t('chat.title')}}
+          <i class="icon-cancel" style="float: right;"></i>
         </div>
       </div>
       <div class="chat-window" v-chat-scroll>
         <div class="chat-message" v-for="message in messages" :key="message.id">
           <span class="chat-avatar">
             <img :src="message.author.avatar" />
-            {{message.author.username}}:
-          </span>
-          <span class="chat-text">
-            {{message.text}}
           </span>
+          <div class="chat-content">
+            <router-link class="chat-name" :to="{ name: 'user-profile', params: { id: message.author.id } }">
+              {{message.author.username}}
+            </router-link>
+            <br>
+            <span class="chat-text">
+              {{message.text}}
+            </span>
+          </div>
         </div>
       </div>
       <div class="chat-input">
         <form @submit.prevent="submit(currentMessage)">
-          <input v-model="currentMessage" type="text" >
+          <textarea @keyup.enter="submit(currentMessage)" v-model="currentMessage" class="chat-input-textarea" rows="1"></textarea>
         </form>
       </div>
     </div>
   </div>
+  <div v-else class="chat-panel">
+    <div class="panel panel-default">
+      <div class="panel-heading panel-footer timeline-heading chat-heading" @click.stop.prevent="togglePanel">
+        <div class="title">
+          {{$t('chat.title')}}
+          <i class="icon-plus-squared" style="float: right;"></i>
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script src="./chat_panel.js"></script>
 
 <style lang="scss">
 @import '../../_variables.scss';
+.chat-heading {
+  cursor: pointer;
+}
 
 .chat-window {
   max-height: 200px;
@@ -37,17 +56,22 @@
   overflow-x: hidden;
 }
 
+.chat-name {
+}
+
 .chat-message {
+  display: flex;
   padding: 0.2em 0.5em
 }
 
 .chat-avatar {
   img {
-    height: 32px;
-    width: 32px;
+    height: 24px;
+    width: 24px;
     border-radius: $fallback--avatarRadius;
     border-radius: var(--avatarRadius, $fallback--avatarRadius);
     margin-right: 0.5em;
+    margin-top: 0.25em;
   }
 }
 
@@ -55,10 +79,17 @@
   display: flex;
   form {
     flex: auto;
+    display: flex;
     input {
       margin: 0.5em;
       width: fill-available;
     }
+    textarea {
+      flex: 1;
+      margin: 0.6em;
+      min-height: 3.5em;
+      resize: none;
+    }
   }
 }
 </style>

From 49aa2d5fb7e13398c2fde83966cb8ae2fe228008 Mon Sep 17 00:00:00 2001
From: shpuld <shp@cock.li>
Date: Wed, 11 Apr 2018 00:19:28 +0300
Subject: [PATCH 2/3] cleanup

---
 src/components/chat_panel/chat_panel.js  |  1 -
 src/components/chat_panel/chat_panel.vue | 22 ++++++----------------
 2 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/src/components/chat_panel/chat_panel.js b/src/components/chat_panel/chat_panel.js
index afde7352..d528d0a1 100644
--- a/src/components/chat_panel/chat_panel.js
+++ b/src/components/chat_panel/chat_panel.js
@@ -13,7 +13,6 @@ const chatPanel = {
   },
   methods: {
     submit (message) {
-      console.log(this.currentMessage)
       this.$store.state.chat.channel.push('new_msg', {text: message}, 10000)
       this.currentMessage = ''
     },
diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/chat_panel/chat_panel.vue
index 9339dfb6..969088f4 100644
--- a/src/components/chat_panel/chat_panel.vue
+++ b/src/components/chat_panel/chat_panel.vue
@@ -24,9 +24,7 @@
         </div>
       </div>
       <div class="chat-input">
-        <form @submit.prevent="submit(currentMessage)">
-          <textarea @keyup.enter="submit(currentMessage)" v-model="currentMessage" class="chat-input-textarea" rows="1"></textarea>
-        </form>
+        <textarea @keyup.enter="submit(currentMessage)" v-model="currentMessage" class="chat-input-textarea" rows="1"></textarea>
       </div>
     </div>
   </div>
@@ -77,19 +75,11 @@
 
 .chat-input {
   display: flex;
-  form {
-    flex: auto;
-    display: flex;
-    input {
-      margin: 0.5em;
-      width: fill-available;
-    }
-    textarea {
-      flex: 1;
-      margin: 0.6em;
-      min-height: 3.5em;
-      resize: none;
-    }
+  textarea {
+    flex: 1;
+    margin: 0.6em;
+    min-height: 3.5em;
+    resize: none;
   }
 }
 </style>

From 2258c9c1e7a2d8d6919e2514b5a8cdda74a4468e Mon Sep 17 00:00:00 2001
From: shpuld <shp@cock.li>
Date: Wed, 11 Apr 2018 00:20:42 +0300
Subject: [PATCH 3/3] Make collapsed-state hide chat and not the wrong way
 around

---
 src/components/chat_panel/chat_panel.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/chat_panel/chat_panel.vue
index 969088f4..46e011dc 100644
--- a/src/components/chat_panel/chat_panel.vue
+++ b/src/components/chat_panel/chat_panel.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="chat-panel" v-if="this.collapsed">
+  <div class="chat-panel" v-if="!this.collapsed">
     <div class="panel panel-default">
       <div class="panel-heading timeline-heading chat-heading" @click.stop.prevent="togglePanel">
         <div class="title">