<template> <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"> {{$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" /> </span> <div class="chat-content"> <router-link class="chat-name" :to="{ name: 'user-profile', params: { name: message.author.username } }"> {{message.author.username}} </router-link> <br> <span class="chat-text"> {{message.text}} </span> </div> </div> </div> <div class="chat-input"> <textarea @keyup.enter="submit(currentMessage)" v-model="currentMessage" class="chat-input-textarea" rows="1"></textarea> </div> </div> </div> <div v-else class="chat-panel"> <div class="panel panel-default"> <div class="panel-heading stub timeline-heading chat-heading" @click.stop.prevent="togglePanel"> <div class="title"> <i class="icon-comment-empty"></i> {{$t('chat.title')}} </div> </div> </div> </div> </template> <script src="./chat_panel.js"></script> <style lang="scss"> @import '../../_variables.scss'; .floating-chat { position: fixed; right: 0px; bottom: 0px; z-index: 1000; } .chat-heading { cursor: pointer; .icon-comment-empty { color: $fallback--fg; color: var(--fg, $fallback--fg); } } .chat-window { width: 345px; max-height: 40vh; overflow-y: auto; overflow-x: hidden; } .chat-name { } .chat-message { display: flex; padding: 0.2em 0.5em } .chat-avatar { img { height: 24px; width: 24px; border-radius: $fallback--avatarRadius; border-radius: var(--avatarRadius, $fallback--avatarRadius); margin-right: 0.5em; margin-top: 0.25em; } } .chat-input { display: flex; textarea { flex: 1; margin: 0.6em; min-height: 3.5em; resize: none; } } </style>