diff --git a/web/src/lib/actions/context-menu-navigation.ts b/web/src/lib/actions/context-menu-navigation.ts index 3b45e7fe52..85e9f70f91 100644 --- a/web/src/lib/actions/context-menu-navigation.ts +++ b/web/src/lib/actions/context-menu-navigation.ts @@ -46,7 +46,11 @@ export const contextMenuNavigation: Action = (node, option }; const moveSelection = async (direction: 'up' | 'down', event: KeyboardEvent) => { - const { selectionChanged, container, openDropdown } = options; + const { selectionChanged, container, openDropdown, isOpen } = options; + if (!isOpen) { + // reset the scroll position before opening the menu + container?.scrollTo({ top: 0 }); + } if (openDropdown) { openDropdown(event); await tick(); diff --git a/web/src/lib/components/album-page/share-info-modal.svelte b/web/src/lib/components/album-page/share-info-modal.svelte index ee98d5a821..4ce5a5138a 100644 --- a/web/src/lib/components/album-page/share-info-modal.svelte +++ b/web/src/lib/components/album-page/share-info-modal.svelte @@ -109,7 +109,13 @@ {/if} {#if isOwned} - + {#if role === AlbumUserRole.Viewer} handleSetReadonly(user, AlbumUserRole.Editor)} text={$t('allow_edits')} /> {:else} diff --git a/web/src/lib/components/asset-viewer/activity-viewer.svelte b/web/src/lib/components/asset-viewer/activity-viewer.svelte index 3a02454315..57c86f67ee 100644 --- a/web/src/lib/components/asset-viewer/activity-viewer.svelte +++ b/web/src/lib/components/asset-viewer/activity-viewer.svelte @@ -186,13 +186,7 @@ {/if} {#if reaction.user.id === user.id || albumOwnerId === user.id}
- + - + - + {#if showSlideshow} {/if} diff --git a/web/src/lib/components/faces-page/people-card.svelte b/web/src/lib/components/faces-page/people-card.svelte index 6791a26232..ec71c291c2 100644 --- a/web/src/lib/components/faces-page/people-card.svelte +++ b/web/src/lib/components/faces-page/people-card.svelte @@ -67,6 +67,8 @@ size="20" icon={mdiDotsVertical} title={$t('show_person_options')} + direction="right" + align="top-left" > diff --git a/web/src/lib/components/memory-page/memory-viewer.svelte b/web/src/lib/components/memory-page/memory-viewer.svelte index 919433f79b..8f7fbc544f 100644 --- a/web/src/lib/components/memory-page/memory-viewer.svelte +++ b/web/src/lib/components/memory-page/memory-viewer.svelte @@ -237,7 +237,7 @@ - + diff --git a/web/src/lib/components/shared-components/context-menu/button-context-menu.svelte b/web/src/lib/components/shared-components/context-menu/button-context-menu.svelte index f1ee93cc50..87795b9f7f 100644 --- a/web/src/lib/components/shared-components/context-menu/button-context-menu.svelte +++ b/web/src/lib/components/shared-components/context-menu/button-context-menu.svelte @@ -20,11 +20,11 @@ /** * The alignment of the context menu relative to the button. */ - export let align: Align = 'top-left'; + export let align: Align = 'top-right'; /** * The direction in which the context menu should open. */ - export let direction: 'left' | 'right' = 'right'; + export let direction: 'left' | 'right' = 'left'; export let color: Color = 'transparent'; export let size: string | undefined = undefined; export let padding: Padding | undefined = undefined; diff --git a/web/src/lib/components/shared-components/context-menu/context-menu.svelte b/web/src/lib/components/shared-components/context-menu/context-menu.svelte index 8f5ebfa2cf..d675ab088d 100644 --- a/web/src/lib/components/shared-components/context-menu/context-menu.svelte +++ b/web/src/lib/components/shared-components/context-menu/context-menu.svelte @@ -18,25 +18,26 @@ let left: number; let top: number; - // We need to bind clientHeight since the bounding box may return a height - // of zero when starting the 'slide' animation. - let height: number; - $: { if (menuElement) { const rect = menuElement.getBoundingClientRect(); const directionWidth = direction === 'left' ? rect.width : 0; - const menuHeight = Math.min(menuElement.clientHeight, height) || 0; + const menuHeight = menuElement.clientHeight || 0; - left = Math.min(window.innerWidth - rect.width, x - directionWidth); + const calcLeft = Math.min(window.innerWidth - rect.width, x - directionWidth); + left = Math.max(0, calcLeft); top = Math.min(window.innerHeight - menuHeight, y); } }