aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/src/components')
-rw-r--r--apps/files/src/components/TemplatePreview.vue45
1 files changed, 31 insertions, 14 deletions
diff --git a/apps/files/src/components/TemplatePreview.vue b/apps/files/src/components/TemplatePreview.vue
index 538e1bcff7b..89162ba4efd 100644
--- a/apps/files/src/components/TemplatePreview.vue
+++ b/apps/files/src/components/TemplatePreview.vue
@@ -30,9 +30,9 @@
@change="onCheck">
<label :for="id" class="template-picker__label">
- <div class="template-picker__preview">
+ <div class="template-picker__preview"
+ :class="failedPreview ? 'template-picker__preview--failed' : ''">
<img class="template-picker__image"
- :class="failedPreview ? 'template-picker__image--failed' : ''"
:src="realPreviewUrl"
alt=""
draggable="false"
@@ -40,7 +40,7 @@
</div>
<span class="template-picker__title">
- {{ basename }}
+ {{ nameWithoutExt }}
</span>
</label>
</li>
@@ -100,6 +100,14 @@ export default {
},
computed: {
+ /**
+ * Strip away extension from name
+ * @returns {string}
+ */
+ nameWithoutExt() {
+ return this.basename.indexOf('.') > -1 ? this.basename.split('.').slice(0, -1).join('.') : this.basename
+ },
+
id() {
return `template-picker-${this.fileid}`
},
@@ -107,7 +115,7 @@ export default {
realPreviewUrl() {
// If original preview failed, fallback to mime icon
if (this.failedPreview && this.mimeIcon) {
- return generateUrl(this.mimeIcon)
+ return this.mimeIcon
}
if (this.previewUrl) {
@@ -149,7 +157,6 @@ export default {
align-items: center;
flex: 1 1;
flex-direction: column;
- margin: var(--margin);
&, * {
cursor: pointer;
@@ -162,32 +169,42 @@ export default {
}
&__preview {
- display: flex;
+ display: block;
overflow: hidden;
// Stretch so all entries are the same width
flex: 1 1;
width: var(--width);
- min-height: var(--width);
+ min-height: var(--height);
max-height: var(--height);
- padding: var(--margin);
+ padding: 0;
border: var(--border) solid var(--color-border);
border-radius: var(--border-radius-large);
input:checked + label > & {
border-color: var(--color-primary);
}
+
+ &--failed {
+ // Make sure to properly center fallback icon
+ display: flex;
+ }
}
&__image {
max-width: 100%;
background-color: var(--color-main-background);
- &--failed {
- width: calc(var(--margin) * 8);
- // Center mime icon
- margin: auto;
- background-color: transparent !important;
- }
+ object-fit: cover;
+ }
+
+ // Failed preview, fallback to mime icon
+ &__preview--failed &__image {
+ width: calc(var(--margin) * 8);
+ // Center mime icon
+ margin: auto;
+ background-color: transparent !important;
+
+ object-fit: initial;
}
&__title {