confirm-dialogue.svelte 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <script lang="ts">
  2. import { createEventDispatcher } from 'svelte';
  3. import FullScreenModal from './full-screen-modal.svelte';
  4. import Button from '../elements/buttons/button.svelte';
  5. export let title = 'Confirm';
  6. export let prompt = 'Are you sure you want to do this?';
  7. export let confirmText = 'Confirm';
  8. export let cancelText = 'Cancel';
  9. const dispatch = createEventDispatcher();
  10. const handleCancel = () => dispatch('cancel');
  11. const handleConfirm = () => dispatch('confirm');
  12. </script>
  13. <FullScreenModal on:clickOutside={() => handleCancel()}>
  14. <div
  15. class="border bg-immich-bg dark:bg-immich-dark-gray dark:border-immich-dark-gray p-4 shadow-sm w-[500px] max-w-[95vw] rounded-3xl py-8 dark:text-immich-dark-fg"
  16. >
  17. <div
  18. class="flex flex-col place-items-center place-content-center gap-4 px-4 text-immich-primary dark:text-immich-dark-primary"
  19. >
  20. <h1 class="text-2xl text-immich-primary dark:text-immich-dark-primary font-medium pb-2">
  21. {title}
  22. </h1>
  23. </div>
  24. <div>
  25. <slot name="prompt">
  26. <p class="ml-4 text-md py-5 text-center">{prompt}</p>
  27. </slot>
  28. <div class="flex w-full px-4 gap-4 mt-4">
  29. <Button fullwidth on:click={() => handleCancel()}>{cancelText}</Button>
  30. <Button color="red" fullwidth on:click={() => handleConfirm()}>{confirmText}</Button>
  31. </div>
  32. </div>
  33. </div>
  34. </FullScreenModal>