@@ -12,6 +12,9 @@ import { useDrag } from 'react-dnd';
12
12
import { IconProps } from '@mui/material' ;
13
13
import CodeIcon from '@mui/icons-material/Code' ;
14
14
import * as Icons from '@mui/icons-material' ;
15
+ import { useDispatch , useSelector } from 'react-redux' ;
16
+ import { addChild } from '../../redux/reducers/slice/appStateSlice' ;
17
+ import { emitEvent } from '../../helperFunctions/socket' ;
15
18
16
19
const useStyles = makeStyles ( {
17
20
HTMLPanelItem : {
@@ -41,6 +44,8 @@ const HTMLItem: React.FC<{
41
44
//load mui icons base on string parameter
42
45
const IconComponent = Icons [ icon ] ;
43
46
47
+ const roomCode = useSelector ( ( store : RootState ) => store . roomSlice . roomCode ) ; // current roomCode
48
+
44
49
const classes = useStyles ( ) ;
45
50
46
51
const [ modal , setModal ] = useState ( null ) ;
@@ -118,6 +123,26 @@ const HTMLItem: React.FC<{
118
123
} )
119
124
) ;
120
125
} ;
126
+
127
+ const dispatch = useDispatch ( ) ;
128
+
129
+ const handleClick = ( ) => {
130
+ const childData = {
131
+ type : 'HTML Element' ,
132
+ typeId : id ,
133
+ childId : null ,
134
+ contextParam : {
135
+ allContext : [ ]
136
+ }
137
+ } ;
138
+
139
+ dispatch ( addChild ( childData ) ) ;
140
+ if ( roomCode ) {
141
+ // Emit 'addChildAction' event to the server
142
+ emitEvent ( 'addChildAction' , roomCode , childData ) ;
143
+ }
144
+ } ;
145
+
121
146
// updated the id's to reflect the new element types input and label
122
147
return (
123
148
// HTML Elements
@@ -128,6 +153,9 @@ const HTMLItem: React.FC<{
128
153
style = { { borderColor : '#C6C6C6' } }
129
154
className = { `${ classes . HTMLPanelItem } ${ classes . darkThemeFontColor } ` }
130
155
id = "HTMLItem"
156
+ onClick = { ( ) => {
157
+ handleClick ( ) ;
158
+ } }
131
159
>
132
160
{ typeof IconComponent !== 'undefined' && (
133
161
< IconComponent fontSize = "small" align-items = "center" />
@@ -143,17 +171,21 @@ const HTMLItem: React.FC<{
143
171
style = { { borderColor : '#C6C6C6' } }
144
172
className = { `${ classes . HTMLPanelItem } ${ classes . darkThemeFontColor } ` }
145
173
id = "HTMLItem"
174
+ onClick = { ( ) => {
175
+ handleClick ( ) ;
176
+ } }
146
177
>
147
178
{ typeof CodeIcon !== 'undefined' && (
148
- < CodeIcon fontSize = "small" align-items = "center" /> ) }
179
+ < CodeIcon fontSize = "small" align-items = "center" />
180
+ ) }
149
181
{ name }
150
- < button
182
+ < button
151
183
id = "newElement"
152
184
style = { { color : '#C6C6C6' } }
153
185
onClick = { ( ) => deleteAllInstances ( id ) }
154
- >
155
- X
156
- </ button >
186
+ >
187
+ X
188
+ </ button >
157
189
</ div >
158
190
) }
159
191
{ modal }
0 commit comments