diff --git a/apps/client/src/menus/context_menu.ts b/apps/client/src/menus/context_menu.ts index 09b51694d..786c53e4e 100644 --- a/apps/client/src/menus/context_menu.ts +++ b/apps/client/src/menus/context_menu.ts @@ -15,7 +15,7 @@ export interface ContextMenuOptions { } interface MenuSeparatorItem { - title: "----"; + kind: "separator"; } interface MenuHeader { @@ -161,7 +161,7 @@ class ContextMenu { continue; } - if (item.title === "----") { + if ("kind" in item && item.kind === "separator") { $parent.append($("
").addClass("dropdown-divider")); } else if ("kind" in item && item.kind === "header") { $parent.append($("
").addClass("dropdown-header").text(item.title)); diff --git a/apps/client/src/menus/electron_context_menu.ts b/apps/client/src/menus/electron_context_menu.ts index 51415c655..cbd35dcb8 100644 --- a/apps/client/src/menus/electron_context_menu.ts +++ b/apps/client/src/menus/electron_context_menu.ts @@ -112,7 +112,7 @@ function setupContextMenu() { // Replace the placeholder with the real search keyword. let searchUrl = searchEngineUrl.replace("{keyword}", encodeURIComponent(params.selectionText)); - items.push({ title: "----" }); + items.push({ kind: "separator" }); items.push({ title: t("electron_context_menu.search_online", { term: shortenedSelection, searchEngine: searchEngineName }), diff --git a/apps/client/src/menus/launcher_context_menu.ts b/apps/client/src/menus/launcher_context_menu.ts index 2ac7decee..717180690 100644 --- a/apps/client/src/menus/launcher_context_menu.ts +++ b/apps/client/src/menus/launcher_context_menu.ts @@ -45,16 +45,16 @@ export default class LauncherContextMenu implements SelectMenuItemEventListener< isVisibleRoot || isAvailableRoot ? { title: t("launcher_context_menu.add-script-launcher"), command: "addScriptLauncher", uiIcon: "bx bx-code-curly" } : null, isVisibleRoot || isAvailableRoot ? { title: t("launcher_context_menu.add-custom-widget"), command: "addWidgetLauncher", uiIcon: "bx bx-customize" } : null, isVisibleRoot || isAvailableRoot ? { title: t("launcher_context_menu.add-spacer"), command: "addSpacerLauncher", uiIcon: "bx bx-dots-horizontal" } : null, - isVisibleRoot || isAvailableRoot ? { title: "----" } : null, + isVisibleRoot || isAvailableRoot ? { kind: "separator" } : null, isAvailableItem ? { title: t("launcher_context_menu.move-to-visible-launchers"), command: "moveLauncherToVisible", uiIcon: "bx bx-show", enabled: true } : null, isVisibleItem ? { title: t("launcher_context_menu.move-to-available-launchers"), command: "moveLauncherToAvailable", uiIcon: "bx bx-hide", enabled: true } : null, - isVisibleItem || isAvailableItem ? { title: "----" } : null, + isVisibleItem || isAvailableItem ? { kind: "separator" } : null, { title: `${t("launcher_context_menu.duplicate-launcher")}`, command: "duplicateSubtree", uiIcon: "bx bx-outline", enabled: isItem }, { title: `${t("launcher_context_menu.delete")}`, command: "deleteNotes", uiIcon: "bx bx-trash destructive-action-icon", enabled: canBeDeleted }, - { title: "----" }, + { kind: "separator" }, { title: t("launcher_context_menu.reset"), command: "resetLauncher", uiIcon: "bx bx-reset destructive-action-icon", enabled: canBeReset } ]; diff --git a/apps/client/src/menus/tree_context_menu.ts b/apps/client/src/menus/tree_context_menu.ts index 4ef517912..6504b49eb 100644 --- a/apps/client/src/menus/tree_context_menu.ts +++ b/apps/client/src/menus/tree_context_menu.ts @@ -93,7 +93,7 @@ export default class TreeContextMenu implements SelectMenuItemEventListener(); let rootCreationDate: Date | undefined; @@ -157,7 +157,7 @@ async function getBuiltInTemplates(title: string | null, command: TreeCommandNam const items: MenuItem[] = []; if (title) { items.push({ - title: "title", + title: title, kind: "header" }); } else { diff --git a/apps/client/src/widgets/collections/board/context_menu.ts b/apps/client/src/widgets/collections/board/context_menu.ts index d3f74fde4..0c818a111 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 y: event.pageY, items: [ ...link_context_menu.getItems(), - { title: "----" }, + { kind: "separator" }, { title: t("board_view.move-to"), uiIcon: "bx bx-transfer", @@ -52,7 +52,7 @@ export function openNoteContextMenu(api: Api, event: ContextMenuEvent, note: FNo })), }, getArchiveMenuItem(note), - { title: "----" }, + { kind: "separator" }, { title: t("board_view.insert-above"), uiIcon: "bx bx-list-plus", @@ -63,7 +63,7 @@ export function openNoteContextMenu(api: Api, event: ContextMenuEvent, note: FNo uiIcon: "bx bx-empty", handler: () => api.insertRowAtPosition(column, branchId, "after") }, - { title: "----" }, + { kind: "separator" }, { title: t("board_view.remove-from-board"), uiIcon: "bx bx-task-x", diff --git a/apps/client/src/widgets/collections/geomap/context_menu.ts b/apps/client/src/widgets/collections/geomap/context_menu.ts index 617c4637f..dd583e266 100644 --- a/apps/client/src/widgets/collections/geomap/context_menu.ts +++ b/apps/client/src/widgets/collections/geomap/context_menu.ts @@ -10,14 +10,14 @@ import link from "../../../services/link.js"; export default function openContextMenu(noteId: string, e: LeafletMouseEvent, isEditable: boolean) { let items: MenuItem[] = [ ...buildGeoLocationItem(e), - { title: "----" }, + { kind: "separator" }, ...linkContextMenu.getItems(), ]; if (isEditable) { items = [ ...items, - { title: "----" }, + { kind: "separator" }, { title: t("geo-map-context.remove-from-map"), command: "deleteFromMap", uiIcon: "bx bx-trash" } ]; } @@ -46,7 +46,7 @@ export function openMapContextMenu(noteId: string, e: LeafletMouseEvent, isEdita if (isEditable) { items = [ ...items, - { title: "----" }, + { kind: "separator" }, { title: t("geo-map-context.add-note"), handler: () => createNewNote(noteId, e), diff --git a/apps/client/src/widgets/collections/table/context_menu.ts b/apps/client/src/widgets/collections/table/context_menu.ts index 16cbd39ff..eb0a303ae 100644 --- a/apps/client/src/widgets/collections/table/context_menu.ts +++ b/apps/client/src/widgets/collections/table/context_menu.ts @@ -74,7 +74,7 @@ function showColumnContextMenu(parentComponent: Component, e: MouseEvent, column handler: () => tabulator.clearSort() }, { - title: "----" + kind: "separator" }, { title: t("table_view.hide-column", { title }), @@ -86,7 +86,7 @@ function showColumnContextMenu(parentComponent: Component, e: MouseEvent, column uiIcon: "bx bx-columns", items: buildColumnItems(tabulator) }, - { title: "----" }, + { kind: "separator" }, { title: t("table_view.add-column-to-the-left"), uiIcon: "bx bx-horizontal-left", @@ -105,7 +105,7 @@ function showColumnContextMenu(parentComponent: Component, e: MouseEvent, column direction: "after" }) }, - { title: "----" }, + { kind: "separator" }, { title: t("table_view.edit-column"), uiIcon: "bx bxs-edit-alt", @@ -143,7 +143,7 @@ function showHeaderContextMenu(parentComponent: Component, e: MouseEvent, tabula uiIcon: "bx bx-columns", items: buildColumnItems(tabulator) }, - { title: "----" }, + { kind: "separator" }, { title: t("table_view.new-column"), uiIcon: "bx bx-empty", @@ -174,7 +174,7 @@ export function showRowContextMenu(parentComponent: Component, e: MouseEvent, ro contextMenu.show({ items: [ ...link_context_menu.getItems(), - { title: "----" }, + { kind: "separator" }, { title: t("table_view.row-insert-above"), uiIcon: "bx bx-horizontal-left bx-rotate-90", @@ -214,7 +214,7 @@ export function showRowContextMenu(parentComponent: Component, e: MouseEvent, ro } }) }, - { title: "----" }, + { kind: "separator" }, { title: t("table_context_menu.delete_row"), uiIcon: "bx bx-trash", diff --git a/apps/client/src/widgets/dialogs/note_type_chooser.tsx b/apps/client/src/widgets/dialogs/note_type_chooser.tsx index bc6e8abc9..fba12acca 100644 --- a/apps/client/src/widgets/dialogs/note_type_chooser.tsx +++ b/apps/client/src/widgets/dialogs/note_type_chooser.tsx @@ -41,7 +41,7 @@ export default function NoteTypeChooserDialogComponent() { let index = -1; setNoteTypes((noteTypes ?? []).map((item) => { - if (item.title === "----") { + if ("kind" in item && item.kind === "separator") { index++; return { title: SEPARATOR_TITLE_REPLACEMENTS[index], @@ -95,7 +95,7 @@ export default function NoteTypeChooserDialogComponent() { {noteTypes.map((_item) => { - if (_item.title === "----") { + if ("kind" in _item && _item.kind === "separator") { return; } diff --git a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx index 596a70300..a9e88246e 100644 --- a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx +++ b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx @@ -24,7 +24,7 @@ export default function MobileDetailMenu() { items: [ { title: t("mobile_detail_menu.insert_child_note"), command: "insertChildNote", uiIcon: "bx bx-plus", enabled: note?.type !== "search" }, { title: t("mobile_detail_menu.delete_this_note"), command: "delete", uiIcon: "bx bx-trash", enabled: note?.noteId !== "root" }, - { title: "----" }, + { kind: "separator" }, { title: "Note revisions", command: "showRevisions", uiIcon: "bx bx-history" } ], selectMenuItemHandler: async ({ command }) => { diff --git a/apps/client/src/widgets/ribbon/components/AttributeEditor.tsx b/apps/client/src/widgets/ribbon/components/AttributeEditor.tsx index 32cae708b..337636265 100644 --- a/apps/client/src/widgets/ribbon/components/AttributeEditor.tsx +++ b/apps/client/src/widgets/ribbon/components/AttributeEditor.tsx @@ -387,7 +387,7 @@ export default function AttributeEditor({ api, note, componentId, notePath, ntxI items: [ { title: t("attribute_editor.add_new_label"), command: "addNewLabel", uiIcon: "bx bx-hash" }, { title: t("attribute_editor.add_new_relation"), command: "addNewRelation", uiIcon: "bx bx-transfer" }, - { title: "----" }, + { kind: "separator" }, { title: t("attribute_editor.add_new_label_definition"), command: "addNewLabelDefinition", uiIcon: "bx bx-empty" }, { title: t("attribute_editor.add_new_relation_definition"), command: "addNewRelationDefinition", uiIcon: "bx bx-empty" } ], diff --git a/apps/client/src/widgets/tab_row.ts b/apps/client/src/widgets/tab_row.ts index cf1367878..1f48de516 100644 --- a/apps/client/src/widgets/tab_row.ts +++ b/apps/client/src/widgets/tab_row.ts @@ -356,11 +356,11 @@ export default class TabRowWidget extends BasicWidget { { title: t("tab_row.close_right_tabs"), command: "closeRightTabs", uiIcon: "bx bx-empty", enabled: appContext.tabManager.noteContexts?.at(-1)?.ntxId !== ntxId }, { title: t("tab_row.close_all_tabs"), command: "closeAllTabs", uiIcon: "bx bx-empty" }, - { title: "----" }, + { kind: "separator" }, { title: t("tab_row.reopen_last_tab"), command: "reopenLastTab", uiIcon: "bx bx-undo", enabled: appContext.tabManager.recentlyClosedTabs.length !== 0 }, - { title: "----" }, + { kind: "separator" }, { title: t("tab_row.move_tab_to_new_window"), command: "moveTabToNewWindow", uiIcon: "bx bx-window-open" }, { title: t("tab_row.copy_tab_to_new_window"), command: "copyTabToNewWindow", uiIcon: "bx bx-empty" }