2019-01-27 02:45:03 +11:00
|
|
|
<template>
|
2019-07-05 17:17:44 +10:00
|
|
|
<div
|
|
|
|
ref="galleryContainer"
|
|
|
|
style="width: 100%;"
|
|
|
|
>
|
|
|
|
<div
|
2019-07-07 07:54:17 +10:00
|
|
|
v-for="(row, index) in rows"
|
|
|
|
:key="index"
|
2019-07-05 17:17:44 +10:00
|
|
|
class="gallery-row"
|
2019-10-19 06:27:51 +11:00
|
|
|
:style="rowStyle(row.length)"
|
2019-07-05 17:17:44 +10:00
|
|
|
:class="{ 'contain-fit': useContainFit, 'cover-fit': !useContainFit }"
|
|
|
|
>
|
2019-10-19 06:27:51 +11:00
|
|
|
<div class="gallery-row-inner">
|
|
|
|
<attachment
|
|
|
|
v-for="attachment in row"
|
|
|
|
:key="attachment.id"
|
|
|
|
:set-media="setMedia"
|
|
|
|
:nsfw="nsfw"
|
|
|
|
:attachment="attachment"
|
|
|
|
:allow-play="false"
|
2019-10-19 07:04:17 +11:00
|
|
|
:natural-size-load="onNaturalSizeLoad.bind(null, attachment.id)"
|
2019-10-22 06:13:11 +11:00
|
|
|
:style="itemStyle(attachment.id, row)"
|
2019-10-19 06:27:51 +11:00
|
|
|
/>
|
|
|
|
</div>
|
2019-01-27 02:45:03 +11:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script src='./gallery.js'></script>
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
@import '../../_variables.scss';
|
|
|
|
|
|
|
|
.gallery-row {
|
2019-10-19 06:27:51 +11:00
|
|
|
position: relative;
|
|
|
|
height: 0;
|
2019-01-27 02:45:03 +11:00
|
|
|
width: 100%;
|
|
|
|
flex-grow: 1;
|
|
|
|
margin-top: 0.5em;
|
|
|
|
|
2019-10-19 06:27:51 +11:00
|
|
|
.gallery-row-inner {
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
|
|
|
bottom: 0;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
flex-wrap: nowrap;
|
|
|
|
align-content: stretch;
|
|
|
|
}
|
|
|
|
|
2019-06-26 02:30:21 +10:00
|
|
|
// FIXME: specificity problem with this and .attachments.attachment
|
|
|
|
// we shouldn't have the need for .image here
|
|
|
|
.attachment.image {
|
2019-01-27 02:45:03 +11:00
|
|
|
margin: 0 0.5em 0 0;
|
|
|
|
flex-grow: 1;
|
|
|
|
height: 100%;
|
|
|
|
box-sizing: border-box;
|
2019-01-31 06:41:07 +11:00
|
|
|
// to make failed images a bit more noticeable on chromium
|
|
|
|
min-width: 2em;
|
2019-03-03 03:35:38 +11:00
|
|
|
&:last-child {
|
|
|
|
margin: 0;
|
|
|
|
}
|
2019-01-27 02:45:03 +11:00
|
|
|
}
|
|
|
|
|
|
|
|
.image-attachment {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.video-container {
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
&.contain-fit {
|
2019-08-07 12:41:27 +10:00
|
|
|
img,
|
|
|
|
video,
|
|
|
|
canvas {
|
2019-01-27 02:45:03 +11:00
|
|
|
object-fit: contain;
|
2020-06-11 21:27:36 +10:00
|
|
|
height: 100%;
|
2019-01-27 02:45:03 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&.cover-fit {
|
2019-08-07 12:41:27 +10:00
|
|
|
img,
|
|
|
|
video,
|
|
|
|
canvas {
|
2019-01-27 02:45:03 +11:00
|
|
|
object-fit: cover;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
</style>
|