diff options
| author | shpuld <shp@cock.li> | 2019-01-27 22:33:36 +0200 |
|---|---|---|
| committer | William Pitcock <nenolod@dereferenced.org> | 2019-01-28 05:50:12 +0000 |
| commit | 96c36af73168913768818f5293358f460e30c24f (patch) | |
| tree | 690e0eae13e7d4cf32bfb142d6922d7909f5a11b /src/components/link-preview/link-preview.vue | |
| parent | 2b86f6e883878bcec624d4a99aadac81d87f2826 (diff) | |
refactor the FE parts
Diffstat (limited to 'src/components/link-preview/link-preview.vue')
| -rw-r--r-- | src/components/link-preview/link-preview.vue | 70 |
1 files changed, 45 insertions, 25 deletions
diff --git a/src/components/link-preview/link-preview.vue b/src/components/link-preview/link-preview.vue index 49de654f..9b3f2550 100644 --- a/src/components/link-preview/link-preview.vue +++ b/src/components/link-preview/link-preview.vue @@ -1,13 +1,13 @@ <template> <div> <a class="link-preview-card" :href="card.url" target="_blank" rel="noopener"> - <div class="image"> - <div :style="{ backgroundImage: 'url(' + card.image + ')' }"></div> + <div class="card-image" :class="{ 'small-image': size === 'small' }" v-if="useImage"> + <img :src="card.image"></img> </div> - <div class="content"> - <strong>{{ card.title }}</strong> - <p>{{ card.description }}</p> - <span class="host">{{ card.provider_name }}</span> + <div class="card-content"> + <span class="card-host faint">{{ card.provider_name }}</span> + <h4 class="card-title">{{ card.title }}</h4> + <p class="card-description" v-if="useDescription">{{ card.description }}</p> </div> </a> </div> @@ -19,36 +19,56 @@ @import '../../_variables.scss'; .link-preview-card { - display: flex !important; + display: flex; flex-direction: row; cursor: pointer; - margin: 0.5em 0.7em 0.6em 0.0em; + overflow: hidden; - .image { - flex: 0 0 100px; - position: relative; + // TODO: clean up the random margins in attachments, this makes preview line + // up with attachments... + margin-right: 0.7em; + + .card-image { + flex-shrink: 0; + width: 120px; + max-width: 25%; + img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: $fallback--attachmentRadius; + border-radius: var(--attachmentRadius, $fallback--attachmentRadius); + } + } + + .small-image { + width: 80px; } - .image > div { - display: block; - margin: 0; - width: 100%; - height: 100%; - object-fit: cover; - background-size: cover; - background-position: center center; + .card-content { + max-height: 100%; + margin: 0.5em; + display: flex; + flex-direction: column; } - .content { - padding: 1em; - flex: 1; + .card-host { + font-size: 12px; + } - .host { - font-size: 90%; - } + .card-description { + margin: 0.5em 0 0 0; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-word; + line-height: 1.2em; + // cap description at 3 lines, the 1px is to clean up some stray pixels + // TODO: fancier fade-out at the bottom to show off that it's too long? + max-height: calc(1.2em * 3 - 1px); } color: $fallback--text; + color: var(--text, $fallback--text); border-style: solid; border-width: 1px; border-radius: $fallback--attachmentRadius; |
