diff --git a/app/assets/icons/ic-copy.svg b/app/assets/icons/ic-copy.svg
index 694626a33..98e2c93e6 100644
--- a/app/assets/icons/ic-copy.svg
+++ b/app/assets/icons/ic-copy.svg
@@ -1,3 +1,3 @@
diff --git a/app/assets/icons/ic-download.svg b/app/assets/icons/ic-download.svg
index 923b753bd..e87e65165 100644
--- a/app/assets/icons/ic-download.svg
+++ b/app/assets/icons/ic-download.svg
@@ -1,3 +1,3 @@
diff --git a/app/assets/javascripts/components/NotesOptions.tsx b/app/assets/javascripts/components/NotesOptions.tsx
index d95548af5..60aada1d6 100644
--- a/app/assets/javascripts/components/NotesOptions.tsx
+++ b/app/assets/javascripts/components/NotesOptions.tsx
@@ -205,6 +205,26 @@ export const NotesOptions = observer(
setTagsMenuOpen(!tagsMenuOpen);
};
+ const downloadSelectedItems = () => {
+ notes.forEach((note) => {
+ const editor = application.componentManager.editorForNote(note);
+ const format = editor?.package_info?.file_type || 'txt';
+ const downloadAnchor = document.createElement('a');
+ downloadAnchor.setAttribute(
+ 'href',
+ 'data:text/plain;charset=utf-8,' + encodeURIComponent(note.text)
+ );
+ downloadAnchor.setAttribute('download', `${note.title}.${format}`);
+ downloadAnchor.click();
+ });
+ };
+
+ const duplicateSelectedItems = () => {
+ notes.forEach((note) => {
+ application.duplicateItem(note);
+ });
+ };
+
return (
<>
)}
+
+
{unarchived && (