diff --git a/src/backend/base/langflow/template/field/base.py b/src/backend/base/langflow/template/field/base.py index 22f86b3c8..d06655211 100644 --- a/src/backend/base/langflow/template/field/base.py +++ b/src/backend/base/langflow/template/field/base.py @@ -164,6 +164,9 @@ class Output(BaseModel): name: str = Field(default=None) """The name of the field.""" + hide: Optional[bool] = Field(default=None) + """Dictates if the field is hidden.""" + display_name: Optional[str] = Field(default=None) """The display name of the field.""" diff --git a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx index 65d36d90a..eea25e5b2 100644 --- a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx @@ -135,6 +135,12 @@ export default function ParameterComponent({ edge.targetHandle === scapedJSONStringfy(proxy ? { ...id, proxy } : id) ) ?? false; + let disabledOutput = + edges.some( + (edge) => + edge.sourceHandle === scapedJSONStringfy(proxy ? { ...id, proxy } : id), + ) ?? false; + const handleRefreshButtonPress = async (name, data) => { handleRefreshButtonPressHook(name, data); }; @@ -190,6 +196,32 @@ export default function ParameterComponent({ optionalHandle = null; } + const handleUpdateOutputHide = (value?: boolean) => { + setNode(data.id, (oldNode) => { + let newNode = cloneDeep(oldNode); + newNode.data = { + ...newNode.data, + node: { + ...newNode.data.node, + outputs: newNode.data.node.outputs?.map((output, i) => { + if (i === index) { + output.hide = value ?? !output.hide; + } + return output; + }), + }, + }; + return newNode; + }); + updateNodeInternals(data.id); + }; + + useEffect(() => { + if (disabledOutput) { + handleUpdateOutputHide(false); + } + }, [disabledOutput]); + return !showNode ? ( left && LANGFLOW_SUPPORTED_TYPES.has(type ?? "") && !optionalHandle ? ( <>> @@ -262,6 +294,23 @@ export default function ParameterComponent({ (left ? "" : " justify-end") } > + {!left && ( +