Confirm.vue 695 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <template>
  2. <tippy
  3. interactive="true"
  4. placement="top"
  5. theme="confirm"
  6. ref="confirm"
  7. trigger="click"
  8. @hide="confirm(false)"
  9. >
  10. <template #trigger>
  11. <div @click.shift="confirm(true)" @click.exact="confirm()">
  12. <slot />
  13. </div>
  14. </template>
  15. <a @click.exact="confirm(true)"> Click to Confirm </a>
  16. </tippy>
  17. </template>
  18. <script>
  19. export default {
  20. data() {
  21. return {
  22. clickedOnce: false
  23. };
  24. },
  25. methods: {
  26. confirm(confirm) {
  27. if (confirm === false) {
  28. this.clickedOnce = false;
  29. } else if (confirm === true || this.clickedOnce === true) {
  30. this.$emit("confirm");
  31. this.clickedOnce = false;
  32. } else {
  33. this.clickedOnce = true;
  34. }
  35. }
  36. }
  37. };
  38. </script>