Modal.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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="modal-slot box has-text-centered is-shadowless">
  9. <slot></slot>
  10. </div>
  11. </div>
  12. </div>
  13. </section>
  14. </div>
  15. <div v-if="this.showcloseButton" class="fullscreen-footer">
  16. <!-- Close button -->
  17. <button id="btnClose" ref="closeModalButton" class="button is-rounded" :class="{'is-dark' : $root.showDarkMode}" @click.stop="closeModal">
  18. {{ $t('commons.close') }}
  19. </button>
  20. </div>
  21. </div>
  22. </template>
  23. <script>
  24. export default {
  25. name: 'Modal',
  26. data(){
  27. return {
  28. showcloseButton: this.closable,
  29. }
  30. },
  31. props: {
  32. value: Boolean,
  33. closable: {
  34. type: Boolean,
  35. default: true
  36. },
  37. },
  38. computed: {
  39. isActive: {
  40. get () {
  41. return this.value
  42. },
  43. set (value) {
  44. this.$emit('input', value)
  45. }
  46. }
  47. },
  48. methods: {
  49. closeModal: function(event) {
  50. if (event) {
  51. this.isActive = false
  52. this.$notify({ clean: true })
  53. this.$parent.$emit('modalClose')
  54. }
  55. }
  56. }
  57. }
  58. </script>