refs #750 Switch focus between Hashtag and Toot Detail using shortcut keys

This commit is contained in:
AkiraFukushima 2018-11-28 23:00:53 +09:00
parent 068cce09b8
commit 1edabdb50b
1 changed files with 15 additions and 0 deletions

View File

@ -14,6 +14,7 @@
v-on:delete="deleteToot" v-on:delete="deleteToot"
@focusNext="focusNext" @focusNext="focusNext"
@focusPrev="focusPrev" @focusPrev="focusPrev"
@focusRight="focusSidebar"
@selectToot="focusToot(message)" @selectToot="focusToot(message)"
> >
</toot> </toot>
@ -32,6 +33,7 @@ import { mapState, mapGetters } from 'vuex'
import Toot from '~/src/renderer/components/molecules/Toot' import Toot from '~/src/renderer/components/molecules/Toot'
import scrollTop from '../../../utils/scroll' import scrollTop from '../../../utils/scroll'
import reloadable from '~/src/renderer/components/mixins/reloadable' import reloadable from '~/src/renderer/components/mixins/reloadable'
import { Event } from '~/src/renderer/components/event'
export default { export default {
name: 'tag', name: 'tag',
@ -76,6 +78,15 @@ export default {
this.$store.commit('TimelineSpace/changeLoading', false) this.$store.commit('TimelineSpace/changeLoading', false)
}) })
document.getElementById('scrollable').addEventListener('scroll', this.onScroll) document.getElementById('scrollable').addEventListener('scroll', this.onScroll)
Event.$on('focus-timeline', () => {
// If focusedId does not change, we have to refresh focusedId because Toot component watch change events.
const previousFocusedId = this.focusedId
this.focusedId = 0
this.$nextTick(function () {
this.focusedId = previousFocusedId
})
})
}, },
watch: { watch: {
tag: function (newTag, oldTag) { tag: function (newTag, oldTag) {
@ -106,6 +117,7 @@ export default {
beforeDestroy () { beforeDestroy () {
this.$store.dispatch('TimelineSpace/Contents/Hashtag/Tag/stopStreaming') this.$store.dispatch('TimelineSpace/Contents/Hashtag/Tag/stopStreaming')
this.reset() this.reset()
Event.$off('focus-timeline')
}, },
methods: { methods: {
async load (tag) { async load (tag) {
@ -206,6 +218,9 @@ export default {
focusToot (message) { focusToot (message) {
this.focusedId = message.uri + message.id this.focusedId = message.uri + message.id
}, },
focusSidebar () {
Event.$emit('focus-sidebar')
},
handleKey (event) { handleKey (event) {
switch (event.srcKey) { switch (event.srcKey) {
case 'next': case 'next':