From 3caa7e5566d378a54721f4685834a2f8f671d38e Mon Sep 17 00:00:00 2001 From: zhouyun1 Date: Tue, 26 Dec 2023 20:25:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(tree):=20=E9=98=BB=E6=AD=A2=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=A1=86=E6=8B=96=E6=8B=BD=E9=BB=98=E8=AE=A4=E8=A1=8C?= =?UTF-8?q?=E4=B8=BA=20(#2697)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/gorgeous-timers-hang.md | 5 +++++ .changeset/real-points-jump.md | 5 +++++ packages/ui/tree/src/use-tree-action.tsx | 3 +++ 3 files changed, 13 insertions(+) create mode 100644 .changeset/gorgeous-timers-hang.md create mode 100644 .changeset/real-points-jump.md diff --git a/.changeset/gorgeous-timers-hang.md b/.changeset/gorgeous-timers-hang.md new file mode 100644 index 000000000..cd02eb249 --- /dev/null +++ b/.changeset/gorgeous-timers-hang.md @@ -0,0 +1,5 @@ +--- +"@hi-ui/hiui": patch +--- + +fix(tree): 修复编辑框内容无法选中问题 diff --git a/.changeset/real-points-jump.md b/.changeset/real-points-jump.md new file mode 100644 index 000000000..1fcb782a9 --- /dev/null +++ b/.changeset/real-points-jump.md @@ -0,0 +1,5 @@ +--- +"@hi-ui/tree": patch +--- + +fix: 修复编辑框内容无法选中问题 diff --git a/packages/ui/tree/src/use-tree-action.tsx b/packages/ui/tree/src/use-tree-action.tsx index f9729a409..c23abae67 100644 --- a/packages/ui/tree/src/use-tree-action.tsx +++ b/packages/ui/tree/src/use-tree-action.tsx @@ -431,6 +431,9 @@ const EditableNodeInput = (props: EditableNodeInputProps) => { value={inputValue} onChange={handleChange} onKeyDown={onKeydown} + // hotfix: https://github.com/XiaoMi/hiui/issues/2697 + draggable + onDragStart={(evt) => evt.preventDefault()} /> Date: Wed, 3 Jan 2024 15:27:46 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(tree):=20=E5=85=BC=E5=AE=B9Firefox=20(#?= =?UTF-8?q?2697)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/real-points-jump.md | 2 +- packages/ui/tree/src/use-tree-action.tsx | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.changeset/real-points-jump.md b/.changeset/real-points-jump.md index 1fcb782a9..0ebe25967 100644 --- a/.changeset/real-points-jump.md +++ b/.changeset/real-points-jump.md @@ -2,4 +2,4 @@ "@hi-ui/tree": patch --- -fix: 修复编辑框内容无法选中问题 +fix: 修复可拖拽模式下编辑框内容无法选中问题 diff --git a/packages/ui/tree/src/use-tree-action.tsx b/packages/ui/tree/src/use-tree-action.tsx index c23abae67..9c0f0d35e 100644 --- a/packages/ui/tree/src/use-tree-action.tsx +++ b/packages/ui/tree/src/use-tree-action.tsx @@ -103,6 +103,8 @@ export const useTreeEditProps = ( onDelete ) + const [editing, setEditing] = React.useState(false) + const renderTitleWithEditable = (node: FlattedTreeNodeData, title?: React.ReactNode) => { return ( ( focusTree={focusTree} onExpand={tryToggleExpandedIds} actionRender={actionRender} + onEditStatusChange={setEditing} /> ) } @@ -138,6 +141,8 @@ export const useTreeEditProps = ( const treeProps = { ...nativeTreeProps, + // hotfix: https://github.com/XiaoMi/hiui/issues/2697 + draggable: editing ? false : nativeTreeProps.draggable, fieldNames, render: proxyTitleRender, data: editable ? treeData : data, @@ -194,11 +199,15 @@ export interface EditableTreeProps extends TreeProps { } const EditableTreeNodeTitle = (props: EditableTreeNodeTitleProps) => { - const { prefixCls, node, title, actionRender } = props + const { prefixCls, node, title, actionRender, onEditStatusChange } = props // 如果是添加节点,则进入节点编辑临时态 const [editing, editingAction] = useToggle(() => node.raw.type === TreeNodeType.ADD || false) + React.useEffect(() => { + onEditStatusChange?.(editing) + }, [editing, onEditStatusChange]) + if (editing) { return } @@ -226,6 +235,7 @@ interface EditableTreeNodeTitleProps { menuOptions?: TreeMenuActionOption[] | ((node: FlattedTreeNodeData) => TreeMenuActionOption[]) focusTree: () => void actionRender?: (node: FlattedTreeNodeData, editActions: TreeEditActions) => React.ReactNode | null + onEditStatusChange?: (editing: boolean) => void } const EditableNodeMenu = (props: EditableNodeMenuProps) => { @@ -431,9 +441,6 @@ const EditableNodeInput = (props: EditableNodeInputProps) => { value={inputValue} onChange={handleChange} onKeyDown={onKeydown} - // hotfix: https://github.com/XiaoMi/hiui/issues/2697 - draggable - onDragStart={(evt) => evt.preventDefault()} />