parsley/app/javascript/components/AppModal.vue
2018-03-30 17:08:09 -05:00

59 lines
1.1 KiB
Vue

<template>
<div ref="container">
<div ref="modal" :class="['popup', 'modal', { 'is-active': open }]">
<div class="modal-background" @click="close"></div>
<div class="modal-card">
<header class="modal-card-head">
<slot name="title">
<p class="modal-card-title">{{ title }}</p>
<app-icon icon="x" aria-label="close" @click="close"></app-icon>
</slot>
</header>
<section class="modal-card-body">
<slot></slot>
</section>
</div>
</div>
</div>
</template>
<script>
import AppIcon from "./AppIcon";
export default {
props: {
open: {
type: Boolean,
default: false
},
title: String
},
mounted() {
document.body.appendChild(this.$refs.modal);
},
beforeDestroy() {
this.$refs.container.appendChild(this.$refs.modal);
},
methods: {
close() {
this.$emit("dismiss");
}
},
components: {
AppIcon
}
}
</script>
<style lang="scss" scoped>
</style>