delete-confirm-dialogue.svelte 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <script lang="ts">
  2. import { createEventDispatcher } from 'svelte';
  3. import FullScreenModal from './full-screen-modal.svelte';
  4. export let title = 'Confirm Delete';
  5. export let prompt = 'Are you sure you want to delete this item?';
  6. export let confirmText = 'Confirm';
  7. export let cancelText = 'Cancel';
  8. const dispatch = createEventDispatcher();
  9. const handleCancel = () => dispatch('cancel');
  10. const handleConfirm = () => dispatch('confirm');
  11. </script>
  12. <FullScreenModal on:clickOutside={() => handleCancel()}>
  13. <div
  14. class="border bg-immich-bg dark:bg-immich-dark-gray dark:border-immich-dark-gray p-4 shadow-sm w-[500px] rounded-3xl py-8 dark:text-immich-dark-fg"
  15. >
  16. <div
  17. class="flex flex-col place-items-center place-content-center gap-4 px-4 text-immich-primary dark:text-immich-dark-primary"
  18. >
  19. <h1 class="text-2xl text-immich-primary dark:text-immich-dark-primary font-medium">
  20. {title}
  21. </h1>
  22. </div>
  23. <div>
  24. <p class="ml-4 text-md py-5 text-center">{prompt}</p>
  25. <div class="flex w-full px-4 gap-4 mt-4">
  26. <button
  27. on:click={() => handleCancel()}
  28. class="flex-1 transition-colors bg-immich-primary dark:bg-immich-dark-primary hover:bg-immich-primary/75 dark:hover:bg-immich-dark-primary/80 dark:text-immich-dark-gray px-6 py-3 text-white rounded-full shadow-md w-full font-medium"
  29. >
  30. {cancelText}
  31. </button>
  32. <button
  33. on:click={() => handleConfirm()}
  34. class="flex-1 transition-colors bg-red-500 hover:bg-red-400 px-6 py-3 text-white rounded-full w-full font-medium"
  35. >
  36. {confirmText}
  37. </button>
  38. </div>
  39. </div>
  40. </div>
  41. </FullScreenModal>