mirror of
https://github.com/kevin-DL/build-gmail-clone-with-vue-3.git
synced 2026-01-16 12:54:42 +00:00
Lesson 8 - use-keydown composable
This commit is contained in:
@@ -8,23 +8,14 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { onBeforeUnmount } from 'vue'
|
||||
|
||||
import useKeydown from '../composables/use-keydown';
|
||||
|
||||
export default {
|
||||
setup(props, {emit}) {
|
||||
let onKeydown = (event) => {
|
||||
console.log(event.key)
|
||||
|
||||
if(event.key == 'Escape') {
|
||||
emit('closeModal')
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener('keydown', onKeydown)
|
||||
onBeforeUnmount(()=>{
|
||||
window.removeEventListener('keydown', onKeydown)
|
||||
})
|
||||
|
||||
useKeydown([
|
||||
{key: 'Escape', fn: () => { emit('closeModal') }},
|
||||
])
|
||||
|
||||
return {
|
||||
emit
|
||||
}
|
||||
|
||||
17
src/composables/use-keydown.js
Normal file
17
src/composables/use-keydown.js
Normal 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;
|
||||
Reference in New Issue
Block a user