Skip to content

Commit bd1e6c2

Browse files
fix: Vanilla blocks return true for editor.isEditable on initial render (#1925)
1 parent 35f620e commit bd1e6c2

File tree

1 file changed

+34
-16
lines changed

1 file changed

+34
-16
lines changed

packages/react/src/editor/BlockNoteView.tsx

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ function BlockNoteViewComponent<
202202
<BlockNoteViewContainer
203203
className={className}
204204
renderEditor={renderEditor}
205+
editable={editable}
205206
editorColorScheme={editorColorScheme}
206207
ref={ref}
207208
{...rest}
@@ -221,26 +222,34 @@ const BlockNoteViewContainer = React.forwardRef<
221222
HTMLDivElement,
222223
{
223224
renderEditor: boolean;
225+
editable?: boolean;
224226
editorColorScheme: "light" | "dark";
225227
children: ReactNode;
226228
} & Omit<
227229
HTMLAttributes<HTMLDivElement>,
228230
"onChange" | "onSelectionChange" | "children"
229231
>
230-
>(({ className, renderEditor, editorColorScheme, children, ...rest }, ref) => (
231-
<div
232-
className={mergeCSSClasses("bn-container", editorColorScheme, className)}
233-
data-color-scheme={editorColorScheme}
234-
{...rest}
235-
ref={ref}
236-
>
237-
{renderEditor ? (
238-
<BlockNoteViewEditor>{children}</BlockNoteViewEditor>
239-
) : (
240-
children
241-
)}
242-
</div>
243-
));
232+
>(
233+
(
234+
{ className, renderEditor, editable, editorColorScheme, children, ...rest },
235+
ref,
236+
) => (
237+
<div
238+
className={mergeCSSClasses("bn-container", editorColorScheme, className)}
239+
data-color-scheme={editorColorScheme}
240+
{...rest}
241+
ref={ref}
242+
>
243+
{renderEditor ? (
244+
<BlockNoteViewEditor editable={editable}>
245+
{children}
246+
</BlockNoteViewEditor>
247+
) : (
248+
children
249+
)}
250+
</div>
251+
),
252+
);
244253

245254
// https://fettblog.eu/typescript-react-generic-forward-refs/
246255
export const BlockNoteViewRaw = React.forwardRef(BlockNoteViewComponent) as <
@@ -260,7 +269,10 @@ export const BlockNoteViewRaw = React.forwardRef(BlockNoteViewComponent) as <
260269
* Renders the contentEditable editor itself (.bn-editor element) and the
261270
* default UI elements.
262271
*/
263-
export const BlockNoteViewEditor = (props: { children?: ReactNode }) => {
272+
export const BlockNoteViewEditor = (props: {
273+
editable?: boolean;
274+
children?: ReactNode;
275+
}) => {
264276
const ctx = useBlockNoteViewContext()!;
265277
const editor = useBlockNoteEditor();
266278

@@ -270,9 +282,15 @@ export const BlockNoteViewEditor = (props: { children?: ReactNode }) => {
270282

271283
const mount = useCallback(
272284
(element: HTMLElement | null) => {
285+
if (
286+
props.editable !== undefined &&
287+
props.editable !== editor.isEditable
288+
) {
289+
editor.isEditable = props.editable;
290+
}
273291
editor.mount(element, portalManager);
274292
},
275-
[editor, portalManager],
293+
[editor, portalManager, props.editable],
276294
);
277295

278296
return (

0 commit comments

Comments
 (0)