Skip to content
Snippets Groups Projects
Commit 71f8978c authored by Dominik Seeger's avatar Dominik Seeger
Browse files

added shortkey handler

parent dbfdc3d6
Branches
Tags
1 merge request!184Resolve "Eingabe einer Zahl außerhalb des Kommentarfeldes trägt Zahl in Score ein"
Pipeline #107878 passed
......@@ -18,6 +18,7 @@
<v-flex xs5 class="score-flex">
<span class="mr-2">Score:</span>
<input class="score-text-field"
v-shortkey="'numeric'" @shortkey="handleKeypress"
id="score-input"
type="number"
step="0.5"
......@@ -172,6 +173,15 @@ export default {
} else {
throw new Error("Can't skip submission when skippable is false for AnnotatedSubmissionBottomToolbar.")
}
},
handleKeypress (event) {
// only handle keypress if nothing is focused
if (document.activeElement.tagName === "BODY") {
this.score = event.key
const scoreInput = document.getElementById('score-input')
scoreInput.scrollIntoView()
scoreInput.focus()
}
}
}
}
......
......@@ -14,6 +14,8 @@ import * as Integrations from '@sentry/integrations'
import 'vuetify/dist/vuetify.min.css'
import 'highlight.js/styles/atom-one-light.css'
import "@/util/shortkeys"
Vue.use(Vuetify)
Vue.use(Clipboard)
Vue.use(Notifications)
......
import Vue from "vue";
const shortkeyTypes = {
numeric: (key: string) => { return Number(key) >= 0 && Number(key) <= 9 }
}
const handlerFunc = (el: any, bind: any) => {
return (event: KeyboardEvent) => {
// handle numeric key press
if (bind.value === "numeric" && shortkeyTypes.numeric(event.key)) {
const e = new KeyboardEvent('shortkey', { bubbles: false, key: event.key })
el.dispatchEvent(e)
}
}
}
// add the v-shortkey directive to Vue
// usage: <tag v-shortkey="<shortkeyType>" @shortkey="<handlerFunc>"></tag>
Vue.directive('shortkey', {
bind: (el, bind) => {
window.addEventListener("keypress", handlerFunc(el, bind))
},
unbind: (el, bind) => {
window.removeEventListener("keypress", handlerFunc(el, bind))
}
})
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment