chore(client/ts): port menus/electron_context_menu

This commit is contained in:
Elian Doran 2024-12-22 17:44:50 +02:00
parent 6480ce9aaf
commit eb9a55bf4f
No known key found for this signature in database
3 changed files with 11 additions and 8 deletions

View File

@ -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 {

View File

@ -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);
}
}

View File

@ -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}`)
);
}