Modal.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. <section class="section">
  6. <div class="columns is-centered">
  7. <div class="column is-three-quarters">
  8. <div class="box has-text-centered has-background-black-ter is-shadowless">
  9. <slot></slot>
  10. </div>
  11. </div>
  12. </div>
  13. </section>
  14. </div>
  15. <button class="modal-close is-large" aria-label="close" @click.stop="closeModal"></button>
  16. </div>
  17. </template>
  18. <script>
  19. export default {
  20. name: 'Modal',
  21. props: {
  22. value: Boolean,
  23. },
  24. computed: {
  25. isActive: {
  26. get () {
  27. return this.value
  28. },
  29. set (value) {
  30. this.$emit('input', value)
  31. }
  32. }
  33. },
  34. methods: {
  35. closeModal: function(event) {
  36. if (event) {
  37. this.isActive = false
  38. this.$parent.$emit('modalClose')
  39. }
  40. }
  41. }
  42. }
  43. </script>