diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue b/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue index 34c31aac1..764f46141 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue @@ -2,24 +2,22 @@ import { computed, useSlots } from 'vue'; import { useI18n } from 'vue-i18n'; -// import Button from 'dashboard/components-next/button/Button.vue'; +import Button from 'dashboard/components-next/button/Button.vue'; import Breadcrumb from 'dashboard/components-next/breadcrumb/Breadcrumb.vue'; +import ComposeConversation from 'dashboard/components-next/NewConversation/ComposeConversation.vue'; const props = defineProps({ - // buttonLabel: { - // type: String, - // default: '', - // }, + buttonLabel: { + type: String, + default: '', + }, selectedContact: { type: Object, default: () => ({}), }, }); -const emit = defineEmits([ - // 'message', - 'goToContactsList', -]); +const emit = defineEmits(['goToContactsList']); const { t } = useI18n(); const slots = useSlots(); @@ -62,7 +60,11 @@ const handleBreadcrumbClick = () => { :items="breadcrumbItems" @click="handleBreadcrumbClick" /> - + + + diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue b/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue index b6b24ce26..a49236cb1 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue @@ -41,11 +41,11 @@ const FORM_CONFIG = { }; const SOCIAL_CONFIG = { - FACEBOOK: 'i-ri-facebook-circle-fill', - GITHUB: 'i-ri-github-fill', - INSTAGRAM: 'i-ri-instagram-line', LINKEDIN: 'i-ri-linkedin-box-fill', + FACEBOOK: 'i-ri-facebook-circle-fill', + INSTAGRAM: 'i-ri-instagram-line', TWITTER: 'i-ri-twitter-x-fill', + GITHUB: 'i-ri-github-fill', }; const defaultState = { diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue b/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue index 7e67c5629..44350bba1 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue @@ -4,6 +4,7 @@ import Input from 'dashboard/components-next/input/Input.vue'; import Icon from 'dashboard/components-next/icon/Icon.vue'; import ContactSortMenu from './components/ContactSortMenu.vue'; import ContactMoreActions from './components/ContactMoreActions.vue'; +import ComposeConversation from 'dashboard/components-next/NewConversation/ComposeConversation.vue'; defineProps({ showSearch: { @@ -18,10 +19,10 @@ defineProps({ type: String, required: true, }, - // buttonLabel: { - // type: String, - // default: '', - // }, + buttonLabel: { + type: String, + default: '', + }, activeSort: { type: String, default: 'last_activity_at', @@ -48,7 +49,6 @@ const emit = defineEmits([ 'search', 'filter', 'update:sort', - // 'message', 'add', 'import', 'export', @@ -131,9 +131,12 @@ const emit = defineEmits([ @export="emit('export')" /> - - - +
+ + +
diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactMoreActions.vue b/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactMoreActions.vue index c37a7854c..d5932535c 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactMoreActions.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactMoreActions.vue @@ -55,7 +55,7 @@ const handleContactAction = ({ action }) => { diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactSortMenu.vue b/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactSortMenu.vue index edf4bd70f..b263b882d 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactSortMenu.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsHeader/components/ContactSortMenu.vue @@ -109,7 +109,7 @@ const handleOrderChange = value => {
diff --git a/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue b/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue new file mode 100644 index 000000000..347325b16 --- /dev/null +++ b/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue @@ -0,0 +1,209 @@ + + + diff --git a/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue b/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue index e0b8817d8..89784037d 100644 --- a/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue +++ b/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue @@ -3,7 +3,7 @@ import { defineAsyncComponent, ref, computed } from 'vue'; import { useMapGetter } from 'dashboard/composables/store'; import { useI18n } from 'vue-i18n'; import { useUISettings } from 'dashboard/composables/useUISettings'; -// import { useFileUpload } from 'dashboard/composables/useFileUpload'; +import { useFileUpload } from 'dashboard/composables/useFileUpload'; import { vOnClickOutside } from '@vueuse/components'; import { ALLOWED_FILE_TYPES } from 'shared/constants/messages'; import { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents'; @@ -110,19 +110,10 @@ const onClickInsertEmoji = emoji => { emit('insertEmoji', emoji); }; -const useFileUpload = () => { - // Empty function for testing purposes - // TODO: Will use useFileUpload composable later - return { - onFileUpload: () => {}, - }; -}; - const { onFileUpload } = useFileUpload({ isATwilioSMSChannel: props.isTwilioSmsInbox, attachFile: ({ blob, file }) => { if (!file) return; - const reader = new FileReader(); reader.readAsDataURL(file.file); reader.onloadend = () => { diff --git a/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue b/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue index 7e72c7038..b1596ac04 100644 --- a/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue +++ b/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue @@ -141,7 +141,11 @@ const isAnyDropdownActive = computed(() => { }); const handleContactSearch = value => { - emit('searchContacts', value); + showContactsDropdown.value = true; + emit('searchContacts', { + keys: ['email', 'phone_number', 'name'], + query: value, + }); }; const handleDropdownUpdate = (type, value) => { @@ -156,12 +160,12 @@ const handleDropdownUpdate = (type, value) => { const searchCcEmails = value => { showCcEmailsDropdown.value = true; - emit('searchContacts', value); + emit('searchContacts', { keys: ['email'], query: value }); }; const searchBccEmails = value => { showBccEmailsDropdown.value = true; - emit('searchContacts', value); + emit('searchContacts', { keys: ['email'], query: value }); }; const setSelectedContact = async ({ value, action, ...rest }) => { @@ -250,7 +254,7 @@ const handleSendWhatsappMessage = async ({ message, templateParams }) => { - +