FeedbackModal.svelte 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <script lang="ts">
  2. import Modal from '$lib/components/common/Modal.svelte';
  3. import { getContext } from 'svelte';
  4. const i18n = getContext('i18n');
  5. export let show = false;
  6. export let selectedFeedback = null;
  7. export let onClose: () => void = () => {};
  8. const close = () => {
  9. show = false;
  10. onClose();
  11. };
  12. </script>
  13. <Modal size="sm" bind:show>
  14. {#if selectedFeedback}
  15. <div>
  16. <div class="flex justify-between dark:text-gray-300 px-5 pt-4 pb-2">
  17. <div class="text-lg font-medium self-center">
  18. {$i18n.t('Feedback Details')}
  19. </div>
  20. <button class="self-center" on:click={close} aria-label="Close">
  21. <svg
  22. xmlns="http://www.w3.org/2000/svg"
  23. viewBox="0 0 20 20"
  24. fill="currentColor"
  25. class="w-5 h-5"
  26. >
  27. <path
  28. d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"
  29. />
  30. </svg>
  31. </button>
  32. </div>
  33. <div class="flex flex-col md:flex-row w-full px-5 pb-4 md:space-x-4 dark:text-gray-200">
  34. <div class="flex flex-col w-full">
  35. <div class="mb-2 -mx-1">
  36. {#if selectedFeedback?.data?.tags && selectedFeedback?.data?.tags.length}
  37. <div class="flex flex-wrap gap-1 mt-1">
  38. {#each selectedFeedback?.data?.tags as tag}
  39. <span class="px-2 py-0.5 rounded-full bg-gray-100 dark:bg-gray-800 text-xs"
  40. >{tag}</span
  41. >
  42. {/each}
  43. </div>
  44. {:else}
  45. <span>-</span>
  46. {/if}
  47. </div>
  48. <div class="flex flex-col w-full mb-2">
  49. <div class=" mb-1 text-xs text-gray-500">{$i18n.t('Rating')}</div>
  50. <div class="flex-1 text-xs">
  51. <span>{selectedFeedback?.data?.details?.rating ?? '-'}</span>
  52. </div>
  53. </div>
  54. <div class="flex flex-col w-full mb-2">
  55. <div class=" mb-1 text-xs text-gray-500">{$i18n.t('Reason')}</div>
  56. <div class="flex-1 text-xs">
  57. <span>{selectedFeedback?.data?.reason || '-'}</span>
  58. </div>
  59. </div>
  60. <div class="flex justify-end pt-3">
  61. <button
  62. class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
  63. type="button"
  64. on:click={close}
  65. >
  66. {$i18n.t('Close')}
  67. </button>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. {/if}
  73. </Modal>