diff --git a/src/public/app/dialogs/info.js b/src/public/app/dialogs/info.js deleted file mode 100644 index 0db595f55..000000000 --- a/src/public/app/dialogs/info.js +++ /dev/null @@ -1,33 +0,0 @@ -import utils from "../services/utils.js"; - -const $dialog = $("#info-dialog"); -const $infoContent = $("#info-dialog-content"); -const $okButton = $("#info-dialog-ok-button"); - -let resolve; -let $originallyFocused; // element focused before the dialog was opened so we can return to it afterwards - -export function info(message) { - $originallyFocused = $(':focus'); - - $infoContent.text(message); - - utils.openDialog($dialog); - - return new Promise((res, rej) => { resolve = res; }); -} - -$dialog.on('shown.bs.modal', () => $okButton.trigger("focus")); - -$dialog.on("hidden.bs.modal", () => { - if (resolve) { - resolve(); - } - - if ($originallyFocused) { - $originallyFocused.trigger('focus'); - $originallyFocused = null; - } -}); - -$okButton.on('click', () => $dialog.modal("hide")); \ No newline at end of file diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index f61157932..523d1bb79 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -71,6 +71,7 @@ import MarkdownImportDialog from "../widgets/dialogs/markdown_import.js"; import ProtectedSessionPasswordDialog from "../widgets/dialogs/protected_session_password.js"; import NoteRevisionsDialog from "../widgets/dialogs/note_revisions.js"; import DeleteNotesDialog from "../widgets/dialogs/delete_notes.js"; +import InfoDialog from "../widgets/dialogs/info.js"; export default class DesktopLayout { constructor(customWidgets) { @@ -216,6 +217,7 @@ export default class DesktopLayout { .child(new MarkdownImportDialog()) .child(new ProtectedSessionPasswordDialog()) .child(new NoteRevisionsDialog()) - .child(new DeleteNotesDialog()); + .child(new DeleteNotesDialog()) + .child(new InfoDialog()); } } diff --git a/src/public/app/widgets/dialog.js b/src/public/app/widgets/dialog.js new file mode 100644 index 000000000..faf70299a --- /dev/null +++ b/src/public/app/widgets/dialog.js @@ -0,0 +1,10 @@ +import appContext from "../services/app_context.js"; + +async function info(message) { + return new Promise(res => + appContext.triggerCommand("showInfoDialog", {message, callback: res})); +} + +export default { + info +}; diff --git a/src/public/app/widgets/dialogs/info.js b/src/public/app/widgets/dialogs/info.js new file mode 100644 index 000000000..e7a0d8978 --- /dev/null +++ b/src/public/app/widgets/dialogs/info.js @@ -0,0 +1,63 @@ +import utils from "../../services/utils.js"; +import BasicWidget from "../basic_widget.js"; + +const TPL = ` +`; + +export default class InfoDialog extends BasicWidget { + constructor() { + super(); + + this.resolve = null; + this.$originallyFocused = null; // element focused before the dialog was opened so we can return to it afterwards + } + + doRender() { + this.$widget = $(TPL); + this.$infoContent = this.$widget.find(".info-dialog-content"); + this.$okButton = this.$widget.find(".info-dialog-ok-button"); + + this.$widget.on('shown.bs.modal', () => this.$okButton.trigger("focus")); + + this.$widget.on("hidden.bs.modal", () => { + if (this.resolve) { + this.resolve(); + } + + if (this.$originallyFocused) { + this.$originallyFocused.trigger('focus'); + this.$originallyFocused = null; + } + }); + + this.$okButton.on('click', () => this.$widget.modal("hide")); + } + + showInfoDialogEvent({message, callback}) { + this.$originallyFocused = $(':focus'); + + this.$infoContent.text(message); + + utils.openDialog(this.$widget); + + this.resolve = callback; + } +} diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index 88104379c..779df212e 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -16,6 +16,7 @@ import protectedSessionService from "../services/protected_session.js"; import syncService from "../services/sync.js"; import options from "../services/options.js"; import protectedSessionHolder from "../services/protected_session_holder.js"; +import dialogService from "./dialog.js"; const TPL = `
@@ -401,9 +402,7 @@ export default class NoteTreeWidget extends NoteContextAwareWidget { (['after', 'before'].includes(data.hitMode) && (node.data.noteId === hoistedNoteService.getHoistedNoteId() || node.getParent().data.noteType === 'search'))) { - const infoDialog = await import('../dialogs/info.js'); - - await infoDialog.info("Dropping notes into this location is not allowed."); + await dialogService.info("Dropping notes into this location is not allowed."); return; } diff --git a/src/public/app/widgets/type_widgets/relation_map.js b/src/public/app/widgets/type_widgets/relation_map.js index c9207107f..e6d0e45bc 100644 --- a/src/public/app/widgets/type_widgets/relation_map.js +++ b/src/public/app/widgets/type_widgets/relation_map.js @@ -8,6 +8,7 @@ import TypeWidget from "./type_widget.js"; import appContext from "../../services/app_context.js"; import utils from "../../services/utils.js"; import froca from "../../services/froca.js"; +import dialogService from "../../widgets/dialog.js"; const uniDirectionalOverlays = [ [ "Arrow", { @@ -509,8 +510,7 @@ export default class RelationMapTypeWidget extends TypeWidget { && rel.name === name); if (relationExists) { - const infoDialog = await import('../../dialogs/info.js'); - await infoDialog.info("Connection '" + name + "' between these notes already exists."); + await dialogService.info(`Connection '${name}' between these notes already exists.`); this.jsPlumbInstance.deleteConnection(connection); diff --git a/src/views/desktop.ejs b/src/views/desktop.ejs index fdae5e2f8..7a95595f9 100644 --- a/src/views/desktop.ejs +++ b/src/views/desktop.ejs @@ -18,7 +18,6 @@ <%- include('dialogs/options.ejs') %> -<%- include('dialogs/info.ejs') %> <%- include('dialogs/prompt.ejs') %> <%- include('dialogs/confirm.ejs') %> diff --git a/src/views/dialogs/info.ejs b/src/views/dialogs/info.ejs deleted file mode 100644 index 47f3172f4..000000000 --- a/src/views/dialogs/info.ejs +++ /dev/null @@ -1,19 +0,0 @@ -