feat: add duplicate snippet functionality in SnippetManager and UI

This commit is contained in:
2025-01-25 19:21:02 +02:00
parent a04fd74b11
commit 52543943bc
3 changed files with 38 additions and 0 deletions

View File

@@ -157,6 +157,21 @@ export class SnippetManager {
}
}
duplicateSnippet(id) {
const snippet = this.snippets.find(s => s.id === id);
if (!snippet) return;
const newSnippet = {
...snippet,
id: 'snippet-' + Date.now(),
name: snippet.name + ' (Copy)'
};
this.snippets.push(newSnippet);
this.saveSnippetsAndUpdateUI();
this.loadSnippet(newSnippet.id);
}
saveSnippetsAndUpdateUI() {
this.storageManager.saveSnippets(this.snippets);
this.updateUI();

View File

@@ -61,6 +61,11 @@ export class UIManager {
this.snippetManager.deleteSnippet(snippet.id);
}));
buttonsDiv.appendChild(this.createButton('📄', 'duplicate-snippet', (e) => {
e.stopPropagation();
this.snippetManager.duplicateSnippet(snippet.id);
}));
div.appendChild(buttonsDiv);
container.appendChild(div);
});

View File

@@ -250,3 +250,21 @@
.snippet-item:hover .edit-snippet {
opacity: 0.8;
}
.duplicate-snippet {
opacity: 0.4;
font-size: 14px;
padding: 2px 4px;
background: none;
border: none;
cursor: pointer;
min-width: 24px;
}
.duplicate-snippet:hover {
opacity: 1;
}
.snippet-item:hover .duplicate-snippet {
opacity: 0.8;
}