diff --git a/src/NodeList.tsx b/src/NodeList.tsx index 525bfd47..2c042028 100644 --- a/src/NodeList.tsx +++ b/src/NodeList.tsx @@ -169,6 +169,7 @@ const NodeList = React.forwardRef>((props, ref) // =============================== Ref ================================ const listRef = React.useRef(null); const indentMeasurerRef = React.useRef(null); + const inputRef = React.useRef(null); React.useImperativeHandle(ref, () => ({ scrollTo: scroll => { listRef.current.scrollTo(scroll); @@ -252,6 +253,12 @@ const NodeList = React.forwardRef>((props, ref) } }, [dragging]); + React.useEffect(() => { + if (focused && inputRef.current) { + inputRef.current.focus(); + } + }, [focused]); + const mergedData = motion ? transitionData : data; const treeNodeRequiredProps = { @@ -281,6 +288,7 @@ const NodeList = React.forwardRef>((props, ref) tabIndex={focusable !== false ? tabIndex : null} onKeyDown={onKeyDown} onFocus={onFocus} + ref={inputRef} onBlur={onBlur} value="" onChange={noop} @@ -357,9 +365,6 @@ const NodeList = React.forwardRef>((props, ref) onMotionStart={onListChangeStart} onMotionEnd={onMotionEnd} treeNodeRequiredProps={treeNodeRequiredProps} - onMouseMove={() => { - onActiveChange(null); - }} /> ); }} diff --git a/src/Tree.tsx b/src/Tree.tsx index c51dff53..abae0fd5 100644 --- a/src/Tree.tsx +++ b/src/Tree.tsx @@ -857,7 +857,8 @@ class Tree extends Rea }) .filter(node => node); - this.setUncontrolledState({ selectedKeys }); + this.setUncontrolledState({ selectedKeys, focused: true }); + this.onActiveChange(key) onSelect?.(selectedKeys, { event: 'select', @@ -940,12 +941,14 @@ class Tree extends Rea this.setUncontrolledState( { checkedKeys, + focused: true, }, false, { halfCheckedKeys, }, ); + this.onActiveChange(key) } onCheck?.(checkedObj, eventObj as CheckInfo);