Add missing component code.

This commit is contained in:
Roger Braun 2017-12-05 11:02:41 +01:00
parent fbee80474b
commit 0e51fac2b2
2 changed files with 75 additions and 0 deletions

View file

@ -0,0 +1,26 @@
const chat = {
data () {
return {
messages: [],
currentMessage: '',
socket: this.$store.state.users.socket,
channel: null
}
},
created () {
this.channel = this.socket.channel('chat:public')
this.channel.on('new_msg', (msg) => {
this.messages.push(msg)
this.messages = this.messages.slice(-19, 20)
})
this.channel.join()
},
methods: {
submit(message) {
this.channel.push('new_msg', {text: message}, 10000)
this.currentMessage = '';
}
}
}
export default chat;

View file

@ -0,0 +1,49 @@
<template>
<div class="chat-panel panel panel-default">
<div class="panel-heading timeline-heading base02-background base04">
<div class="title">
{{$t('chat.title')}}
</div>
</div>
<div class="panel-body base01-background">
<div class="chat-window">
<div class="chat-message" v-for="message in messages">
<span class="chat-avatar">
<img :src="message.author.avatar" />
{{message.author.username}}:
</span>
<span class="chat-text">
{{message.text}}
</span>
</div>
</div>
<div class="chat-input">
<input v-model="currentMessage" type="text" @keyup.enter="submit(currentMessage)">
</div>
</div>
</div>
</template>
<script src="./chat.js"></script>
<style lang="scss">
.chat-message {
padding: 0.2em 0.5em
}
.chat-avatar {
img {
height: 32px;
width: 32px;
border-radius: 5px;
margin-right: 0.5em;
}
}
.chat-input {
display: flex;
input {
flex: auto;
margin: 0.5em;
}
}
</style>