| | |
| | | <script setup> |
| | | |
| | | import * as itemOffset from '../lib/itemOffset.js' |
| | | import {onKeyStroke} from "@vueuse/core" |
| | | |
| | | const props = defineProps({ |
| | | total: Number, |
| | | offset: Number, |
| | |
| | | const emit = defineEmits(["go"]) |
| | | |
| | | function goStart () { |
| | | const {offset, limit, total} = props |
| | | console.log("goStart", {offset, limit, total}) |
| | | emit("go", 0) |
| | | const offset2 = itemOffset.goStart(props.offset, props.limit, props.total) |
| | | emit("go", offset2) |
| | | } |
| | | |
| | | function goEnd () { |
| | | const {offset, limit, total} = props |
| | | console.log("goEnd ", {offset, limit, total}) |
| | | emit("go", Math.floor(total / limit) * limit) |
| | | const offset2 = itemOffset.goEnd(props.offset, props.limit, props.total) |
| | | emit("go", offset2) |
| | | } |
| | | |
| | | function goPrev () { |
| | | const {offset, limit, total} = props |
| | | console.log("goPrev", {offset, limit, total}) |
| | | emit("go", Math.max(0, offset - limit)) |
| | | function goPrev (multiplier = 1) { |
| | | const offset2 = itemOffset.goPrev(props.offset, props.limit * multiplier, props.total) |
| | | emit("go", offset2) |
| | | } |
| | | |
| | | function goNext () { |
| | | const {offset, limit, total} = props |
| | | console.log("goNext", {offset, limit, total}) |
| | | console.log(total%limit) |
| | | const maxNext = Math.floor(total/limit)*limit |
| | | const nextNext = offset+limit |
| | | let noffset = Math.min(maxNext, nextNext) |
| | | // console.log({maxNext,nextNext,noffset}) |
| | | emit("go", noffset) |
| | | function goNext (multiplier = 1) { |
| | | const offset2 = itemOffset.goNext(props.offset, props.limit * multiplier, props.total) |
| | | emit("go", offset2) |
| | | } |
| | | |
| | | /////// KEYBOARD //////////////////////////////////////////////////////////////// |
| | | |
| | | onKeyStroke(["ArrowLeft", "ArrowRight"], (e) => { |
| | | let multiplier = 1 |
| | | switch (e.key) { |
| | | case "ArrowLeft": |
| | | console.log("go left") |
| | | multiplier = e.shiftKey ? 10 : 1 |
| | | goPrev(multiplier) |
| | | break |
| | | case "ArrowRight": |
| | | console.log("go right") |
| | | multiplier = e.shiftKey ? 10 : 1 |
| | | goNext(multiplier) |
| | | break |
| | | } |
| | | }) |
| | | |
| | | |
| | | </script> |
| | |
| | | |
| | | .start, .end, .prev, .next |
| | | font-size 130% |
| | | |
| | | //width 1em |
| | | .current |
| | | width 12em; |