From 045e71fac7caf598666b3d4feac131a6db5b2c1a Mon Sep 17 00:00:00 2001 From: Alexander Platov Date: Thu, 27 Jun 2024 10:05:28 +0300 Subject: [PATCH] Fixed File Preview (#5923) Signed-off-by: Alexander Platov --- .../src/components/FilePreview.svelte | 10 +++++++--- .../src/components/FilePreviewPopup.svelte | 2 +- packages/theme/styles/dialogs.scss | 3 +++ .../ui/src/components/CircleButton.svelte | 2 +- .../src/components/viewer/ImageViewer.svelte | 19 ++++++++----------- .../src/components/viewer/PDFViewer.svelte | 13 ++++++++++--- .../src/components/viewer/VideoViewer.svelte | 8 +++++++- 7 files changed, 37 insertions(+), 20 deletions(-) diff --git a/packages/presentation/src/components/FilePreview.svelte b/packages/presentation/src/components/FilePreview.svelte index 31a8f8ccc4..2c63670a3f 100644 --- a/packages/presentation/src/components/FilePreview.svelte +++ b/packages/presentation/src/components/FilePreview.svelte @@ -27,6 +27,7 @@ export let name: string export let metadata: BlobMetadata | undefined export let props: Record = {} + export let fit: boolean = false let download: HTMLAnchorElement let parentWidth: number @@ -44,6 +45,7 @@ pT: FilePreviewExtension | undefined, mD: BlobMetadata | undefined ): void => { + if (fit) return if (pT === undefined || mD?.originalWidth === undefined || mD?.originalHeight === undefined) { minHeight = undefined return @@ -72,13 +74,15 @@ minHeight = scale === 1 ? fHeight : mHeight } $: updateHeight(parentWidth, parentHeight, previewType, metadata) + $: audio = previewType && Array.isArray(previewType) && previewType[0].contentType === 'audio/*' $: srcRef = getBlobSrcFor(file, name)
(parentWidth = element.clientWidth)} - class="content flex-col items-center w-full h-full" - style:min-height={`${minHeight ?? 0}px`} + class="content w-full h-full" + class:flex-center={fit && !audio} + style:min-height={fit ? '100%' : `${minHeight ?? 0}px`} > {#await srcRef then src} {#if src === ''} @@ -88,7 +92,7 @@ {:else if previewType !== undefined} {:else}
diff --git a/packages/presentation/src/components/FilePreviewPopup.svelte b/packages/presentation/src/components/FilePreviewPopup.svelte index 655d4d1b86..ddcf2cad2b 100644 --- a/packages/presentation/src/components/FilePreviewPopup.svelte +++ b/packages/presentation/src/components/FilePreviewPopup.svelte @@ -102,7 +102,7 @@ {#if blob !== undefined} - + {/if} diff --git a/packages/theme/styles/dialogs.scss b/packages/theme/styles/dialogs.scss index 1201bea902..e94e82b2b1 100644 --- a/packages/theme/styles/dialogs.scss +++ b/packages/theme/styles/dialogs.scss @@ -338,6 +338,9 @@ min-height: 0; &.rounded { border-radius: 0 0 .5rem .5rem; } + &:has(audio) { + flex-grow: 0; + } } .footer { diff --git a/packages/ui/src/components/CircleButton.svelte b/packages/ui/src/components/CircleButton.svelte index 689b37c421..a53e382259 100644 --- a/packages/ui/src/components/CircleButton.svelte +++ b/packages/ui/src/components/CircleButton.svelte @@ -54,7 +54,7 @@ {#if $$slots.content} {:else if icon} -
+
{/if} diff --git a/plugins/view-resources/src/components/viewer/ImageViewer.svelte b/plugins/view-resources/src/components/viewer/ImageViewer.svelte index d21abd7179..2d8742d71f 100644 --- a/plugins/view-resources/src/components/viewer/ImageViewer.svelte +++ b/plugins/view-resources/src/components/viewer/ImageViewer.svelte @@ -19,23 +19,20 @@ export let value: Blob | Ref export let name: string export let metadata: BlobMetadata | undefined + export let fit: boolean = false $: p = typeof value === 'string' ? getBlobRef(undefined, value, name) : getBlobRef(value, value._id) - $: maxWidth = - metadata?.originalWidth && metadata?.pixelRatio - ? `min(${metadata.originalWidth / metadata.pixelRatio}px, 100%)` - : undefined - $: maxHeight = - metadata?.originalHeight && metadata?.pixelRatio - ? `min(${metadata.originalHeight / metadata.pixelRatio}px, 80vh)` - : undefined + $: width = metadata?.originalWidth ? `min(${metadata.originalWidth / metadata?.pixelRatio ?? 1}px, 100%)` : '100%' + $: height = metadata?.originalHeight + ? `min(${metadata.originalHeight / metadata?.pixelRatio ?? 1}px, ${fit ? '100%' : '80vh'})` + : '100%' {#await p then blobRef} {name} export let name: string export let metadata: BlobMetadata | undefined + export let fit: boolean = false {#await getBlobSrcFor(value, name) then href} -