diff --git a/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue b/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue index 610d11dab..d3686cfd7 100644 --- a/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue +++ b/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue @@ -2,6 +2,7 @@ import { ref, computed, onMounted, watch } from 'vue'; import { useStore, useMapGetter } from 'dashboard/composables/store'; import { useI18n } from 'vue-i18n'; +import { useWindowSize } from '@vueuse/core'; import { useUISettings } from 'dashboard/composables/useUISettings'; import { vOnClickOutside } from '@vueuse/components'; import { useAlert } from 'dashboard/composables'; @@ -15,6 +16,7 @@ import { processContactableInboxes, mergeInboxDetails, } from 'dashboard/components-next/NewConversation/helpers/composeConversationHelper'; +import wootConstants from 'dashboard/constants/globals'; import ComposeNewConversationForm from 'dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue'; @@ -37,9 +39,16 @@ const emit = defineEmits(['close']); const store = useStore(); const { t } = useI18n(); +const { width: windowWidth } = useWindowSize(); const { fetchSignatureFlagFromUISettings } = useUISettings(); +const isSmallScreen = computed( + () => windowWidth.value < wootConstants.SMALL_SCREEN_BREAKPOINT +); + +const viewInModal = computed(() => props.isModal || isSmallScreen.value); + const contacts = ref([]); const selectedContact = ref(null); const targetInbox = ref(null); @@ -67,7 +76,7 @@ const directUploadsEnabled = computed( const activeContact = computed(() => contactById.value(props.contactId)); const composePopoverClass = computed(() => { - if (props.isModal) return ''; + if (viewInModal.value) return ''; return props.alignPosition === 'right' ? 'absolute ltr:left-0 ltr:right-[unset] rtl:right-0 rtl:left-[unset]' @@ -202,7 +211,7 @@ const handleClickOutside = () => { }; const onModalBackdropClick = () => { - if (!props.isModal) return; + if (!viewInModal.value) return; handleClickOutside(); }; @@ -231,7 +240,7 @@ useKeyboardEvents(keyboardEvents); ]" class="relative" :class="{ - 'z-40': showComposeNewConversation, + 'z-50': showComposeNewConversation && !viewInModal, }" > { class="bg-n-solid-2 rtl:border-l ltr:border-r border-n-weak flex flex-col text-sm pb-1 fixed top-0 ltr:left-0 rtl:right-0 h-full z-40 transition-transform duration-200 ease-in-out md:static w-[200px] basis-[200px] md:flex-shrink-0 md:ltr:translate-x-0 md:rtl:-translate-x-0" :class="[ { - 'ltr:translate-x-0 rtl:-translate-x-0 shadow-lg md:shadow-none': - isMobileSidebarOpen, - 'ltr:-translate-x-full rtl:translate-x-full md:translate-x-0': - !isMobileSidebarOpen, + 'shadow-lg md:shadow-none': isMobileSidebarOpen, + 'ltr:-translate-x-full rtl:translate-x-full': !isMobileSidebarOpen, }, ]" >