Confirm.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <script setup lang="ts">
  2. import { defineAsyncComponent } from "vue";
  3. import { useModalsStore } from "@/stores/modals";
  4. const Modal = defineAsyncComponent(() => import("@/components/Modal.vue"));
  5. const props = defineProps({
  6. modalUuid: { type: String, required: true },
  7. message: { type: [String, Array], required: true },
  8. onCompleted: { type: Function, required: true }
  9. });
  10. const { closeCurrentModal } = useModalsStore();
  11. const confirmAction = () => {
  12. props.onCompleted();
  13. closeCurrentModal();
  14. };
  15. </script>
  16. <template>
  17. <div>
  18. <modal class="confirm-modal" title="Confirm Action" :size="'slim'">
  19. <template #body>
  20. <div class="confirm-modal-inner-container">
  21. <ul v-if="Array.isArray(message)">
  22. <li v-for="messageItem in message" :key="messageItem">
  23. {{ messageItem }}
  24. </li>
  25. </ul>
  26. <template v-else>
  27. {{ message }}
  28. </template>
  29. </div>
  30. </template>
  31. <template #footer>
  32. <button class="button is-danger" @click="confirmAction()">
  33. <i class="material-icons icon-with-button">warning</i>
  34. Confirm
  35. </button>
  36. </template>
  37. </modal>
  38. </div>
  39. </template>