fix: Display native context menu on image, video preview modals (#6756)

This commit is contained in:
Pranav Raj S
2023-03-26 15:16:56 -07:00
committed by GitHub
parent 4b83bcb5ca
commit 1e8881577a
5 changed files with 34 additions and 9 deletions

View File

@@ -1,7 +1,11 @@
<template>
<li v-if="shouldRenderMessage" :class="alignBubble">
<div :class="wrapClass" @contextmenu="openContextMenu($event)">
<div v-tooltip.top-start="messageToolTip" :class="bubbleClass">
<div :class="wrapClass">
<div
v-tooltip.top-start="messageToolTip"
:class="bubbleClass"
@contextmenu="openContextMenu($event)"
>
<bubble-mail-head
:email-attributes="contentAttributes.email"
:cc="emailHeadAttributes.cc"
@@ -32,7 +36,11 @@
:url="attachment.data_url"
@error="onImageLoadError"
/>
<audio v-else-if="attachment.file_type === 'audio'" controls>
<audio
v-else-if="attachment.file_type === 'audio'"
controls
class="skip-context-menu"
>
<source :src="attachment.data_url" />
</audio>
<bubble-video
@@ -429,9 +437,13 @@ export default {
this.hasImageError = true;
},
openContextMenu(e) {
if (getSelection().toString()) {
const shouldSkipContextMenu = e.target?.classList.contains(
'skip-context-menu'
);
if (shouldSkipContextMenu || getSelection().toString()) {
return;
}
e.preventDefault();
if (e.type === 'contextmenu') {
this.$track(ACCOUNT_EVENTS.OPEN_MESSAGE_CONTEXT_MENU);
@@ -479,7 +491,8 @@ export default {
}
}
&.is-image.is-text > .message-text__wrap {
&.is-image.is-text > .message-text__wrap,
&.is-video.is-text > .message-text__wrap {
max-width: 32rem;
padding: var(--space-small) var(--space-normal);
}