diff --git a/src/public/javascripts/widgets/component.js b/src/public/javascripts/widgets/component.js index 83163efc2..45ad72c7e 100644 --- a/src/public/javascripts/widgets/component.js +++ b/src/public/javascripts/widgets/component.js @@ -15,12 +15,16 @@ export default class Component { const fun = this[name + 'Listener']; + let propagateToChildren = true; + if (typeof fun === 'function') { - await fun.call(this, data); + propagateToChildren = await fun.call(this, data) !== false; } - for (const child of this.children) { - child.eventReceived(name, data); + if (propagateToChildren) { + for (const child of this.children) { + child.eventReceived(name, data); + } } } diff --git a/src/public/javascripts/widgets/detail/note_detail_text.js b/src/public/javascripts/widgets/detail/note_detail_text.js index 772bc56a9..c0c9a46af 100644 --- a/src/public/javascripts/widgets/detail/note_detail_text.js +++ b/src/public/javascripts/widgets/detail/note_detail_text.js @@ -130,7 +130,7 @@ class NoteDetailText extends TabAwareWidget { } } - async noteSwitched() { + async refresh() { // lazy loading above can take time and tab might have been already switched to another note if (this.tabContext.note && this.tabContext.note.type === 'text') { this.textEditor.isReadOnly = await this.isReadOnly(); diff --git a/src/public/javascripts/widgets/note_detail.js b/src/public/javascripts/widgets/note_detail.js index 6169cabc6..7c2121a0c 100644 --- a/src/public/javascripts/widgets/note_detail.js +++ b/src/public/javascripts/widgets/note_detail.js @@ -101,9 +101,7 @@ export default class NoteDetailWidget extends TabAwareWidget { this.components[this.type].renderTo(this.$widget); - this.components[this.type].setTabContext(this.tabContext); - - this.components[this.type].eventReceived('tabNoteSwitched', {tabId: this.tabContext.tabId}); + this.components[this.type].eventReceived('setTabContext', {tabContext: this.tabContext}); } getComponentType(disableAutoBook) { diff --git a/src/public/javascripts/widgets/note_paths.js b/src/public/javascripts/widgets/note_paths.js new file mode 100644 index 000000000..6ca12b316 --- /dev/null +++ b/src/public/javascripts/widgets/note_paths.js @@ -0,0 +1,90 @@ +import TabAwareWidget from "./tab_aware_widget.js"; +import treeService from "../services/tree.js"; +import treeUtils from "../services/tree_utils.js"; +import linkService from "../services/link.js"; + +const TPL = ` +