diff --git a/src/public/app/widgets/find.js b/src/public/app/widgets/find.js index fd8c793c2..f165c3e5f 100644 --- a/src/public/app/widgets/find.js +++ b/src/public/app/widgets/find.js @@ -142,19 +142,11 @@ export default class FindWidget extends NoteContextAwareWidget { return; } - if (!['text', 'code'].includes(this.note.type) || !this.$findBox.is(":hidden")) { + if (!['text', 'code', 'render'].includes(this.note.type) || !this.$findBox.is(":hidden")) { return; } - const readOnly = await this.noteContext.isReadOnly(); - - if (readOnly) { - this.handler = this.htmlHandler; - } else { - this.handler = this.note.type === "code" - ? this.codeHandler - : this.textHandler; - } + this.handler = await this.getHandler(); this.$findBox.show(); this.$input.focus(); @@ -173,6 +165,22 @@ export default class FindWidget extends NoteContextAwareWidget { } } + async getHandler() { + if (this.note.type === 'render') { + return this.htmlHandler; + } + + const readOnly = await this.noteContext.isReadOnly(); + + if (readOnly) { + return this.htmlHandler; + } else { + return this.note.type === "code" + ? this.codeHandler + : this.textHandler; + } + } + startSearch() { // XXX This should clear the previous search immediately in all cases // (the search is stale when waitforenter but also while the @@ -250,6 +258,6 @@ export default class FindWidget extends NoteContextAwareWidget { } isEnabled() { - return super.isEnabled() && ['text', 'code'].includes(this.note.type); + return super.isEnabled() && ['text', 'code', 'render'].includes(this.note.type); } } diff --git a/src/public/app/widgets/type_widgets/render.js b/src/public/app/widgets/type_widgets/render.js index 0a6224891..46784db37 100644 --- a/src/public/app/widgets/type_widgets/render.js +++ b/src/public/app/widgets/type_widgets/render.js @@ -3,13 +3,19 @@ import TypeWidget from "./type_widget.js"; const TPL = `
+ +

This help note is shown because this note of type Render HTML doesn't have required relation to function properly.

Render HTML note type is used for scripting. In short, you have a HTML code note (optionally with some JavaScript) and this note will render it. To make it work, you need to define a relation called "renderNote" pointing to the HTML note to render.

-
+
`; export default class RenderTypeWidget extends TypeWidget { @@ -43,4 +49,14 @@ export default class RenderTypeWidget extends TypeWidget { this.refresh(); } } + + async executeWithContentElementEvent({resolve, ntxId}) { + if (!this.isNoteContext(ntxId)) { + return; + } + + await this.initialized; + + resolve(this.$noteDetailRenderContent); + } }