diff --git a/web/src/lib/components/asset-viewer/asset-viewer.svelte b/web/src/lib/components/asset-viewer/asset-viewer.svelte index 00d526353e1..c4db1290d61 100644 --- a/web/src/lib/components/asset-viewer/asset-viewer.svelte +++ b/web/src/lib/components/asset-viewer/asset-viewer.svelte @@ -592,29 +592,27 @@ id="stack-slideshow" class="z-[1002] flex place-item-center place-content-center absolute bottom-0 w-full col-span-4 col-start-1 overflow-x-auto horizontal-scrollbar" > -
+
{#each stackedAssets as stackedAsset (stackedAsset.id)}
{ asset = stackedAsset; }} onMouseEvent={({ isMouseOver }) => handleStackedAssetMouseEvent(isMouseOver, stackedAsset)} - disableMouseOver readonly - thumbnailSize={stackedAsset.id == asset.id ? 65 : 60} + thumbnailSize={stackedAsset.id === asset.id ? 65 : 60} showStackedIcon={false} + disableLinkMouseOver /> - {#if stackedAsset.id == asset.id} + {#if stackedAsset.id === asset.id}
diff --git a/web/src/lib/components/assets/thumbnail/__test__/thumbnail.spec.ts b/web/src/lib/components/assets/thumbnail/__test__/thumbnail.spec.ts index 3fbb8a550c5..f7447551f03 100644 --- a/web/src/lib/components/assets/thumbnail/__test__/thumbnail.spec.ts +++ b/web/src/lib/components/assets/thumbnail/__test__/thumbnail.spec.ts @@ -23,6 +23,9 @@ vi.hoisted(() => { describe('Thumbnail component', () => { beforeAll(() => { vi.stubGlobal('IntersectionObserver', getIntersectionObserverMock()); + vi.mock('$lib/utils/navigation', () => ({ + currentUrlReplaceAssetId: vi.fn(), + })); }); it('should only contain a single tabbable element (the container)', () => { @@ -30,7 +33,6 @@ describe('Thumbnail component', () => { render(Thumbnail, { asset, focussed: false, - overrideDisplayForTest: true, selected: true, }); @@ -55,7 +57,6 @@ describe('Thumbnail component', () => { const handleFocusSpy = vi.fn(); render(Thumbnail, { asset, - overrideDisplayForTest: true, handleFocus: handleFocusSpy, }); @@ -70,7 +71,6 @@ describe('Thumbnail component', () => { const handleFocusSpy = vi.fn(); render(Thumbnail, { asset, - overrideDisplayForTest: true, focussed: true, handleFocus: handleFocusSpy, }); diff --git a/web/src/lib/components/assets/thumbnail/image-thumbnail.svelte b/web/src/lib/components/assets/thumbnail/image-thumbnail.svelte index 6c0487eb606..4f4390b23df 100644 --- a/web/src/lib/components/assets/thumbnail/image-thumbnail.svelte +++ b/web/src/lib/components/assets/thumbnail/image-thumbnail.svelte @@ -4,6 +4,7 @@ import Icon from '$lib/components/elements/icon.svelte'; import { TUNABLES } from '$lib/utils/tunables'; import { mdiEyeOffOutline } from '@mdi/js'; + import type { ClassValue } from 'svelte/elements'; import { fade } from 'svelte/transition'; interface Props { @@ -19,6 +20,7 @@ hidden?: boolean; border?: boolean; hiddenIconClass?: string; + class?: ClassValue; onComplete?: (() => void) | undefined; } @@ -36,6 +38,7 @@ border = false, hiddenIconClass = 'text-white', onComplete = undefined, + class: imageClass = '', }: Props = $props(); let { @@ -88,7 +91,7 @@ src={url} alt={loaded || errored ? altText : ''} {title} - class="object-cover {optionalClasses}" + class={['object-cover', optionalClasses, imageClass]} class:opacity-0={!thumbhash && !loaded} draggable="false" /> diff --git a/web/src/lib/components/assets/thumbnail/thumbnail.svelte b/web/src/lib/components/assets/thumbnail/thumbnail.svelte index 0dbbe718ee7..4e203470e3c 100644 --- a/web/src/lib/components/assets/thumbnail/thumbnail.svelte +++ b/web/src/lib/components/assets/thumbnail/thumbnail.svelte @@ -1,12 +1,11 @@