diff --git a/apps/client/src/menus/link_context_menu.ts b/apps/client/src/menus/link_context_menu.ts index 6683bc27a..0799a58ab 100644 --- a/apps/client/src/menus/link_context_menu.ts +++ b/apps/client/src/menus/link_context_menu.ts @@ -4,6 +4,7 @@ import appContext, { type CommandNames } from "../components/app_context.js"; import type { ViewScope } from "../services/link.js"; import utils, { isMobile } from "../services/utils.js"; import { getClosestNtxId } from "../widgets/widget_utils.js"; +import type { LeafletMouseEvent } from "leaflet"; function openContextMenu(notePath: string, e: ContextMenuEvent, viewScope: ViewScope = {}, hoistedNoteId: string | null = null) { contextMenu.show({ @@ -14,7 +15,7 @@ function openContextMenu(notePath: string, e: ContextMenuEvent, viewScope: ViewS }); } -function getItems(e: ContextMenuEvent): MenuItem[] { +function getItems(e: ContextMenuEvent | LeafletMouseEvent): MenuItem[] { const ntxId = getNtxId(e); const isMobileSplitOpen = isMobile() && appContext.tabManager.getNoteContextById(ntxId).getMainContext().getSubContexts().length > 1; @@ -26,7 +27,7 @@ function getItems(e: ContextMenuEvent): MenuItem[] { ]; } -function handleLinkContextMenuItem(command: string | undefined, e: ContextMenuEvent, notePath: string, viewScope = {}, hoistedNoteId: string | null = null) { +function handleLinkContextMenuItem(command: string | undefined, e: ContextMenuEvent | LeafletMouseEvent, notePath: string, viewScope = {}, hoistedNoteId: string | null = null) { if (!hoistedNoteId) { hoistedNoteId = appContext.tabManager.getActiveContext()?.hoistedNoteId ?? null; } @@ -44,7 +45,7 @@ function handleLinkContextMenuItem(command: string | undefined, e: ContextMenuEv } } -function getNtxId(e: ContextMenuEvent) { +function getNtxId(e: ContextMenuEvent | LeafletMouseEvent) { if (utils.isDesktop()) { const subContexts = appContext.tabManager.getActiveContext()?.getSubContexts(); if (!subContexts) return null; diff --git a/apps/client/src/widgets/collections/board/context_menu.ts b/apps/client/src/widgets/collections/board/context_menu.ts index 034f15e25..d7ae56a52 100644 --- a/apps/client/src/widgets/collections/board/context_menu.ts +++ b/apps/client/src/widgets/collections/board/context_menu.ts @@ -41,7 +41,7 @@ export function openNoteContextMenu(api: Api, event: ContextMenuEvent, note: FNo x: event.pageX, y: event.pageY, items: [ - ...link_context_menu.getItems(), + ...link_context_menu.getItems(event), { kind: "separator" }, { title: t("board_view.insert-above"), @@ -81,7 +81,7 @@ export function openNoteContextMenu(api: Api, event: ContextMenuEvent, note: FNo componentFn: () => NoteColorPicker({note}) } ], - selectMenuItemHandler: ({ command }) => link_context_menu.handleLinkContextMenuItem(command, note.noteId), + selectMenuItemHandler: ({ command }) => link_context_menu.handleLinkContextMenuItem(command, event, note.noteId), }); } diff --git a/apps/client/src/widgets/collections/calendar/context_menu.ts b/apps/client/src/widgets/collections/calendar/context_menu.ts index bb370a8f4..5b157567e 100644 --- a/apps/client/src/widgets/collections/calendar/context_menu.ts +++ b/apps/client/src/widgets/collections/calendar/context_menu.ts @@ -14,7 +14,7 @@ export function openCalendarContextMenu(e: ContextMenuEvent, note: FNote, parent x: e.pageX, y: e.pageY, items: [ - ...link_context_menu.getItems(), + ...link_context_menu.getItems(e), { kind: "separator" }, getArchiveMenuItem(note), { @@ -40,6 +40,6 @@ export function openCalendarContextMenu(e: ContextMenuEvent, note: FNote, parent componentFn: () => NoteColorPicker({note: note}) } ], - selectMenuItemHandler: ({ command }) => link_context_menu.handleLinkContextMenuItem(command, note.noteId), + selectMenuItemHandler: ({ command }) => link_context_menu.handleLinkContextMenuItem(command, e, note.noteId), }) } diff --git a/apps/client/src/widgets/collections/geomap/context_menu.ts b/apps/client/src/widgets/collections/geomap/context_menu.ts index f4161fad9..47026566f 100644 --- a/apps/client/src/widgets/collections/geomap/context_menu.ts +++ b/apps/client/src/widgets/collections/geomap/context_menu.ts @@ -12,7 +12,7 @@ export default function openContextMenu(noteId: string, e: LeafletMouseEvent, is let items: MenuItem[] = [ ...buildGeoLocationItem(e), { kind: "separator" }, - ...linkContextMenu.getItems(), + ...linkContextMenu.getItems(e), ]; if (isEditable) { @@ -32,14 +32,14 @@ export default function openContextMenu(noteId: string, e: LeafletMouseEvent, is x: e.originalEvent.pageX, y: e.originalEvent.pageY, items, - selectMenuItemHandler: ({ command }, e) => { + selectMenuItemHandler: ({ command }) => { if (command === "deleteFromMap") { appContext.triggerCommand(command, { noteId }); return; } // Pass the events to the link context menu - linkContextMenu.handleLinkContextMenuItem(command, noteId); + linkContextMenu.handleLinkContextMenuItem(command, e, noteId); } }); } diff --git a/apps/client/src/widgets/collections/table/context_menu.ts b/apps/client/src/widgets/collections/table/context_menu.ts index 80b1c93c2..2cb5ce475 100644 --- a/apps/client/src/widgets/collections/table/context_menu.ts +++ b/apps/client/src/widgets/collections/table/context_menu.ts @@ -174,7 +174,7 @@ export function showRowContextMenu(parentComponent: Component, e: MouseEvent, ro contextMenu.show({ items: [ - ...link_context_menu.getItems(), + ...link_context_menu.getItems(e), { kind: "separator" }, { title: t("table_view.row-insert-above"), @@ -227,7 +227,7 @@ export function showRowContextMenu(parentComponent: Component, e: MouseEvent, ro componentFn: () => NoteColorPicker({note: rowData.noteId}) } ], - selectMenuItemHandler: ({ command }) => link_context_menu.handleLinkContextMenuItem(command, rowData.noteId), + selectMenuItemHandler: ({ command }) => link_context_menu.handleLinkContextMenuItem(command, e, rowData.noteId), x: e.pageX, y: e.pageY });