Modal.vue 846 B

123456789101112131415161718192021222324252627282930313233343536
  1. <template>
  2. <div class="modal modal-otp" v-bind:class="{ 'is-active': isActive }">
  3. <div class="modal-background" @click.stop="closeModal"></div>
  4. <div class="modal-content">
  5. <slot></slot>
  6. </div>
  7. <button class="modal-close is-large" aria-label="close" @click.stop="closeModal"></button>
  8. </div>
  9. </template>
  10. <script>
  11. export default {
  12. name: 'Modal',
  13. props: {
  14. value: Boolean,
  15. },
  16. computed: {
  17. isActive: {
  18. get () {
  19. return this.value
  20. },
  21. set (value) {
  22. this.$emit('input', value)
  23. }
  24. }
  25. },
  26. methods: {
  27. closeModal: function(event) {
  28. if (event) {
  29. this.isActive = false
  30. this.$parent.$emit('modalClose')
  31. }
  32. }
  33. }
  34. }
  35. </script>