index.vue 1021 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <template>
  2. <confirm-dialog
  3. ref="confirmDialg"
  4. size="lg fixed"
  5. v-bind="$attrs"
  6. v-on="listeners"
  7. >
  8. <template #default>
  9. <event-target-picker
  10. ref="eventTargetPicker"
  11. class="l-flex__fill"
  12. :ratio="ratio"
  13. />
  14. </template>
  15. </confirm-dialog>
  16. </template>
  17. <script>
  18. export default {
  19. name: 'EventTargetDialog',
  20. props: {
  21. ratio: {
  22. type: String,
  23. default: ''
  24. }
  25. },
  26. data () {
  27. return {
  28. eventTarget: null
  29. }
  30. },
  31. computed: {
  32. listeners () {
  33. return {
  34. ...this.$listeners,
  35. confirm: this.onConfirm
  36. }
  37. }
  38. },
  39. methods: {
  40. show (eventTarget) {
  41. this.eventTarget = eventTarget || {}
  42. this.$refs.confirmDialg.show()
  43. },
  44. onConfirm (done) {
  45. const value = this.$refs.eventTargetPicker.getValue()
  46. if (value) {
  47. this.$emit('confirm', {
  48. value,
  49. snapshot: this.$refs.eventTargetPicker.getSnapshot(),
  50. done
  51. })
  52. }
  53. }
  54. }
  55. }
  56. </script>