✨ Site > Chat > Add auto scroll
This commit is contained in:
@@ -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,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>
|
||||||
|
|||||||
Reference in New Issue
Block a user