Lesson 8 - use-keydown composable

This commit is contained in:
Jeffrey Biles
2020-07-02 16:22:54 -07:00
parent fa0cb214f8
commit d3fc83dd9c
2 changed files with 23 additions and 15 deletions

View File

@@ -8,22 +8,13 @@
</template> </template>
<script> <script>
import { onBeforeUnmount } from 'vue' import useKeydown from '../composables/use-keydown';
export default { export default {
setup(props, {emit}) { setup(props, {emit}) {
let onKeydown = (event) => { useKeydown([
console.log(event.key) {key: 'Escape', fn: () => { emit('closeModal') }},
])
if(event.key == 'Escape') {
emit('closeModal')
}
}
window.addEventListener('keydown', onKeydown)
onBeforeUnmount(()=>{
window.removeEventListener('keydown', onKeydown)
})
return { return {
emit emit

View File

@@ -0,0 +1,17 @@
import { onBeforeUnmount } from 'vue'
let useKeydown = (keyCombos) => {
let onKeydown = (event) => {
let kc = keyCombos.find(kc => kc.key == event.key)
if(kc) {
kc.fn()
}
}
window.addEventListener('keydown', onKeydown)
onBeforeUnmount(()=>{
window.removeEventListener('keydown', onKeydown)
})
}
export default useKeydown;