From c49b90d33f2152620bd52bb37ca6d9181c2fa033 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sat, 20 Sep 2025 13:15:13 +0300 Subject: [PATCH] chore(react/type_widget): add preview buttons --- .../client/src/widgets/react/ActionButton.tsx | 2 +- .../type_widgets/helpers/SplitEditor.tsx | 22 ++++++++++++++---- .../type_widgets/helpers/SvgSplitEditor.tsx | 23 ++++++++++++++++--- .../abstract_svg_split_type_widget.ts | 8 ------- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/apps/client/src/widgets/react/ActionButton.tsx b/apps/client/src/widgets/react/ActionButton.tsx index 2eb69bab8..e9753a7e2 100644 --- a/apps/client/src/widgets/react/ActionButton.tsx +++ b/apps/client/src/widgets/react/ActionButton.tsx @@ -5,7 +5,7 @@ import keyboard_actions from "../../services/keyboard_actions"; export interface ActionButtonProps { text: string; - titlePosition?: "bottom" | "left"; + titlePosition?: "top" | "right" | "bottom" | "left"; icon: string; className?: string; onClick?: (e: MouseEvent) => void; diff --git a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx index 8910da9a1..74f954531 100644 --- a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx +++ b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.tsx @@ -6,11 +6,14 @@ import { TypeWidgetProps } from "../type_widget"; import "./SplitEditor.css"; import Split from "split.js"; import { DEFAULT_GUTTER_SIZE } from "../../../services/resizer"; -import { CodeEditor, EditableCode } from "../code/Code"; +import { EditableCode } from "../code/Code"; +import { ComponentChildren } from "preact"; +import ActionButton, { ActionButtonProps } from "../../react/ActionButton"; -interface SplitEditorProps extends TypeWidgetProps { +export interface SplitEditorProps extends TypeWidgetProps { error?: string | null; splitOptions?: Split.Options; + previewButtons?: ComponentChildren; } /** @@ -22,7 +25,7 @@ interface SplitEditorProps extends TypeWidgetProps { * - Can display errors to the user via {@link setError}. * - Horizontal or vertical orientation for the editor/preview split, adjustable via the switch split orientation button floating button. */ -export default function SplitEditor({ note, error, splitOptions, ...editorProps }: SplitEditorProps) { +export default function SplitEditor({ note, error, splitOptions, previewButtons, ...editorProps }: SplitEditorProps) { const splitEditorOrientation = useSplitOrientation(); const [ readOnly ] = useNoteLabelBoolean(note, "readOnly"); const containerRef = useRef(null); @@ -46,7 +49,9 @@ export default function SplitEditor({ note, error, splitOptions, ...editorProps const preview = (
Preview goes here
-
Buttons go here
+
+ {previewButtons} +
); @@ -72,6 +77,15 @@ export default function SplitEditor({ note, error, splitOptions, ...editorProps ) } +export function PreviewButton(props: Omit) { + return +} + function useSplitOrientation() { const [ splitEditorOrientation ] = useTriliumOption("splitEditorOrientation"); if (isMobile()) return "vertical"; diff --git a/apps/client/src/widgets/type_widgets/helpers/SvgSplitEditor.tsx b/apps/client/src/widgets/type_widgets/helpers/SvgSplitEditor.tsx index 88fb36704..a1362313a 100644 --- a/apps/client/src/widgets/type_widgets/helpers/SvgSplitEditor.tsx +++ b/apps/client/src/widgets/type_widgets/helpers/SvgSplitEditor.tsx @@ -1,10 +1,27 @@ -import { TypeWidgetProps } from "../type_widget"; -import SplitEditor from "./SplitEditor"; +import { t } from "../../../services/i18n"; +import SplitEditor, { PreviewButton, SplitEditorProps } from "./SplitEditor"; -export default function SvgSplitEditor(props: TypeWidgetProps) { +export default function SvgSplitEditor(props: SplitEditorProps) { return ( + {}} + /> + + + + } {...props} /> ) diff --git a/apps/client/src/widgets/type_widgets_old/abstract_svg_split_type_widget.ts b/apps/client/src/widgets/type_widgets_old/abstract_svg_split_type_widget.ts index bd9f826e9..c0ff909f5 100644 --- a/apps/client/src/widgets/type_widgets_old/abstract_svg_split_type_widget.ts +++ b/apps/client/src/widgets/type_widgets_old/abstract_svg_split_type_widget.ts @@ -186,19 +186,11 @@ export default abstract class AbstractSvgSplitTypeWidget extends AbstractSplitTy buildPreviewButtons(): OnClickButtonWidget[] { return [ new OnClickButtonWidget() - .icon("bx-zoom-in") - .title(t("relation_map_buttons.zoom_in_title")) - .titlePlacement("top") .onClick(() => this.zoomInstance?.zoomIn()) , new OnClickButtonWidget() - .icon("bx-zoom-out") - .title(t("relation_map_buttons.zoom_out_title")) .titlePlacement("top") .onClick(() => this.zoomInstance?.zoomOut()) , new OnClickButtonWidget() - .icon("bx-crop") - .title(t("relation_map_buttons.reset_pan_zoom_title")) - .titlePlacement("top") .onClick(() => this.zoomHandler()) ]; }