fix(ui): use css instead of javascript to prevent cutting off media
This commit is contained in:
parent
01423951bc
commit
53ec803f2c
2 changed files with 8 additions and 30 deletions
|
@ -1,6 +1,9 @@
|
|||
<template>
|
||||
<div ref="mediaContainer" class="media-container">
|
||||
<NuxtImg v-for="link of props.links" class="media-item" :src="link" @click.prevent="createModal(link)" @load="imagesLoaded++" />
|
||||
<div class="media-container">
|
||||
<NuxtImg v-for="link of props.links"
|
||||
class="media-item"
|
||||
:src="link"
|
||||
@click.prevent="createModal(link)" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -8,26 +11,8 @@
|
|||
import { ModalBase } from '#components';
|
||||
import { render } from 'vue';
|
||||
|
||||
|
||||
const props = defineProps<{ links: string[] }>();
|
||||
|
||||
const mediaContainer = ref<HTMLDivElement>();
|
||||
|
||||
const imagesLoaded = ref(0);
|
||||
|
||||
watch(imagesLoaded, () => {
|
||||
if (imagesLoaded.value < props.links.length) return;
|
||||
const messageDataContainer = mediaContainer.value?.closest(".message-data");
|
||||
const messagesContainer = document.getElementById("messages");
|
||||
if (messageDataContainer && messagesContainer && mediaContainer.value) {
|
||||
const mediaRect = messageDataContainer.getBoundingClientRect();
|
||||
const messagesRect = messagesContainer.getBoundingClientRect();
|
||||
if (mediaRect.right > messagesRect.right) {
|
||||
mediaContainer.value.style.flexDirection = "column";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function createModal(link: string) {
|
||||
const div = document.createElement("div");
|
||||
const modal = h(ModalBase, {
|
||||
|
@ -52,20 +37,13 @@ function createModal(link: string) {
|
|||
|
||||
.media-container {
|
||||
display: flex;
|
||||
grid-column: 2;
|
||||
grid-row: 3;
|
||||
flex-wrap: wrap;
|
||||
gap: .2rem;
|
||||
}
|
||||
|
||||
.grouped-message .media-container {
|
||||
display: flex;
|
||||
grid-column: 2;
|
||||
grid-row: 2;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.media-item {
|
||||
cursor: pointer;
|
||||
max-width: 15dvw;
|
||||
}
|
||||
|
||||
</style>
|
Loading…
Add table
Add a link
Reference in a new issue