mirror of
https://github.com/langgenius/dify.git
synced 2026-05-06 02:18:08 +08:00
refactor(skill): unify tree selection with VSCode-style single state
Remove redundant createTargetNodeId and use selectedTreeNodeId for both visual highlight and creation target. This simplifies the state management by having a single source of truth for tree selection, similar to VSCode's file explorer behavior where both files and folders can be selected.
This commit is contained in:
@ -49,13 +49,12 @@ export function useTreeNodeHandlers({
|
||||
|
||||
const handleClick = useCallback((e: React.MouseEvent) => {
|
||||
e.stopPropagation()
|
||||
storeApi.getState().setCreateTargetNodeId(node.data.id)
|
||||
node.select()
|
||||
node.select() // This triggers Tree's onSelect → setSelectedTreeNodeId
|
||||
if (isFolder)
|
||||
throttledToggle()
|
||||
else
|
||||
handleFileClick()
|
||||
}, [handleFileClick, isFolder, node, storeApi, throttledToggle])
|
||||
}, [handleFileClick, isFolder, node, throttledToggle])
|
||||
|
||||
const handleDoubleClick = useCallback((e: React.MouseEvent) => {
|
||||
e.stopPropagation()
|
||||
@ -74,7 +73,8 @@ export function useTreeNodeHandlers({
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
|
||||
storeApi.getState().setCreateTargetNodeId(node.data.id)
|
||||
// Select the node for highlight + creation target
|
||||
storeApi.getState().setSelectedTreeNodeId(node.data.id)
|
||||
storeApi.getState().setContextMenu({
|
||||
top: e.clientY,
|
||||
left: e.clientX,
|
||||
|
||||
Reference in New Issue
Block a user