mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 04:51:31 +08:00 
			
		
		
		
	chore(client/ts): port menus/link_context_menu
This commit is contained in:
		
							parent
							
								
									6140bb5d99
								
							
						
					
					
						commit
						dd4885e15c
					
				| @ -8,7 +8,7 @@ import zoomComponent from "./zoom.js"; | |||||||
| import TabManager from "./tab_manager.js"; | import TabManager from "./tab_manager.js"; | ||||||
| import Component from "./component.js"; | import Component from "./component.js"; | ||||||
| import keyboardActionsService from "../services/keyboard_actions.js"; | import keyboardActionsService from "../services/keyboard_actions.js"; | ||||||
| import linkService from "../services/link.js"; | import linkService, { ViewScope } from "../services/link.js"; | ||||||
| import MobileScreenSwitcherExecutor from "./mobile_screen_switcher.js"; | import MobileScreenSwitcherExecutor from "./mobile_screen_switcher.js"; | ||||||
| import MainTreeExecutors from "./main_tree_executors.js"; | import MainTreeExecutors from "./main_tree_executors.js"; | ||||||
| import toast from "../services/toast.js"; | import toast from "../services/toast.js"; | ||||||
| @ -62,7 +62,14 @@ type CommandMappings = { | |||||||
|     openNewNoteSplit: CommandData & { |     openNewNoteSplit: CommandData & { | ||||||
|         ntxId: string; |         ntxId: string; | ||||||
|         notePath: string; |         notePath: string; | ||||||
|  |         hoistedNoteId?: string; | ||||||
|  |         viewScope?: ViewScope; | ||||||
|     }; |     }; | ||||||
|  |     openInWindow: CommandData & { | ||||||
|  |         notePath: string; | ||||||
|  |         hoistedNoteId: string; | ||||||
|  |         viewScope: ViewScope; | ||||||
|  |     } | ||||||
|     executeInActiveNoteDetailWidget: CommandData & { |     executeInActiveNoteDetailWidget: CommandData & { | ||||||
|         callback: (value: NoteDetailWidget | PromiseLike<NoteDetailWidget>) => void |         callback: (value: NoteDetailWidget | PromiseLike<NoteDetailWidget>) => void | ||||||
|     }; |     }; | ||||||
|  | |||||||
| @ -7,11 +7,6 @@ import { t } from '../services/i18n.js'; | |||||||
| import type { SelectMenuItemEventListener } from '../components/events.js'; | import type { SelectMenuItemEventListener } from '../components/events.js'; | ||||||
| import NoteTreeWidget from '../widgets/note_tree.js'; | import NoteTreeWidget from '../widgets/note_tree.js'; | ||||||
| 
 | 
 | ||||||
| interface ShowContext { |  | ||||||
|     pageX: number; |  | ||||||
|     pageY: number; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export default class LauncherContextMenu implements SelectMenuItemEventListener { | export default class LauncherContextMenu implements SelectMenuItemEventListener { | ||||||
| 
 | 
 | ||||||
|     private treeWidget: NoteTreeWidget; |     private treeWidget: NoteTreeWidget; | ||||||
| @ -22,7 +17,7 @@ export default class LauncherContextMenu implements SelectMenuItemEventListener | |||||||
|         this.node = node; |         this.node = node; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async show(e: ShowContext) { |     async show(e: PointerEvent) { | ||||||
|         contextMenu.show({ |         contextMenu.show({ | ||||||
|             x: e.pageX, |             x: e.pageX, | ||||||
|             y: e.pageY, |             y: e.pageY, | ||||||
|  | |||||||
| @ -1,8 +1,9 @@ | |||||||
| import { t } from "../services/i18n.js"; | import { t } from "../services/i18n.js"; | ||||||
| import contextMenu from "./context_menu.js"; | import contextMenu from "./context_menu.js"; | ||||||
| import appContext from "../components/app_context.js"; | import appContext from "../components/app_context.js"; | ||||||
|  | import { ViewScope } from "../services/link.js"; | ||||||
| 
 | 
 | ||||||
| function openContextMenu(notePath, e, viewScope = {}, hoistedNoteId = null) { | function openContextMenu(notePath: string, e: PointerEvent, viewScope: ViewScope = {}, hoistedNoteId: string | null = null) { | ||||||
|     contextMenu.show({ |     contextMenu.show({ | ||||||
|         x: e.pageX, |         x: e.pageX, | ||||||
|         y: e.pageY, |         y: e.pageY, | ||||||
| @ -27,7 +27,7 @@ async function getLinkIcon(noteId: string, viewMode: ViewMode | undefined) { | |||||||
| 
 | 
 | ||||||
| type ViewMode = "default" | "source" | "attachments" | string; | type ViewMode = "default" | "source" | "attachments" | string; | ||||||
| 
 | 
 | ||||||
| interface ViewScope { | export interface ViewScope { | ||||||
|     viewMode?: ViewMode; |     viewMode?: ViewMode; | ||||||
|     attachmentId?: string; |     attachmentId?: string; | ||||||
| } | } | ||||||
| @ -305,7 +305,7 @@ function goToLinkExt(evt: MouseEvent, hrefLink: string | undefined, $link: JQuer | |||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function linkContextMenu(e: Event) { | function linkContextMenu(e: PointerEvent) { | ||||||
|     const $link = $(e.target as any).closest("a"); |     const $link = $(e.target as any).closest("a"); | ||||||
|     const url = $link.attr("href") || $link.attr("data-href"); |     const url = $link.attr("href") || $link.attr("data-href"); | ||||||
| 
 | 
 | ||||||
| @ -403,6 +403,8 @@ $(document).on('click', "a", goToLink); | |||||||
| // TODO: Check why the event is not supported.
 | // TODO: Check why the event is not supported.
 | ||||||
| //@ts-ignore
 | //@ts-ignore
 | ||||||
| $(document).on('auxclick', "a", goToLink); // to handle the middle button
 | $(document).on('auxclick', "a", goToLink); // to handle the middle button
 | ||||||
|  | // TODO: Check why the event is not supported.
 | ||||||
|  | //@ts-ignore
 | ||||||
| $(document).on('contextmenu', 'a', linkContextMenu); | $(document).on('contextmenu', 'a', linkContextMenu); | ||||||
| $(document).on('dblclick', "a", e => { | $(document).on('dblclick', "a", e => { | ||||||
|     e.preventDefault(); |     e.preventDefault(); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Elian Doran
						Elian Doran