fix: node shortcuts active in input fields (#3438)

This commit is contained in:
Pascal M 2024-04-13 03:48:39 +02:00 committed by GitHub
parent 6021ca5c31
commit a355225a83
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 39 additions and 2 deletions

View File

@ -721,8 +721,12 @@ export const useNodesInteractions = () => {
const {
setClipboardElements,
shortcutsDisabled,
} = workflowStore.getState()
if (shortcutsDisabled)
return
const {
getNodes,
} = store.getState()
@ -741,8 +745,12 @@ export const useNodesInteractions = () => {
const {
clipboardElements,
shortcutsDisabled,
} = workflowStore.getState()
if (shortcutsDisabled)
return
const {
getNodes,
setNodes,
@ -803,6 +811,13 @@ export const useNodesInteractions = () => {
if (getNodesReadOnly())
return
const {
shortcutsDisabled,
} = workflowStore.getState()
if (shortcutsDisabled)
return
const {
getNodes,
} = store.getState()
@ -815,7 +830,7 @@ export const useNodesInteractions = () => {
for (const node of nodesToDelete)
handleNodeDelete(node.id)
}, [getNodesReadOnly, handleNodeDelete, store])
}, [getNodesReadOnly, handleNodeDelete, store, workflowStore])
return {
handleNodeDragStart,

View File

@ -331,6 +331,16 @@ export const useWorkflow = () => {
return nodes.find(node => node.id === nodeId) || nodes.find(node => node.data.type === BlockEnum.Start)
}, [store])
const enableShortcuts = useCallback(() => {
const { setShortcutsDisabled } = workflowStore.getState()
setShortcutsDisabled(false)
}, [workflowStore])
const disableShortcuts = useCallback(() => {
const { setShortcutsDisabled } = workflowStore.getState()
setShortcutsDisabled(true)
}, [workflowStore])
return {
handleLayout,
getTreeLeafNodes,
@ -345,6 +355,8 @@ export const useWorkflow = () => {
renderTreeFromRecord,
getNode,
getBeforeNodeById,
enableShortcuts,
disableShortcuts,
}
}

View File

@ -125,7 +125,11 @@ const Workflow: FC<WorkflowProps> = memo(({
handleEdgeDelete,
handleEdgesChange,
} = useEdgesInteractions()
const { isValidConnection } = useWorkflow()
const {
isValidConnection,
enableShortcuts,
disableShortcuts,
} = useWorkflow()
useOnViewportChange({
onEnd: () => {
@ -161,6 +165,8 @@ const Workflow: FC<WorkflowProps> = memo(({
edgeTypes={edgeTypes}
nodes={nodes}
edges={edges}
onPointerDown={enableShortcuts}
onMouseLeave={disableShortcuts}
onNodeDragStart={handleNodeDragStart}
onNodeDrag={handleNodeDrag}
onNodeDragStop={handleNodeDragStop}

View File

@ -65,6 +65,8 @@ type Shape = {
setCustomTools: (tools: ToolWithProvider[]) => void
clipboardElements: Node[]
setClipboardElements: (clipboardElements: Node[]) => void
shortcutsDisabled: boolean
setShortcutsDisabled: (shortcutsDisabled: boolean) => void
}
export const createWorkflowStore = () => {
@ -111,6 +113,8 @@ export const createWorkflowStore = () => {
setCustomTools: customTools => set(() => ({ customTools })),
clipboardElements: [],
setClipboardElements: clipboardElements => set(() => ({ clipboardElements })),
shortcutsDisabled: false,
setShortcutsDisabled: shortcutsDisabled => set(() => ({ shortcutsDisabled })),
}))
}