Merge pull request #289 from toeverything/fix/autofocus-board-editor

fix: autofocus when create group in board
This commit is contained in:
zuomeng wang
2022-08-18 16:57:33 +08:00
committed by GitHub

View File

@@ -8,6 +8,7 @@ import {
TDShapeType, TDShapeType,
TransformInfo, TransformInfo,
} from '@toeverything/components/board-types'; } from '@toeverything/components/board-types';
import type { BlockEditor } from '@toeverything/components/editor-core';
import { MIN_PAGE_WIDTH } from '@toeverything/components/editor-core'; import { MIN_PAGE_WIDTH } from '@toeverything/components/editor-core';
import { styled } from '@toeverything/components/ui'; import { styled } from '@toeverything/components/ui';
import type { MouseEvent, SyntheticEvent } from 'react'; import type { MouseEvent, SyntheticEvent } from 'react';
@@ -66,6 +67,7 @@ export class EditorUtil extends TDShapeUtil<T, E> {
Component = TDShapeUtil.Component<T, E, TDMeta>( Component = TDShapeUtil.Component<T, E, TDMeta>(
({ shape, meta: { app }, events, isEditing, onShapeChange }, ref) => { ({ shape, meta: { app }, events, isEditing, onShapeChange }, ref) => {
const containerRef = useRef<HTMLDivElement>(); const containerRef = useRef<HTMLDivElement>();
const editorRef = useRef<BlockEditor>();
const { const {
workspace, workspace,
rootBlockId, rootBlockId,
@@ -135,6 +137,18 @@ export class EditorUtil extends TDShapeUtil<T, E> {
} }
}, [app, state, shape.id, editingText, editingId]); }, [app, state, shape.id, editingText, editingId]);
useEffect(() => {
(async () => {
if (isEditing) {
const lastBlock =
await editorRef.current.getLastBlock();
editorRef.current.selectionManager.activeNodeByNodeId(
lastBlock.id
);
}
})();
}, [isEditing]);
const onMouseDown = useCallback( const onMouseDown = useCallback(
(e: MouseEvent) => { (e: MouseEvent) => {
if (e.detail === 2) { if (e.detail === 2) {
@@ -159,6 +173,7 @@ export class EditorUtil extends TDShapeUtil<T, E> {
rootBlockId={rootBlockId} rootBlockId={rootBlockId}
scrollBlank={false} scrollBlank={false}
isEdgeless isEdgeless
ref={editorRef}
/> />
{editingText ? null : <Mask />} {editingText ? null : <Mask />}
</Container> </Container>