mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
fix: editor cursor not in view after smart editing (#1043)
This commit is contained in:
@ -3,6 +3,7 @@ import "../../less/editor.less";
|
|||||||
|
|
||||||
export interface EditorRefActions {
|
export interface EditorRefActions {
|
||||||
focus: FunctionType;
|
focus: FunctionType;
|
||||||
|
scrollToCursor: FunctionType;
|
||||||
insertText: (text: string, prefix?: string, suffix?: string) => void;
|
insertText: (text: string, prefix?: string, suffix?: string) => void;
|
||||||
removeText: (start: number, length: number) => void;
|
removeText: (start: number, length: number) => void;
|
||||||
setContent: (text: string) => void;
|
setContent: (text: string) => void;
|
||||||
@ -52,6 +53,10 @@ const Editor = forwardRef(function Editor(props: Props, ref: React.ForwardedRef<
|
|||||||
focus: () => {
|
focus: () => {
|
||||||
editorRef.current?.focus();
|
editorRef.current?.focus();
|
||||||
},
|
},
|
||||||
|
scrollToCursor: () => {
|
||||||
|
editorRef.current?.blur();
|
||||||
|
editorRef.current?.focus();
|
||||||
|
},
|
||||||
insertText: (content = "", prefix = "", suffix = "") => {
|
insertText: (content = "", prefix = "", suffix = "") => {
|
||||||
if (!editorRef.current) {
|
if (!editorRef.current) {
|
||||||
return;
|
return;
|
||||||
|
@ -402,6 +402,7 @@ const MemoEditor = () => {
|
|||||||
} else {
|
} else {
|
||||||
editorRef.current?.insertText("", "\n- [ ] ");
|
editorRef.current?.insertText("", "\n- [ ] ");
|
||||||
}
|
}
|
||||||
|
editorRef.current?.scrollToCursor();
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleCodeBlockBtnClick = () => {
|
const handleCodeBlockBtnClick = () => {
|
||||||
@ -416,6 +417,7 @@ const MemoEditor = () => {
|
|||||||
} else {
|
} else {
|
||||||
editorRef.current?.insertText("", "\n```\n", "\n```");
|
editorRef.current?.insertText("", "\n```\n", "\n```");
|
||||||
}
|
}
|
||||||
|
editorRef.current?.scrollToCursor();
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleUploadFileBtnClick = () => {
|
const handleUploadFileBtnClick = () => {
|
||||||
@ -438,7 +440,7 @@ const MemoEditor = () => {
|
|||||||
const handleTagSelectorClick = useCallback((event: React.MouseEvent) => {
|
const handleTagSelectorClick = useCallback((event: React.MouseEvent) => {
|
||||||
if (tagSelectorRef.current !== event.target && tagSelectorRef.current?.contains(event.target as Node)) {
|
if (tagSelectorRef.current !== event.target && tagSelectorRef.current?.contains(event.target as Node)) {
|
||||||
editorRef.current?.insertText(`#${(event.target as HTMLElement).textContent} ` ?? "");
|
editorRef.current?.insertText(`#${(event.target as HTMLElement).textContent} ` ?? "");
|
||||||
handleEditorFocus();
|
editorRef.current?.scrollToCursor();
|
||||||
}
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@ -481,7 +483,10 @@ const MemoEditor = () => {
|
|||||||
<div
|
<div
|
||||||
className={`memo-editor-container ${isEditing ? "edit-ing" : ""} ${state.fullscreen ? "fullscreen" : ""}`}
|
className={`memo-editor-container ${isEditing ? "edit-ing" : ""} ${state.fullscreen ? "fullscreen" : ""}`}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
onKeyDown={handleKeyDown}
|
onKeyDown={(e) => {
|
||||||
|
handleKeyDown(e);
|
||||||
|
editorRef.current?.scrollToCursor();
|
||||||
|
}}
|
||||||
onDrop={handleDropEvent}
|
onDrop={handleDropEvent}
|
||||||
onFocus={handleEditorFocus}
|
onFocus={handleEditorFocus}
|
||||||
onBlur={handleEditorBlur}
|
onBlur={handleEditorBlur}
|
||||||
|
Reference in New Issue
Block a user