feat(render): integrate with search

This commit is contained in:
Elian Doran
2025-09-21 22:58:58 +03:00
parent b990770e48
commit 763c489cd3
3 changed files with 14 additions and 48 deletions

View File

@@ -45,7 +45,7 @@ function RevisionsButton({ note }: { note: FNote }) {
function NoteContextMenu({ note, noteContext }: { note: FNote, noteContext?: NoteContext }) {
const parentComponent = useContext(ParentComponent);
const canBeConvertedToAttachment = note?.isEligibleForConversionToAttachment();
const isSearchable = ["text", "code", "book", "mindMap", "doc"].includes(note.type);
const isSearchable = ["text", "code", "book", "mindMap", "doc", "render"].includes(note.type);
const isInOptions = note.noteId.startsWith("_options");
const isPrintable = ["text", "code"].includes(note.type);
const isElectron = getIsElectron();

View File

@@ -18,15 +18,25 @@ export default function Render({ note, noteContext, ntxId }: TypeWidgetProps) {
}
useEffect(refresh, [ note ]);
// Keyboard shortcut.
useTriliumEvent("renderActiveNote", () => {
if (noteContext?.isActive()) return;
refresh();
});
// Refresh on floating buttons.
useTriliumEvent("refreshData", ({ ntxId: eventNtxId }) => {
if (eventNtxId !== ntxId) return;
refresh();
});
// Integration with search.
useTriliumEvent("executeWithContentElement", ({ resolve, ntxId: eventNtxId }) => {
if (eventNtxId !== ntxId) return;
resolve(refToJQuerySelector(contentRef));
});
return (
<div className="note-detail-render note-detail-printable">
{!renderNotesFound && (

View File

@@ -1,44 +0,0 @@
import renderService from "../../services/render.js";
import TypeWidget from "./type_widget.js";
import type FNote from "../../entities/fnote.js";
import type { EventData } from "../../components/app_context.js";
export default class RenderTypeWidget extends TypeWidget {
private $noteDetailRenderHelp!: JQuery<HTMLElement>;
private $noteDetailRenderContent!: JQuery<HTMLElement>;
static getType() {
return "render";
}
doRender() {
this.$widget = $(TPL);
this.$noteDetailRenderHelp = this.$widget.find(".note-detail-render-help");
this.$noteDetailRenderContent = this.$widget.find(".note-detail-render-content");
super.doRender();
}
async doRefresh(note: FNote) {
this.$widget.show();
this.$noteDetailRenderHelp.hide();
const renderNotesFound = await renderService.render(note, this.$noteDetailRenderContent);
}
cleanup() {
this.$noteDetailRenderContent.empty();
}
async executeWithContentElementEvent({ resolve, ntxId }: EventData<"executeWithContentElement">) {
if (!this.isNoteContext(ntxId)) {
return;
}
await this.initialized;
resolve(this.$noteDetailRenderContent);
}
}