mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-08-10 10:22:29 +08:00
chore(client/ts): port menus/electron_context_menu
This commit is contained in:
parent
6480ce9aaf
commit
eb9a55bf4f
@ -15,17 +15,18 @@ interface MenuSeparatorItem {
|
||||
export interface MenuCommandItem {
|
||||
title: string;
|
||||
command?: string;
|
||||
type: string;
|
||||
uiIcon: string;
|
||||
type?: string;
|
||||
uiIcon?: string;
|
||||
templateNoteId?: string;
|
||||
enabled?: boolean;
|
||||
handler?: MenuHandler;
|
||||
items?: MenuItem[];
|
||||
shortcut?: string;
|
||||
spellingSuggestion?: string;
|
||||
}
|
||||
|
||||
export type MenuItem = MenuCommandItem | MenuSeparatorItem;
|
||||
export type MenuHandler = (item: MenuItem, e: JQuery.MouseDownEvent<HTMLElement, undefined, HTMLElement, HTMLElement>) => void;
|
||||
export type MenuHandler = (item: MenuCommandItem, e: JQuery.MouseDownEvent<HTMLElement, undefined, HTMLElement, HTMLElement>) => void;
|
||||
|
||||
class ContextMenu {
|
||||
|
||||
|
@ -3,12 +3,14 @@ import options from "../services/options.js";
|
||||
import zoomService from "../components/zoom.js";
|
||||
import contextMenu from "./context_menu.js";
|
||||
import { t } from "../services/i18n.js";
|
||||
import type { BrowserWindow } from "electron";
|
||||
|
||||
function setupContextMenu() {
|
||||
const electron = utils.dynamicRequire('electron');
|
||||
|
||||
const remote = utils.dynamicRequire('@electron/remote');
|
||||
const {webContents} = remote.getCurrentWindow();
|
||||
// FIXME: Remove typecast once Electron is properly integrated.
|
||||
const {webContents} = remote.getCurrentWindow() as BrowserWindow;
|
||||
|
||||
webContents.on('context-menu', (event, params) => {
|
||||
const {editFlags} = params;
|
||||
@ -97,7 +99,7 @@ function setupContextMenu() {
|
||||
|
||||
// Read the search engine from the options and fallback to DuckDuckGo if the option is not set.
|
||||
const customSearchEngineName = options.get("customSearchEngineName");
|
||||
const customSearchEngineUrl = options.get("customSearchEngineUrl");
|
||||
const customSearchEngineUrl = options.get("customSearchEngineUrl") as string;
|
||||
let searchEngineName;
|
||||
let searchEngineUrl;
|
||||
if (customSearchEngineName && customSearchEngineUrl) {
|
||||
@ -132,7 +134,7 @@ function setupContextMenu() {
|
||||
y: params.y / zoomLevel,
|
||||
items,
|
||||
selectMenuItemHandler: ({command, spellingSuggestion}) => {
|
||||
if (command === 'replaceMisspelling') {
|
||||
if (command === 'replaceMisspelling' && spellingSuggestion) {
|
||||
webContents.insertText(spellingSuggestion);
|
||||
}
|
||||
}
|
@ -131,9 +131,9 @@ export default class NoteTypeChooserDialog extends BasicWidget {
|
||||
const commandItem = (noteType as MenuCommandItem)
|
||||
this.$noteTypeDropdown.append(
|
||||
$('<a class="dropdown-item" tabindex="0">')
|
||||
.attr("data-note-type", commandItem.type)
|
||||
.attr("data-note-type", commandItem.type || "")
|
||||
.attr("data-template-note-id", commandItem.templateNoteId || "")
|
||||
.append($("<span>").addClass(commandItem.uiIcon))
|
||||
.append($("<span>").addClass(commandItem.uiIcon || ""))
|
||||
.append(` ${noteType.title}`)
|
||||
);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user