mirror of
https://github.com/kevin-DL/build-gmail-clone-with-vue-3.git
synced 2026-01-22 07:05:20 +00:00
keydown abstracted to useKeydown
This commit is contained in:
@@ -8,20 +8,11 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { onMounted, onBeforeUnmount } from 'vue';
|
import { useKeydown } from '../composition/useKeydown';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
setup({closeModal}, context){
|
setup({closeModal}, context){
|
||||||
let onkey = function(event){
|
useKeydown([{key: 'Escape', fn: closeModal}])
|
||||||
if(event.key == 'Escape') {
|
|
||||||
closeModal()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onMounted(()=> {
|
|
||||||
window.addEventListener('keydown', onkey);
|
|
||||||
})
|
|
||||||
onBeforeUnmount(()=> {
|
|
||||||
window.removeEventListener('keydown', onkey);
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
closeModal: {
|
closeModal: {
|
||||||
|
|||||||
20
src/composition/useKeydown.js
Normal file
20
src/composition/useKeydown.js
Normal 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;
|
||||||
Reference in New Issue
Block a user