`, command: "duplicateSubtree", uiIcon: "bx bx-outline", enabled: parentNotSearch && isNotRoot && !isHoisted && notOptions },
+
+ { title: "----" },
+
+ { title: `${t("tree-context-menu.expand-subtree")} `, command: "expandSubtree", uiIcon: "bx bx-expand", enabled: noSelectedNotes },
+ { title: `${t("tree-context-menu.collapse-subtree")} `, command: "collapseSubtree", uiIcon: "bx bx-collapse", enabled: noSelectedNotes },
+ { title: `${t("tree-context-menu.sort-by")} `, command: "sortChildNotes", uiIcon: "bx bx-sort-down", enabled: noSelectedNotes && notSearch },
+
+ { title: "----" },
+
+ { title: t("tree-context-menu.copy-note-path-to-clipboard"), command: "copyNotePathToClipboard", uiIcon: "bx bx-directions", enabled: true },
+ { title: t("tree-context-menu.recent-changes-in-subtree"), command: "recentChangesInSubtree", uiIcon: "bx bx-history", enabled: noSelectedNotes && notOptions },
+ ] },
+
+
+ { title: "----" },
+
+
{ title: `${t("tree-context-menu.cut")} `, command: "cutNotesToClipboard", uiIcon: "bx bx-cut",
enabled: isNotRoot && !isHoisted && parentNotSearch },
- { title: `${t("tree-context-menu.move-to")} `, command: "moveNotesTo", uiIcon: "bx bx-empty",
- enabled: isNotRoot && !isHoisted && parentNotSearch },
+
+ { title: `${t("tree-context-menu.copy-clone")} `, command: "copyNotesToClipboard", uiIcon: "bx bx-copy",
+ enabled: isNotRoot && !isHoisted },
+
{ title: `${t("tree-context-menu.paste-into")} `, command: "pasteNotesFromClipboard", uiIcon: "bx bx-paste",
enabled: !clipboard.isClipboardEmpty() && notSearch && noSelectedNotes },
+
{ title: t("tree-context-menu.paste-after"), command: "pasteNotesAfterFromClipboard", uiIcon: "bx bx-paste",
enabled: !clipboard.isClipboardEmpty() && isNotRoot && !isHoisted && parentNotSearch && noSelectedNotes },
- { title: `${t("tree-context-menu.duplicate-subtree")} `, command: "duplicateSubtree", uiIcon: "bx bx-empty",
- enabled: parentNotSearch && isNotRoot && !isHoisted && notOptions },
+
+ { title: `${t("tree-context-menu.move-to")} `, command: "moveNotesTo", uiIcon: "bx bx-transfer",
+ enabled: isNotRoot && !isHoisted && parentNotSearch },
+
+ { title: `${t("tree-context-menu.clone-to")} `, command: "cloneNotesTo", uiIcon: "bx bx-duplicate",
+ enabled: isNotRoot && !isHoisted },
+
+ { title: `${t("tree-context-menu.delete")} `, command: "deleteNotes", uiIcon: "bx bx-trash destructive-action-icon",
+ enabled: isNotRoot && !isHoisted && parentNotSearch && notOptions },
+
{ title: "----" },
- { title: t("tree-context-menu.export"), command: "exportNote", uiIcon: "bx bx-empty",
+
+ { title: t("tree-context-menu.import-into-note"), command: "importIntoNote", uiIcon: "bx bx-import",
enabled: notSearch && noSelectedNotes && notOptions },
- { title: t("tree-context-menu.import-into-note"), command: "importIntoNote", uiIcon: "bx bx-empty",
+
+ { title: t("tree-context-menu.export"), command: "exportNote", uiIcon: "bx bx-export",
enabled: notSearch && noSelectedNotes && notOptions },
- { title: t("tree-context-menu.apply-bulk-actions"), command: "openBulkActionsDialog", uiIcon: "bx bx-list-plus",
- enabled: true }
+
+
+ { title: "----" },
+
+
+ { title: `${t("tree-context-menu.search-in-subtree")} `, command: "searchInSubtree", uiIcon: "bx bx-search",
+ enabled: notSearch && noSelectedNotes },
+
].filter(row => row !== null);
}
diff --git a/src/public/app/widgets/buttons/attachments_actions.js b/src/public/app/widgets/buttons/attachments_actions.js
index 1580753c0..b4a15daba 100644
--- a/src/public/app/widgets/buttons/attachments_actions.js
+++ b/src/public/app/widgets/buttons/attachments_actions.js
@@ -39,22 +39,39 @@ const TPL = `
style="position: relative; top: 3px;">
@@ -96,14 +113,14 @@ export default class AttachmentActionsWidget extends BasicWidget {
const $openAttachmentButton = this.$widget.find("[data-trigger-command='openAttachment']");
$openAttachmentButton
.addClass("disabled")
- .append($(' (?)')
+ .append($('')
.attr("title", t('attachments_actions.open_externally_detail_page'))
);
if (isElectron) {
const $openAttachmentCustomButton = this.$widget.find("[data-trigger-command='openAttachmentCustom']");
$openAttachmentCustomButton
.addClass("disabled")
- .append($(' (?)')
+ .append($('')
.attr("title", t('attachments_actions.open_externally_detail_page'))
);
}
@@ -112,7 +129,7 @@ export default class AttachmentActionsWidget extends BasicWidget {
const $openAttachmentCustomButton = this.$widget.find("[data-trigger-command='openAttachmentCustom']");
$openAttachmentCustomButton
.addClass("disabled")
- .append($(' (?)')
+ .append($('')
.attr("title", t('attachments_actions.open_custom_client_only'))
);
}
diff --git a/src/public/app/widgets/buttons/global_menu.js b/src/public/app/widgets/buttons/global_menu.js
index d760ecd5c..597d82ac4 100644
--- a/src/public/app/widgets/buttons/global_menu.js
+++ b/src/public/app/widgets/buttons/global_menu.js
@@ -100,6 +100,8 @@ const TPL = `
position: relative;
left: 0;
top: 5px;
+ --dropdown-shadow-opacity: 0;
+ --submenu-opening-delay: 0;
}
@@ -125,27 +127,17 @@ const TPL = `
-
-
- ${t('global_menu.show_hidden_subtree')}
-
+
+
+ ${t('global_menu.options')}
+
+
+
+
${t('global_menu.show_help')}
@@ -241,6 +252,8 @@ const TPL = `
+
+
${t('global_menu.logout')}
diff --git a/src/public/app/widgets/buttons/note_actions.js b/src/public/app/widgets/buttons/note_actions.js
index 7cb0c8c50..e1ae64b38 100644
--- a/src/public/app/widgets/buttons/note_actions.js
+++ b/src/public/app/widgets/buttons/note_actions.js
@@ -42,32 +42,60 @@ const TPL = `
${t('note_actions.convert_into_attachment')}
+
${t('note_actions.re_render_note')}
+
${t('note_actions.search_in_note')}
-
- ${t('note_actions.note_source')}
-
-
- ${t('note_actions.note_attachments')}
-
+
+
+ ${t('note_actions.print_note')}
+
+
+
+
+
+ ${t('note_actions.import_files')}
+
+ ${t('note_actions.export_note')}
+
+
+
+
+
+
- ${t('note_actions.open_note_externally')}
+ ${t('note_actions.open_note_externally')}
+
${t('note_actions.open_note_custom')}
- ${t('note_actions.import_files')}
- ${t('note_actions.export_note')}
- ${t('note_actions.delete_note')}
-
- ${t('note_actions.print_note')}
+
+
+ ${t('note_actions.note_source')}
+
+
+
+
+
+
${t('note_actions.save_revision')}
+
+ ${t('note_actions.delete_note')}
+
+
+
+
+
+
+ ${t('note_actions.note_attachments')}
+
`;
diff --git a/src/public/app/widgets/dialogs/revisions.js b/src/public/app/widgets/dialogs/revisions.js
index 818b4c781..97c3e0315 100644
--- a/src/public/app/widgets/dialogs/revisions.js
+++ b/src/public/app/widgets/dialogs/revisions.js
@@ -54,7 +54,7 @@ const TPL = `
data-bs-toggle="dropdown" data-bs-display="static">
-
+
diff --git a/src/public/app/widgets/tab_row.js b/src/public/app/widgets/tab_row.js
index ccf49569b..d1cf62afb 100644
--- a/src/public/app/widgets/tab_row.js
+++ b/src/public/app/widgets/tab_row.js
@@ -259,12 +259,14 @@ export default class TabRowWidget extends BasicWidget {
x: e.pageX,
y: e.pageY,
items: [
- {title: t('tab_row.close'), command: "closeTab", uiIcon: "bx bx-x"},
+ {title: t('tab_row.close'), command: "closeTab", uiIcon: "bx bxs-x-circle"},
{title: t('tab_row.close_other_tabs'), command: "closeOtherTabs", uiIcon: "bx bx-empty", enabled: appContext.tabManager.noteContexts.length !== 1},
{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: "----" },
- {title: t('tab_row.move_tab_to_new_window'), command: "moveTabToNewWindow", uiIcon: "bx bx-window-open"}
+
+ {title: "----"},
+
+ {title: t('tab_row.move_tab_to_new_window'), command: "moveTabToNewWindow", uiIcon: "bx bx-window-open"},
],
selectMenuItemHandler: ({command}) => {
this.triggerCommand(command, {ntxId});
diff --git a/src/public/stylesheets/style.css b/src/public/stylesheets/style.css
index bdcd6a7d8..c9b3d4f73 100644
--- a/src/public/stylesheets/style.css
+++ b/src/public/stylesheets/style.css
@@ -19,6 +19,10 @@
--bs-table-bg: transparent !important;
}
+:root {
+ --submenu-opening-delay: 300ms;
+}
+
html {
/* this fixes FF filter vs. position fixed bug: https://github.com/zadam/trilium/issues/233 */
height: 100%;
@@ -229,7 +233,15 @@ div.ui-tooltip {
}
.dropdown-divider {
- background-color: var(--menu-text-color);
+ border-color: var(--dropdown-border-color);
+}
+
+@keyframes dropdown-menu-opening {
+ from {
+ opacity: 0;
+ } to {
+ opacity: 1;
+ }
}
.dropdown-menu {
@@ -237,6 +249,26 @@ div.ui-tooltip {
color: var(--menu-text-color) !important;
background-color: var(--menu-background-color) !important;
font-size: inherit;
+ box-shadow: 0px 10px 20px rgba(0, 0, 0, var(--dropdown-shadow-opacity));
+ animation: dropdown-menu-opening 100ms ease-in;
+}
+
+@supports(animation-fill-mode: forwards) {
+ /* Delay the opening of submenus */
+ .dropdown-submenu .dropdown-menu {
+ opacity: 0;
+ animation-fill-mode: forwards;
+ animation-delay: var(--submenu-opening-delay);
+ }
+}
+
+.dropdown-menu.static {
+ box-shadow: unset;
+}
+
+.dropend .dropdown-toggle::after {
+ margin-left: .5em;
+ color: var(--muted-text-color);
}
.dropdown-menu .disabled {
@@ -246,8 +278,15 @@ div.ui-tooltip {
.dropdown-menu .disabled .disabled-tooltip {
pointer-events: all;
- color: var(--menu-text-color);
+ margin-left: 8px;
+ font-size: .5em;
+ color: var(--disabled-tooltip-icon-color);
cursor: help;
+ opacity: .75;
+}
+
+.dropdown-menu .disabled .disabled-tooltip:hover {
+ opacity: 1;
}
.dropdown-menu a:hover:not(.disabled), .dropdown-item:hover:not(.disabled) {
@@ -288,6 +327,10 @@ div.ui-tooltip {
outline: none;
}
+.dropdown-item .destructive-action-icon {
+ color: var(--dropdown-item-icon-destructive-color);
+}
+
.CodeMirror {
height: 100%;
background: inherit;
@@ -1241,4 +1284,5 @@ textarea {
.empty-table-placeholder {
text-align: center;
color: var(--muted-text-color);
-}
\ No newline at end of file
+}
+
diff --git a/src/public/stylesheets/theme-dark.css b/src/public/stylesheets/theme-dark.css
index 6546b43f4..9f1b8a912 100644
--- a/src/public/stylesheets/theme-dark.css
+++ b/src/public/stylesheets/theme-dark.css
@@ -17,6 +17,10 @@
--main-text-color: #ccc;
--main-border-color: #aaa;
--dropdown-border-color: #555;
+ --dropdown-shadow-opacity: .4;
+ --dropdown-item-icon-destructive-color: #de6e5b;
+ --disabled-tooltip-icon-color: #7fd2ef;
+
--accented-background-color: #555;
--more-accented-background-color: #777;
diff --git a/src/public/stylesheets/theme-light.css b/src/public/stylesheets/theme-light.css
index 82e4477b2..4a161c24a 100644
--- a/src/public/stylesheets/theme-light.css
+++ b/src/public/stylesheets/theme-light.css
@@ -21,6 +21,9 @@ html {
--main-text-color: black;
--main-border-color: #ccc;
--dropdown-border-color: #ccc;
+ --dropdown-shadow-opacity: .2;
+ --dropdown-item-icon-destructive-color: #ec5138;
+ --disabled-tooltip-icon-color: #004382;
--accented-background-color: #f5f5f5;
--more-accented-background-color: #ddd;