From ce6597527d46b37dbb4f8806b8ac3ff07aa51464 Mon Sep 17 00:00:00 2001 From: Matthew Lipski Date: Thu, 7 Aug 2025 15:53:42 +0200 Subject: [PATCH] Fixed vanilla blocks returning `true` for `editor.isEditable` on initial render --- packages/react/src/editor/BlockNoteView.tsx | 50 ++++++++++++++------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/packages/react/src/editor/BlockNoteView.tsx b/packages/react/src/editor/BlockNoteView.tsx index a26189fa02..c3955c919c 100644 --- a/packages/react/src/editor/BlockNoteView.tsx +++ b/packages/react/src/editor/BlockNoteView.tsx @@ -202,6 +202,7 @@ function BlockNoteViewComponent< , "onChange" | "onSelectionChange" | "children" > ->(({ className, renderEditor, editorColorScheme, children, ...rest }, ref) => ( -
- {renderEditor ? ( - {children} - ) : ( - children - )} -
-)); +>( + ( + { className, renderEditor, editable, editorColorScheme, children, ...rest }, + ref, + ) => ( +
+ {renderEditor ? ( + + {children} + + ) : ( + children + )} +
+ ), +); // https://fettblog.eu/typescript-react-generic-forward-refs/ export const BlockNoteViewRaw = React.forwardRef(BlockNoteViewComponent) as < @@ -260,7 +269,10 @@ export const BlockNoteViewRaw = React.forwardRef(BlockNoteViewComponent) as < * Renders the contentEditable editor itself (.bn-editor element) and the * default UI elements. */ -export const BlockNoteViewEditor = (props: { children?: ReactNode }) => { +export const BlockNoteViewEditor = (props: { + editable?: boolean; + children?: ReactNode; +}) => { const ctx = useBlockNoteViewContext()!; const editor = useBlockNoteEditor(); @@ -270,9 +282,15 @@ export const BlockNoteViewEditor = (props: { children?: ReactNode }) => { const mount = useCallback( (element: HTMLElement | null) => { + if ( + props.editable !== undefined && + props.editable !== editor.isEditable + ) { + editor.isEditable = props.editable; + } editor.mount(element, portalManager); }, - [editor, portalManager], + [editor, portalManager, props.editable], ); return (