diff --git a/web/src/lib/components/album-page/album-card.svelte b/web/src/lib/components/album-page/album-card.svelte index 3072d21502..781710f8a3 100644 --- a/web/src/lib/components/album-page/album-card.svelte +++ b/web/src/lib/components/album-page/album-card.svelte @@ -12,6 +12,7 @@ export let user: UserResponseDto; export let showItemCount = true; export let showContextMenu = true; + let showVerticalDots = false; $: imageData = album.albumThumbnailAssetId ? api.getAssetThumbnailUrl(album.albumThumbnailAssetId, ThumbnailFormat.Webp) @@ -63,6 +64,8 @@ class="group relative mt-4 rounded-3xl border-[3px] border-transparent p-5 hover:cursor-pointer hover:border-immich-primary/75 dark:hover:border-immich-dark-primary/75" on:click={() => dispatchClick('click', album)} on:keydown={() => dispatchClick('click', album)} + on:mouseenter={() => (showVerticalDots = true)} + on:mouseleave={() => (showVerticalDots = false)} data-testid="album-card" > @@ -71,9 +74,10 @@ id={`icon-${album.id}`} class="absolute right-6 top-6 z-10" on:click|stopPropagation|preventDefault={showAlbumContextMenu} + class:hidden={!showVerticalDots} data-testid="context-button-parent" > - + diff --git a/web/src/lib/components/faces-page/people-card.svelte b/web/src/lib/components/faces-page/people-card.svelte index 0f41ef6983..57149a3ac4 100644 --- a/web/src/lib/components/faces-page/people-card.svelte +++ b/web/src/lib/components/faces-page/people-card.svelte @@ -10,16 +10,37 @@ export let person: PersonResponseDto; - let showContextMenu = false; + type MenuItemEvent = 'change-name' | 'set-birth-date' | 'merge-faces' | 'hide-face'; let dispatch = createEventDispatcher<{ 'change-name': void; 'set-birth-date': void; 'merge-faces': void; 'hide-face': void; }>(); + + let showVerticalDots = false; + let showContextMenu = false; + let contextMenuPosition = { x: 0, y: 0 }; + const showMenu = ({ x, y }: MouseEvent) => { + contextMenuPosition = { x, y }; + showContextMenu = !showContextMenu; + }; + const onMenuExit = () => { + showContextMenu = false; + }; + const onMenuClick = (event: MenuItemEvent) => { + onMenuExit(); + dispatch(event); + }; -
+