2018-07-21 20:00:37 +02:00
|
|
|
<template>
|
2018-08-25 18:15:19 +02:00
|
|
|
<v-dialog v-model="isModalShown" :max-width="maxWidth">
|
2018-07-21 20:00:37 +02:00
|
|
|
<slot></slot>
|
|
|
|
</v-dialog>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
beforeDestroy() {
|
|
|
|
window.removeEventListener('keydown', this.hideModalOnEsc);
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
isModalShown: {
|
|
|
|
get() {
|
|
|
|
return this.value;
|
|
|
|
},
|
|
|
|
set(val) {
|
|
|
|
this.$emit('input', val);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
hideModalOnEsc(event) {
|
|
|
|
let isEscape = false;
|
|
|
|
if ('key' in event) {
|
|
|
|
isEscape = (event.key === 'Escape' || event.key === 'Esc');
|
|
|
|
} else {
|
|
|
|
isEscape = (event.keyCode === 27);
|
|
|
|
}
|
|
|
|
if (isEscape) {
|
|
|
|
this.isModalShown = false;
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
window.addEventListener('keydown', this.hideModalOnEsc);
|
|
|
|
},
|
|
|
|
props: {
|
2018-08-25 18:15:19 +02:00
|
|
|
maxWidth: {
|
|
|
|
type: Number,
|
|
|
|
default: 290,
|
|
|
|
},
|
2018-07-21 20:00:37 +02:00
|
|
|
value: Boolean,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
</script>
|