@@ -16,11 +16,18 @@ import { useReactFlow } from '@xyflow/react'
1616import { setEdges } from 'client/state'
1717import { InputSocketSpecJSON } from '@magickml/behave-graph'
1818
19+ export type AddedSocket = {
20+ name : string
21+ valueType : string
22+ description ?: string // Added description field
23+ }
24+
1925type Props = {
20- addSocket : ( socket : any ) => void
26+ addSocket : ( socket : AddedSocket ) => void
2127 valueTypes : string [ ]
2228 definedValueType : string | null
2329 sockets : any [ ]
30+ includeDescription ?: boolean
2431}
2532/**
2633 * AddNewSocket component provides a form input to add a new socket.
@@ -30,25 +37,26 @@ type Props = {
3037 * @returns {React.JSX.Element } Form input to add a new socket.
3138 */
3239
33- const AddNewSocket = ( {
40+ export const AddNewSocket = ( {
3441 addSocket,
3542 valueTypes,
3643 definedValueType,
3744 sockets,
45+ includeDescription = false , // New prop to include description field
3846} : Props ) => {
3947 const [ value , setValue ] = useState ( '' )
48+ const [ description , setDescription ] = useState ( '' ) // State for description
4049 const [ selectedValueType , setSelectedValueType ] = useState ( valueTypes [ 0 ] )
4150 const { enqueueSnackbar } = useSnackbar ( )
4251
43- /**
44- * Update the input value when changed.
45- *
46- * @param {Event } e - The change event.
47- */
4852 const onChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
4953 setValue ( e . target . value )
5054 }
5155
56+ const onDescriptionChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
57+ setDescription ( e . target . value )
58+ }
59+
5260 useEffect ( ( ) => {
5361 if ( definedValueType ) {
5462 setSelectedValueType ( definedValueType )
@@ -57,12 +65,8 @@ const AddNewSocket = ({
5765 }
5866 } , [ definedValueType , valueTypes ] )
5967
60- /**
61- * Add a new socket on form submission.
62- *
63- * @param {Event } e - The submit event.
64- */
65- const onAdd = ( ) => {
68+ const onAdd = ( e : React . FormEvent ) => {
69+ e . preventDefault ( )
6670 if ( ! value ) return
6771 const socketExists = sockets . some ( socket => socket . name === value )
6872
@@ -73,37 +77,35 @@ const AddNewSocket = ({
7377 return
7478 }
7579
76- addSocket ( { name : value , valueType : definedValueType || selectedValueType } )
80+ addSocket ( {
81+ name : value ,
82+ valueType : definedValueType || selectedValueType ,
83+ description : includeDescription ? description : undefined , // Pass description if included
84+ } )
7785 setValue ( '' )
86+ setDescription ( '' ) // Reset description
7887 setSelectedValueType ( valueTypes [ 0 ] )
7988 }
8089
8190 return (
82- < form className = "w-full mt-1" >
83- { /* Flexbox container for input field and add button */ }
84- < div className = "flex h-20 mr-2" >
85- < div className = "flex gap-2 items-center h-10 " >
86- { /* Input field */ }
91+ < form className = "w-full mt-1" onSubmit = { onAdd } >
92+ < div className = "flex flex-col gap-1" >
93+ < div className = "flex gap-1" >
8794 < Input
8895 value = { value }
8996 type = "text"
9097 onChange = { onChange }
9198 required
9299 placeholder = "Add new socket"
93- onKeyDown = { e => {
94- if ( e . key === 'Enter' ) {
95- onAdd ( )
96- }
97- } }
98- className = "w-28 h-8 pl-2 input-placeholder bg-[var(--dark-3)] border-[var(--dark-3)]"
100+ className = "w-full h-8 pl-2 input-placeholder bg-[var(--dark-3)] border-[var(--dark-3)] m-0"
99101 />
100102 { ! definedValueType && (
101103 < Select
102104 value = { selectedValueType }
103- onValueChange = { e => setSelectedValueType ( e ) }
105+ onValueChange = { value => setSelectedValueType ( value ) }
104106 >
105- < SelectTrigger className = "h-8 pl-2 text-xs pr-1 font-medium border-0 bg-[var(--dark-1)]" >
106- < SelectValue placeholder = { ' Select a type' } >
107+ < SelectTrigger className = "h-8 pl-2 text-xs pr-1 font-medium border-0 bg-[var(--dark-1)] w-28 " >
108+ < SelectValue placeholder = " Select a type" >
107109 { selectedValueType . charAt ( 0 ) . toUpperCase ( ) +
108110 selectedValueType . slice ( 1 ) }
109111 </ SelectValue >
@@ -117,15 +119,22 @@ const AddNewSocket = ({
117119 </ SelectContent >
118120 </ Select >
119121 ) }
120- { /* Add button */ }
121122 < Button
122- onClick = { onAdd }
123- // type="submit"
123+ type = "submit"
124124 className = "h-8 w-8 border border-[var(--dark-3)] bg-ds-neutral rounded-sm"
125125 >
126126 +
127127 </ Button >
128128 </ div >
129+ { includeDescription && (
130+ < Input
131+ value = { description }
132+ type = "text"
133+ onChange = { onDescriptionChange }
134+ placeholder = "Socket description"
135+ className = "w-full h-8 pl-2 input-placeholder bg-[var(--dark-3)] border-[var(--dark-3)] m-0"
136+ />
137+ ) }
129138 </ div >
130139 </ form >
131140 )
0 commit comments