aboutsummaryrefslogtreecommitdiff
path: root/src/components/attachment/attachment.vue
diff options
context:
space:
mode:
authorHakaba Hitoyo <example@example.com>2018-04-22 00:48:06 +0900
committerHakaba Hitoyo <example@example.com>2018-04-22 00:48:06 +0900
commit033170212f59ee2e0757fcc0264f64a15e638f64 (patch)
treebc592c1d90070e2d6b8854556bdc2f710b670fae /src/components/attachment/attachment.vue
parentef67bd693e9ee0cb42b4ebd0b10f68e63ba04750 (diff)
parentb6eb1b1d98c839f5340edd3d3c4764952f2cb189 (diff)
merge
Diffstat (limited to 'src/components/attachment/attachment.vue')
-rw-r--r--src/components/attachment/attachment.vue252
1 files changed, 145 insertions, 107 deletions
diff --git a/src/components/attachment/attachment.vue b/src/components/attachment/attachment.vue
index d6a51ffd..b2f63668 100644
--- a/src/components/attachment/attachment.vue
+++ b/src/components/attachment/attachment.vue
@@ -1,5 +1,8 @@
<template>
- <div class="attachment base03-border" :class="{[type]: true, loading}" v-show="!isEmpty">
+ <div v-if="size==='hide'">
+ <a class="placeholder" v-if="type !== 'html'" target="_blank" :href="attachment.url">[{{nsfw ? "NSFW/" : ""}}{{type.toUpperCase()}}]</a>
+ </div>
+ <div v-else class="attachment" :class="{[type]: true, loading, 'small-attachment': isSmall, 'fullwidth': fullwidth}" v-show="!isEmpty">
<a class="image-attachment" v-if="hidden" @click.prevent="toggleHidden()">
<img :key="nsfwImage" :src="nsfwImage"/>
</a>
@@ -8,10 +11,10 @@
</div>
<a v-if="type === 'image' && !hidden" class="image-attachment" :href="attachment.url" target="_blank">
- <img class="base03-border" referrerpolicy="no-referrer" :src="attachment.large_thumb_url || attachment.url"/>
+ <StillImage :class="{'small': isSmall}" referrerpolicy="no-referrer" :mimetype="attachment.mimetype" :src="attachment.large_thumb_url || attachment.url"/>
</a>
- <video class="base03" v-if="type === 'video' && !hidden" :src="attachment.url" controls loop></video>
+ <video :class="{'small': isSmall}" v-if="type === 'video' && !hidden" :src="attachment.url" controls loop></video>
<audio v-if="type === 'audio'" :src="attachment.url" controls></audio>
@@ -30,110 +33,145 @@
<script src="./attachment.js"></script>
<style lang="scss">
- .attachments {
- display: flex;
- flex-wrap: wrap;
- margin-right: -0.7em;
-
- .attachment.media-upload-container {
- flex: 0 0 auto;
- max-height: 300px;
- max-width: 100%;
+@import '../../_variables.scss';
+
+.attachments {
+ display: flex;
+ flex-wrap: wrap;
+ margin-right: -0.7em;
+
+ .attachment.media-upload-container {
+ flex: 0 0 auto;
+ max-height: 300px;
+ max-width: 100%;
+ }
+
+ .placeholder {
+ margin-right: 0.5em;
+ }
+
+ .small-attachment {
+ &.image, &.video {
+ max-width: 35%;
+ }
+ max-height: 100px;
+ }
+
+ .attachment {
+ flex: 1 0 30%;
+ margin: 0.5em 0.7em 0.6em 0.0em;
+ align-self: flex-start;
+ line-height: 0;
+
+ border-style: solid;
+ border-width: 1px;
+ border-radius: $fallback--attachmentRadius;
+ border-radius: var(--attachmentRadius, $fallback--attachmentRadius);
+ border-color: $fallback--border;
+ border-color: var(--border, $fallback--border);
+ overflow: hidden;
+ }
+ .fullwidth {
+ flex-basis: 100%;
+ }
+ // fixes small gap below video
+ &.video {
+ line-height: 0;
+ }
+
+ &.html {
+ flex-basis: 90%;
+ width: 100%;
+ display: flex;
+ }
+
+ &.loading {
+ cursor: progress;
+ }
+
+ .hider {
+ position: absolute;
+ margin: 10px;
+ padding: 5px;
+ background: rgba(230,230,230,0.6);
+ font-weight: bold;
+ z-index: 4;
+ }
+
+ .small {
+ max-height: 100px;
+ }
+ video {
+ max-height: 500px;
+ height: 100%;
+ width: 100%;
+ z-index: 0;
+ }
+
+ audio {
+ width: 100%;
+ }
+
+ img.media-upload {
+ line-height: 0;
+ max-height: 300px;
+ max-width: 100%;
+ }
+
+ .oembed {
+ line-height: 1.2em;
+ flex: 1 0 100%;
+ width: 100%;
+ margin-right: 15px;
+ display: flex;
+
+ img {
+ width: 100%;
+ }
+
+ .image {
+ flex: 1;
+ img {
+ border: 0px;
+ border-radius: 5px;
+ height: 100%;
+ object-fit: cover;
+ }
+ }
+
+ .text {
+ flex: 2;
+ margin: 8px;
+ word-break: break-all;
+ h1 {
+ font-size: 14px;
+ margin: 0px;
}
-
- .attachment {
- flex: 1 0 30%;
- margin: 0.5em 0.7em 0.6em 0.0em;
- align-self: flex-start;
-
- border-style: solid;
- border-width: 1px;
- border-radius: 5px;
- overflow: hidden;
-
- // fixes small gap below video
- &.video {
- line-height: 0;
- }
-
- &.html {
- flex-basis: 90%;
- width: 100%;
- display: flex;
- }
-
- &.loading {
- cursor: progress;
- }
-
- .hider {
- position: absolute;
- margin: 10px;
- padding: 5px;
- background: rgba(230,230,230,0.6);
- font-weight: bold;
- z-index: 4;
- }
-
- video {
- max-height: 500px;
- height: 100%;
- width: 100%;
- z-index: 0;
- }
-
- audio {
- width: 100%;
- }
-
- img.media-upload {
- margin-bottom: -2px;
- max-height: 300px;
- max-width: 100%;
- }
-
- .oembed {
- width: 100%;
- margin-right: 15px;
- display: flex;
-
- img {
- width: 100%;
- }
-
- .image {
- flex: 1;
- img {
- border: 0px;
- border-radius: 5px;
- height: 100%;
- object-fit: cover;
- }
- }
-
- .text {
- flex: 2;
- margin: 8px;
- word-break: break-all;
- h1 {
- font-size: 14px;
- margin: 0px;
- }
- }
- }
-
- a.image-attachment {
- display: flex;
- flex: 1;
-
- img {
- object-fit: contain;
- width: 100%;
- height: 100%; /* If this isn't here, chrome will stretch the images */
- max-height: 500px;
- image-orientation: from-image;
- }
- }
+ }
+ }
+
+ .image-attachment {
+ display: flex;
+ flex: 1;
+
+ .still-image {
+ width: 100%;
+ height: 100%;
+ }
+
+ .small {
+ img {
+ max-height: 100px;
}
- }
+ }
+
+ img {
+ object-fit: contain;
+ width: 100%;
+ height: 100%; /* If this isn't here, chrome will stretch the images */
+ max-height: 500px;
+ image-orientation: from-image;
+ }
+ }
+}
</style>