mirror of
https://github.com/kevin-DL/build-gmail-clone-with-vue-3.git
synced 2026-01-22 23:25:26 +00:00
Lesson 8 - use-keydown composable
This commit is contained in:
@@ -8,23 +8,14 @@
|
|||||||
</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
|
||||||
}
|
}
|
||||||
|
|||||||
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