diff --git a/src/frontend/src/customNodes/genericNode/components/ComponentOutput/index.tsx b/src/frontend/src/customNodes/genericNode/components/ComponentOutput/index.tsx new file mode 100644 index 000000000..6f872afe2 --- /dev/null +++ b/src/frontend/src/customNodes/genericNode/components/ComponentOutput/index.tsx @@ -0,0 +1,54 @@ +import { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, +} from "@radix-ui/react-dropdown-menu"; +import ForwardedIconComponent from "../../../../components/genericIconComponent"; +import { outputComponentType } from "../../../../types/components"; +import { cn } from "../../../../utils/utils"; +import useFlowStore from "../../../../stores/flowStore"; + +export default function ComponentOutput({ + selected, + types, + frozen = false, + nodeId, +}: outputComponentType) { + const setNode = useFlowStore((state) => state.setNode); + let displayTitle = selected ?? types[0]; + + if (types.length < 2) { + return ( + {displayTitle} + ); + } + + return ( + + + + {displayTitle} + + + + + {types.map((type) => ( + { + // TODO: UDPDATE SET NODE TO NEW NODE FORM + setNode(nodeId, (node) => ({ + ...node, + data: { ...node.data, selected: type }, + })); + }} + > + {type} + + ))} + + + ); +} diff --git a/src/frontend/src/types/components/index.ts b/src/frontend/src/types/components/index.ts index e23557a84..758b13510 100644 --- a/src/frontend/src/types/components/index.ts +++ b/src/frontend/src/types/components/index.ts @@ -111,6 +111,13 @@ export type TextAreaComponentType = { readonly?: boolean; }; +export type outputComponentType = { + types: string[]; + selected: string; + nodeId: string; + frozen?: boolean; +}; + export type PromptAreaComponentType = { field_name?: string; nodeClass?: APIClassType;