diff --git a/packages/web/components/common/DndDrag/index.tsx b/packages/web/components/common/DndDrag/index.tsx index 43930e17c..82fd0f440 100644 --- a/packages/web/components/common/DndDrag/index.tsx +++ b/packages/web/components/common/DndDrag/index.tsx @@ -1,5 +1,5 @@ import { Box, Tbody } from '@chakra-ui/react'; -import React, { ReactNode, useState } from 'react'; +import React, { ReactElement, ReactNode, useState } from 'react'; import { DragDropContext, Droppable, @@ -14,22 +14,19 @@ export * from 'react-beautiful-dnd'; type Props = { onDragEndCb: (result: T[]) => void; renderClone?: DraggableChildrenFn; - children: - | ((provided: DroppableProvided, snapshot: DroppableStateSnapshot) => ReactNode) - | ReactNode; + children: ({ + provided, + snapshot, + draggingItemHeight + }: { + provided: DroppableProvided; + snapshot: DroppableStateSnapshot; + draggingItemHeight: number; + }) => ReactElement; dataList: T[]; - isTable?: boolean; - zoom?: number; }; -function DndDrag({ - children, - renderClone, - onDragEndCb, - dataList, - isTable = false, - zoom = 1 -}: Props) { +function DndDrag({ children, renderClone, onDragEndCb, dataList }: Props) { const [draggingItemHeight, setDraggingItemHeight] = useState(0); const onDragStart = (start: DragStart) => { @@ -56,19 +53,7 @@ function DndDrag({ return ( - {(provided, snapshot) => { - return isTable ? ( - - {typeof children !== 'function' && children} - {snapshot.isDraggingOver && } - - ) : ( - - {typeof children === 'function' && children(provided, snapshot)} - {snapshot.isDraggingOver && } - - ); - }} + {(provided, snapshot) => children({ provided, snapshot, draggingItemHeight })} ); diff --git a/projects/app/src/components/core/app/VariableEdit.tsx b/projects/app/src/components/core/app/VariableEdit.tsx index 5a0f791bb..967f1f498 100644 --- a/projects/app/src/components/core/app/VariableEdit.tsx +++ b/projects/app/src/components/core/app/VariableEdit.tsx @@ -9,7 +9,8 @@ import { Th, Td, TableContainer, - Stack + Stack, + Tbody } from '@chakra-ui/react'; import { SmallAddIcon } from '@chakra-ui/icons'; import { @@ -30,7 +31,6 @@ import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel'; import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; import InputTypeConfig from '@/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig'; import MyIconButton from '@fastgpt/web/components/common/Icon/button'; -import { useReactFlow, useViewport } from 'reactflow'; import DndDrag, { Draggable, DraggableProvided, @@ -60,14 +60,15 @@ export const addVariable = () => { const VariableEdit = ({ variables = [], - onChange + onChange, + zoom = 1 }: { variables?: VariableItemType[]; onChange: (data: VariableItemType[]) => void; + zoom?: number; }) => { const { t } = useTranslation(); const { toast } = useToast(); - const { zoom } = useViewport(); const form = useForm(); const { setValue, reset, watch, getValues } = form; @@ -222,24 +223,27 @@ const VariableEdit = ({ variables={variables} /> )} - isTable - zoom={zoom} > - {formatVariables.map((item, index) => ( - - {(provided, snapshot) => ( - - )} - - ))} + {({ provided, snapshot, draggingItemHeight }) => ( + + {formatVariables.map((item, index) => ( + + {(provided, snapshot) => ( + + )} + + ))} + {snapshot.isDraggingOver && } + + )} diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx index 27b0b552f..b7382e687 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeFormInput/index.tsx @@ -209,27 +209,30 @@ const NodeFormInput = ({ data, selected }: NodeProps) => { /> ); }} - isTable - zoom={zoom} > - {inputs.map((item, index) => { - const icon = FlowNodeInputMap[item.type as FlowNodeInputTypeEnum]?.icon; - return ( - - {(provided, snapshot) => ( - - )} - - ); - })} + {({ provided, snapshot, draggingItemHeight }) => ( + + {inputs.map((item, index) => { + const icon = FlowNodeInputMap[item.type as FlowNodeInputTypeEnum]?.icon; + return ( + + {(provided, snapshot) => ( + + )} + + ); + })} + {snapshot.isDraggingOver && } + + )} diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx index 911681819..97983ba03 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeIfElse/index.tsx @@ -64,9 +64,8 @@ const NodeIfElse = ({ data, selected }: NodeProps) => { nodeId={nodeId} /> )} - zoom={zoom} > - {(provided) => ( + {({ provided, snapshot, draggingItemHeight }) => ( {ifElseList.map((conditionItem, conditionIndex) => ( ) => { )} ))} + {snapshot.isDraggingOver && } )} diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx index 38fdccae7..5ed17ea78 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodePluginIO/InputTypeConfig.tsx @@ -417,7 +417,7 @@ const InputTypeConfig = ({ ); }} > - {(provided) => ( + {({ provided, snapshot, draggingItemHeight }) => ( ))} - - {provided.placeholder} - + {snapshot.isDraggingOver && } )} diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx index 8f9660224..ab6f2073e 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeSystemConfig.tsx @@ -1,5 +1,5 @@ import React, { Dispatch, useMemo } from 'react'; -import { NodeProps } from 'reactflow'; +import { NodeProps, useViewport } from 'reactflow'; import { Box } from '@chakra-ui/react'; import { FlowNodeItemType } from '@fastgpt/global/core/workflow/type/node.d'; @@ -13,12 +13,7 @@ import NodeCard from './render/NodeCard'; import ScheduledTriggerConfig from '@/components/core/app/ScheduledTriggerConfig'; import { useContextSelector } from 'use-context-selector'; import { WorkflowContext } from '../../context'; -import { - AppChatConfigType, - AppDetailType, - AppQGConfigType, - VariableItemType -} from '@fastgpt/global/core/app/type'; +import { AppChatConfigType, AppDetailType, VariableItemType } from '@fastgpt/global/core/app/type'; import { useMemoizedFn } from 'ahooks'; import VariableEdit from '@/components/core/app/VariableEdit'; import { AppContext } from '@/pageComponents/app/detail/context'; @@ -133,8 +128,9 @@ function ChatStartVariable({ chatConfig: { variables = [] }, setAppDetail }: Com } })); }); + const { zoom } = useViewport(); - return updateVariables(e)} />; + return updateVariables(e)} zoom={zoom} />; } function AutoExecute({ chatConfig: { autoExecute }, setAppDetail }: ComponentProps) { diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx index 25a880e2f..858a2bada 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeUserSelect.tsx @@ -62,9 +62,8 @@ const NodeUserSelect = ({ data, selected }: NodeProps) => { index={rubric.source.index} /> )} - zoom={zoom} > - {(provided) => ( + {({ provided, snapshot, draggingItemHeight }) => ( {options.map((item, i) => ( @@ -81,6 +80,7 @@ const NodeUserSelect = ({ data, selected }: NodeProps) => { )} ))} + {snapshot.isDraggingOver && } )}