From 070ef0325828f5abf415fae5b05517b210f13ade Mon Sep 17 00:00:00 2001 From: Timon Date: Sun, 13 Sep 2026 03:55:06 +0200 Subject: [PATCH] fix(web): show full path on hover in duplicates utility (#31468) --- web/src/lib/utils/duplicate-utils.ts | 13 ++++++++----- .../[[assetId=id]]/DuplicateAsset.svelte | 4 ++-- .../[[photos=photos]]/[[assetId=id]]/InfoRow.svelte | 9 +++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/web/src/lib/utils/duplicate-utils.ts b/web/src/lib/utils/duplicate-utils.ts index 53a52ddcf..d0c696d3c 100644 --- a/web/src/lib/utils/duplicate-utils.ts +++ b/web/src/lib/utils/duplicate-utils.ts @@ -59,6 +59,7 @@ type MetadataFieldDefinition = { titleKey: string; keys: readonly string[]; render: (asset: AssetResponseDto, $t: MessageFormatter, locale: string | undefined) => string; + tooltip?: (asset: AssetResponseDto, $t: MessageFormatter) => string; }; const metadataFields = [ @@ -73,6 +74,7 @@ const metadataFields = [ titleKey: 'path', keys: ['originalPath'], render: (asset, $t) => truncateMiddle(asset.originalPath) || $t('unknown'), + tooltip: (asset, $t) => $t('full_path', { values: { path: asset.originalPath } }), }, { icon: mdiWeightKilogram, @@ -233,11 +235,12 @@ export const countDifferingMetadataItems = (differing: DifferingMetadataFields): metadataFields.filter(({ keys }) => keys.some((k) => differing[k as MetadataFieldKey])).length; export const getAllMetadataItems = (asset: AssetResponseDto, $t: MessageFormatter, locale: string | undefined) => - metadataFields.map(({ icon, titleKey, keys, render }) => ({ - icon, - title: $t(titleKey), - render: render(asset, $t, locale), - keys, + metadataFields.map((field) => ({ + icon: field.icon, + title: $t(field.titleKey), + render: field.render(asset, $t, locale), + tooltip: 'tooltip' in field ? field.tooltip(asset, $t) : undefined, + keys: field.keys, })); const normalizeForComparison = (key: MetadataFieldKey, value: unknown): unknown => { diff --git a/web/src/routes/(user)/utilities/duplicates/[[photos=photos]]/[[assetId=id]]/DuplicateAsset.svelte b/web/src/routes/(user)/utilities/duplicates/[[photos=photos]]/[[assetId=id]]/DuplicateAsset.svelte index 830cdb7bf..4026ef676 100644 --- a/web/src/routes/(user)/utilities/duplicates/[[photos=photos]]/[[assetId=id]]/DuplicateAsset.svelte +++ b/web/src/routes/(user)/utilities/duplicates/[[photos=photos]]/[[assetId=id]]/DuplicateAsset.svelte @@ -106,8 +106,8 @@ ? 'bg-success/15 dark:bg-[#001a06]' : 'bg-transparent'}" > - {#each visibleMetadataItems as { icon, title, render, keys } (keys[0])} - + {#each visibleMetadataItems as { icon, title, render, tooltip, keys } (keys[0])} + {render} {/each} diff --git a/web/src/routes/(user)/utilities/duplicates/[[photos=photos]]/[[assetId=id]]/InfoRow.svelte b/web/src/routes/(user)/utilities/duplicates/[[photos=photos]]/[[assetId=id]]/InfoRow.svelte index fbc2db099..ef2895929 100644 --- a/web/src/routes/(user)/utilities/duplicates/[[photos=photos]]/[[assetId=id]]/InfoRow.svelte +++ b/web/src/routes/(user)/utilities/duplicates/[[photos=photos]]/[[assetId=id]]/InfoRow.svelte @@ -7,12 +7,17 @@ children?: Snippet; borderBottom?: boolean; title?: string; + tooltip?: string; } - let { icon, children, borderBottom = true, title }: Props = $props(); + let { icon, children, borderBottom = true, title, tooltip }: Props = $props(); -
+
{#if title}