keydown abstracted to useKeydown

This commit is contained in:
Jeffrey Biles
2020-03-18 17:09:08 -07:00
parent de4d62e6db
commit f1f0a502b2
2 changed files with 23 additions and 12 deletions

View File

@@ -8,20 +8,11 @@
</template>
<script>
import { onMounted, onBeforeUnmount } from 'vue';
import { useKeydown } from '../composition/useKeydown';
export default {
setup({closeModal}, context){
let onkey = function(event){
if(event.key == 'Escape') {
closeModal()
}
}
onMounted(()=> {
window.addEventListener('keydown', onkey);
})
onBeforeUnmount(()=> {
window.removeEventListener('keydown', onkey);
})
useKeydown([{key: 'Escape', fn: closeModal}])
},
props: {
closeModal: {

View File

@@ -0,0 +1,20 @@
import { onMounted, onBeforeUnmount } from 'vue';
export const useKeydown = function(keyCombos) {
keyCombos.forEach(({key, fn}) => {
let onkey = function(event) {
if(event.key == key) {
fn()
}
}
onMounted(()=> {
window.addEventListener('keydown', onkey);
})
onBeforeUnmount(()=> {
window.removeEventListener('keydown', onkey);
})
})
}
export default useKeydown;