You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
3.6 KiB

2 years ago
  1. <template>
  2. <!-- close-contact-info -->
  3. <div>
  4. <div class="xl:tw-grid tw-gap-[15px] tw-grid-cols-[100px_100px_160px_200px_142px] tw-hidden tw-mb-[30px]">
  5. <div class="tw-text-neutrals-500 tw-body-4">{{ $t("First Name") }}</div>
  6. <div class="tw-text-neutrals-500 tw-body-4">{{ $t("Last Name") }}</div>
  7. <div class="tw-text-neutrals-500 tw-body-4">{{ $t("Phone") }}</div>
  8. <div class="tw-text-neutrals-500 tw-body-4">{{ $t("Email") }}</div>
  9. </div>
  10. <div v-for="(item, index) in contacts" :key="index"
  11. class="tw-flex tw-place-content-between tw-border-solid tw-border-neutral-200 tw-rounded-[10px] xl:tw-border-none xl:tw-px-0 tw-bg-white tw-py-[10px] tw-px-5 tw-mb-5 tw-mt-[30px] last:tw-mb-0">
  12. <div class="xl:tw-hidden">
  13. <div class="tw-pb-[6px] tw-text-[14px] tw-font-medium tw-text-base-primary">
  14. {{ item.first_name + " " + item.last_name }}
  15. </div>
  16. <div class="tw-pb-[6px] tw-text-[12px]">
  17. {{ "+" + item.country_code + item.phone_number }}
  18. </div>
  19. <div class="tw-text-[12px]">{{ item.email }}</div>
  20. </div>
  21. <div class="tw-grid tw-grid-cols-1 tw-gap-[20px] md:tw-grid-cols-2 md:tw-gap-[15px] xl:tw-hidden">
  22. <button @click="editItem(index)" type="button">
  23. <img :src="editImg" alt="" class="tw-h-[28px] tw-w-[28px]" />
  24. </button>
  25. <button @click="deleteItem(index)" type="button">
  26. <img :src="deleteImg" alt="" class="tw-h-[28px] tw-w-[28px]" />
  27. </button>
  28. </div>
  29. <div class="tw-hidden xl:tw-block">
  30. <div class="xl:tw-flex xl:tw-flex-row">
  31. <div class="xl:tw-grid tw-gap-[15px] tw-grid-cols-[100px_100px_160px_200px_142px] tw-mr-[10px]">
  32. <div>{{ item.first_name }}</div>
  33. <div>{{ item.last_name }}</div>
  34. <div>{{ "+" + item.country_code + item.phone_number }}</div>
  35. <div>{{ item.email }}</div>
  36. <div>{{ item.passport_number }}</div>
  37. </div>
  38. <div class="tw-flex tw-flex-row">
  39. <button @click="editItem(index)" type="button">
  40. <img :src="editImg" alt="" class="tw-h-[28px] tw-w-[28px] tw-mr-[15px]" />
  41. </button>
  42. <button @click="deleteItem(index)" type="button">
  43. <img :src="deleteImg" alt="" class="tw-h-[28px] tw-w-[28px]" />
  44. </button>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. <EditContactModal :contact="item" @update="$emit('refetch-contact-info')"></EditContactModal>
  50. <DeleteContactModal :contactId="itemId" :contactName="itemName" @update="$emit('refetch-contact-info')">
  51. </DeleteContactModal>
  52. </div>
  53. </template>
  54. <script>
  55. import EditContactModal from "../newComponent/modal/UserEditContactModal.vue";
  56. import DeleteContactModal from "../newComponent/modal/UserDeleteContactModal.vue";
  57. export default {
  58. name: "ContactInfoContent",
  59. components: {
  60. EditContactModal,
  61. DeleteContactModal,
  62. },
  63. props: {
  64. contacts: {
  65. type: Array,
  66. default: () => [],
  67. },
  68. },
  69. data() {
  70. return {
  71. editImg: require("~/assets/svg/edit.svg"),
  72. deleteImg: require("~/assets/svg/delete.svg"),
  73. item: {},
  74. itemId: "",
  75. itemName: "",
  76. };
  77. },
  78. methods: {
  79. editItem(index) {
  80. this.item = JSON.parse(JSON.stringify(this.contacts[index]));
  81. this.$modal.show("edit-contact-modal");
  82. },
  83. deleteItem(index) {
  84. this.itemId = this.contacts[index].contact_uuid;
  85. this.itemName =
  86. this.contacts[index].first_name + " " + this.contacts[index].last_name;
  87. this.$modal.show("delete-contact-modal");
  88. },
  89. },
  90. };
  91. </script>
  92. <style scoped lang="scss">
  93. </style>