diff --git a/web/src/lib/components/assets/thumbnail/thumbnail.svelte b/web/src/lib/components/assets/thumbnail/thumbnail.svelte index dd7f30b981..bc0f2567e7 100644 --- a/web/src/lib/components/assets/thumbnail/thumbnail.svelte +++ b/web/src/lib/components/assets/thumbnail/thumbnail.svelte @@ -11,6 +11,7 @@ mdiCameraBurst, mdiCheckCircle, mdiHeart, + mdiMagnifyPlusOutline, mdiMotionPauseOutline, mdiMotionPlayOutline, mdiRotate360, @@ -37,6 +38,7 @@ thumbnailHeight?: number; selected?: boolean; selectionCandidate?: boolean; + selectionActive?: boolean; disabled?: boolean; disableLinkMouseOver?: boolean; readonly?: boolean; @@ -45,7 +47,7 @@ imageClass?: ClassValue; brokenAssetClass?: ClassValue; dimmed?: boolean; - onClick?: (asset: TimelineAsset) => void; + onClick?: (asset: TimelineAsset, forceView?: boolean) => void; onSelect?: (asset: TimelineAsset) => void; onMouseEvent?: (event: { isMouseOver: boolean; selectedGroupIndex: number }) => void; } @@ -58,6 +60,7 @@ thumbnailHeight = undefined, selected = false, selectionCandidate = false, + selectionActive = false, disabled = false, disableLinkMouseOver = false, readonly = false, @@ -92,6 +95,12 @@ } }; + const onViewerIconClickedHandler = (e?: MouseEvent) => { + e?.stopPropagation(); + e?.preventDefault(); + onClick?.($state.snapshot(asset), true); + }; + const callClickHandlers = () => { if (selected) { onIconClickedHandler(); @@ -310,6 +319,19 @@ {/if} + + {#if mouseOver && selectionActive} + + {/if} + { - if (isSelectionMode || assetInteraction.selectionActive) { + if (!forceView && (isSelectionMode || assetInteraction.selectionActive)) { assetSelectHandler(timelineManager, asset, assets, groupTitle); return; } @@ -218,11 +219,11 @@ {showArchiveIcon} {asset} {groupIndex} - onClick={(asset) => { + onClick={(asset, forceView:boolean = false) => { if (typeof onThumbnailClick === 'function') { onThumbnailClick(asset, timelineManager, dayGroup, _onClick); } else { - _onClick(timelineManager, dayGroup.getAssets(), dayGroup.groupTitle, asset); + _onClick(timelineManager, dayGroup.getAssets(), dayGroup.groupTitle, asset, forceView); } }} onSelect={(asset) => assetSelectHandler(timelineManager, asset, dayGroup.getAssets(), dayGroup.groupTitle)} @@ -230,6 +231,7 @@ selected={assetInteraction.hasSelectedAsset(asset.id) || dayGroup.monthGroup.timelineManager.albumAssets.has(asset.id)} selectionCandidate={assetInteraction.hasSelectionCandidate(asset.id)} + selectionActive={assetInteraction.selectionActive} disabled={dayGroup.monthGroup.timelineManager.albumAssets.has(asset.id)} thumbnailWidth={position.width} thumbnailHeight={position.height}