diff --git a/package-lock.json b/package-lock.json index aebe0d41f..7efaa46d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "trilium", - "version": "0.46.3-beta", + "version": "0.46.4-beta", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/public/app/dialogs/delete_notes.js b/src/public/app/dialogs/delete_notes.js new file mode 100644 index 000000000..35eb880f5 --- /dev/null +++ b/src/public/app/dialogs/delete_notes.js @@ -0,0 +1,54 @@ +const $dialog = $("#delete-notes-dialog"); +const $confirmContent = $("#delete-notes-dialog-content"); +const $okButton = $("#delete-notes-dialog-ok-button"); +const $cancelButton = $("#delete-notes-dialog-cancel-button"); +const $custom = $("#delete-notes-dialog-custom"); + +const DELETE_NOTE_BUTTON_ID = "delete-notes-dialog-delete-note"; + +let $originallyFocused; // element focused before the dialog was opened so we can return to it afterwards + +export function showDialog(message) { + $originallyFocused = $(':focus'); + + $custom.hide(); + + glob.activeDialog = $dialog; + + if (typeof message === 'string') { + message = $("
").text(message); + } + + $confirmContent.empty().append(message); + + $dialog.modal(); + + return new Promise((res, rej) => { resolve = res; }); +} + +export function isDeleteNoteChecked() { + return $("#" + DELETE_NOTE_BUTTON_ID + ":checked").length > 0; +} + +$dialog.on('shown.bs.modal', () => $okButton.trigger("focus")); + +$dialog.on("hidden.bs.modal", () => { + if (resolve) { + resolve(false); + } + + if ($originallyFocused) { + $originallyFocused.trigger('focus'); + $originallyFocused = null; + } +}); + +function doResolve(ret) { + resolve(ret); + resolve = null; + + $dialog.modal("hide"); +} + +$cancelButton.on('click', () => doResolve(false)); +$okButton.on('click', () => doResolve(true)); diff --git a/src/public/app/services/branches.js b/src/public/app/services/branches.js index 0ae9c0a96..8f368626b 100644 --- a/src/public/app/services/branches.js +++ b/src/public/app/services/branches.js @@ -74,6 +74,9 @@ async function deleteNotes(branchIdsToDelete) { return false; } + const deleteNotesDialog = await import("../dialogs/delete_notes.js"); + deleteNotesDialog.showDialog(); + const $deleteClonesCheckbox = $('
') .append($('')) .append($('