mirror of
https://github.com/gotson/komga.git
synced 2026-05-09 05:10:19 +02:00
fix(webreader): jump to previous or next book via keyboard
pageUp, arrowUp when at the beginning of the book pageDown, arrowDown, or Space when at the end of the book closes #722
This commit is contained in:
parent
3ba029efef
commit
ac3d969a0f
1 changed files with 21 additions and 1 deletions
|
|
@ -39,6 +39,7 @@
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import {ContinuousScaleType} from '@/types/enum-reader'
|
import {ContinuousScaleType} from '@/types/enum-reader'
|
||||||
import {PageDtoWithUrl} from '@/types/komga-books'
|
import {PageDtoWithUrl} from '@/types/komga-books'
|
||||||
|
import {throttle} from 'lodash'
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
name: 'ContinuousReader',
|
name: 'ContinuousReader',
|
||||||
|
|
@ -81,7 +82,7 @@ export default Vue.extend({
|
||||||
immediate: true,
|
immediate: true,
|
||||||
},
|
},
|
||||||
page: {
|
page: {
|
||||||
handler (val) {
|
handler(val) {
|
||||||
if (val != this.currentPage) {
|
if (val != this.currentPage) {
|
||||||
this.$vuetify.goTo(`#page${val}`, {
|
this.$vuetify.goTo(`#page${val}`, {
|
||||||
duration: 0,
|
duration: 0,
|
||||||
|
|
@ -91,6 +92,12 @@ export default Vue.extend({
|
||||||
immediate: false,
|
immediate: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
window.addEventListener('keydown', this.keyPressed)
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
window.removeEventListener('keydown', this.keyPressed)
|
||||||
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if (this.page != this.currentPage) {
|
if (this.page != this.currentPage) {
|
||||||
this.$vuetify.goTo(`#page${this.page}`, {
|
this.$vuetify.goTo(`#page${this.page}`, {
|
||||||
|
|
@ -114,6 +121,19 @@ export default Vue.extend({
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
keyPressed: throttle(function (this: any, e: KeyboardEvent) {
|
||||||
|
switch (e.key) {
|
||||||
|
case ' ':
|
||||||
|
case 'PageDown':
|
||||||
|
case 'ArrowDown':
|
||||||
|
if (!this.canNext) this.$emit('jump-next')
|
||||||
|
break
|
||||||
|
case 'PageUp':
|
||||||
|
case 'ArrowUp':
|
||||||
|
if (!this.canPrev) this.$emit('jump-previous')
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}, 500),
|
||||||
onScroll(e: any) {
|
onScroll(e: any) {
|
||||||
this.offsetTop = e.target.scrollingElement.scrollTop
|
this.offsetTop = e.target.scrollingElement.scrollTop
|
||||||
this.totalHeight = e.target.scrollingElement.scrollHeight
|
this.totalHeight = e.target.scrollingElement.scrollHeight
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue