Site > Chat > Add auto scroll

This commit is contained in:
brunosimon
2017-08-15 01:53:05 +02:00
parent bf5af4e3c7
commit 92d996731a
2 changed files with 35 additions and 10 deletions
+23
View File
@@ -29,11 +29,29 @@ export default
user(value) user(value)
{ {
this.userName = value.name this.userName = value.name
},
messages()
{
window.requestAnimationFrame(() =>
{
if(this.atBottom)
{
this.$messages.scrollTop = this.$innerMessages.offsetHeight - this.$messages.offsetHeight
} }
})
}
},
created()
{
this.atBottom = true
}, },
mounted() mounted()
{ {
this.$messages = this.$el.querySelector('.messages')
this.$innerMessages = this.$messages.querySelector('.inner-messages')
}, },
methods: methods:
@@ -68,6 +86,11 @@ export default
this.$store.commit('setPendingMessage', { text: this.messageText }) this.$store.commit('setPendingMessage', { text: this.messageText })
this.messageText = '' this.messageText = ''
} }
},
onMessagesScroll()
{
this.atBottom = this.$messages.scrollTop + this.$messages.offsetHeight >= this.$innerMessages.offsetHeight - 15
} }
} }
} }
+3 -1
View File
@@ -3,7 +3,8 @@
Discussions Discussions
</header> </header>
<div class="content" v-show="open"> <div class="content" v-show="open">
<div class="messages"> <div class="messages" @scroll="onMessagesScroll">
<div class="inner-messages">
<div class="message" v-for="message of messages" :key="message.date"> <div class="message" v-for="message of messages" :key="message.date">
<div class="date"> <div class="date">
{{ message.time }} {{ message.time }}
@@ -16,6 +17,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="infos" v-if="user"> <div class="infos" v-if="user">
Your nickname is <input class="user-name" :style="`color: ${user.color};`" v-model="userName" @change="onUserNameChange($event)" @keydown="onUserNameKeyDown($event)"/> Your nickname is <input class="user-name" :style="`color: ${user.color};`" v-model="userName" @change="onUserNameChange($event)" @keydown="onUserNameKeyDown($event)"/>
</div> </div>