diff --git a/apps/client/src/widgets/react/ReactBasicWidget.tsx b/apps/client/src/widgets/react/ReactBasicWidget.tsx
index db8a3f1d4..18e9b87ec 100644
--- a/apps/client/src/widgets/react/ReactBasicWidget.tsx
+++ b/apps/client/src/widgets/react/ReactBasicWidget.tsx
@@ -8,14 +8,25 @@ export default abstract class ReactBasicWidget extends BasicWidget {
abstract get component(): JSX.Element;
- doRender() {
- const renderContainer = new DocumentFragment();
- render((
-
- {this.component}
-
- ), renderContainer);
- this.$widget = $(renderContainer.firstChild as HTMLElement);
+ doRender() {
+ this.$widget = renderReactWidget(this, this.component);
}
}
+
+/**
+ * Renders a React component and returns the corresponding DOM element wrapped in JQuery.
+ *
+ * @param parentComponent the parent Trilium component for the component to be able to handle events.
+ * @param el the JSX element to render.
+ * @returns the rendered wrapped DOM element.
+ */
+export function renderReactWidget(parentComponent: Component, el: JSX.Element) {
+ const renderContainer = new DocumentFragment();
+ render((
+
+ {el}
+
+ ), renderContainer);
+ return $(renderContainer.firstChild as HTMLElement);
+}
\ No newline at end of file
diff --git a/apps/client/src/widgets/ribbon_widgets/search_definition.ts b/apps/client/src/widgets/ribbon_widgets/search_definition.ts
index b0f19d3ec..2439b590f 100644
--- a/apps/client/src/widgets/ribbon_widgets/search_definition.ts
+++ b/apps/client/src/widgets/ribbon_widgets/search_definition.ts
@@ -19,6 +19,7 @@ import bulkActionService from "../../services/bulk_action.js";
import { Dropdown } from "bootstrap";
import type FNote from "../../entities/fnote.js";
import type { AttributeType } from "../../entities/fattribute.js";
+import { renderReactWidget } from "../react/ReactBasicWidget.jsx";
const TPL = /*html*/`
@@ -306,7 +307,7 @@ export default class SearchDefinitionWidget extends NoteContextAwareWidget {
const actions = bulkActionService.parseActions(this.note);
const renderedEls = actions
- .map((action) => action.render())
+ .map((action) => renderReactWidget(this, action.doRender()))
.filter((e) => e) as JQuery[];
this.$actionOptions.empty().append(...renderedEls);