@@ -6,41 +6,20 @@ import { useFieldArray, useFormContext } from 'react-hook-form';
66import PlusIcon from 'components/common/Icons/PlusIcon' ;
77import IconButtonWrapper from 'components/common/Icons/IconButtonWrapper' ;
88import CloseCircleIcon from 'components/common/Icons/CloseCircleIcon' ;
9- import Heading from 'components/common/heading/Heading.styled' ;
109import {
1110 FlexGrow1 ,
1211 FlexRow ,
1312} from 'widgets/ClusterConfigForm/ClusterConfigForm.styled' ;
1413import SectionHeader from 'widgets/ClusterConfigForm/common/SectionHeader' ;
15- import { Serde } from 'widgets/ClusterConfigForm/types' ;
14+
15+ import PropertiesFields from './PropertiesFields' ;
1616
1717const Serdes = ( ) => {
18- const { control, reset , getValues } = useFormContext ( ) ;
18+ const { control } = useFormContext ( ) ;
1919 const { fields, append, remove } = useFieldArray ( {
2020 control,
2121 name : 'serde' ,
2222 } ) ;
23- const {
24- fields : propsFields ,
25- append : appendProps ,
26- remove : removeProps ,
27- } = useFieldArray ( {
28- control,
29- name : 'properties' ,
30- } ) ;
31-
32- React . useEffect ( ( ) => {
33- reset ( ) ;
34- getValues ( ) . serde ?. forEach ( ( item : Serde , index : number ) => {
35- item . properties ?. forEach ( ( itemProp ) => {
36- appendProps ( {
37- key : itemProp . key ,
38- value : itemProp . value ,
39- serdeIndex : index ,
40- } ) ;
41- } ) ;
42- } ) ;
43- } , [ ] ) ;
4423
4524 const handleAppend = ( ) =>
4625 append ( {
@@ -109,54 +88,7 @@ const Serdes = () => {
10988 withError
11089 />
11190 < hr />
112- < S . GroupFieldWrapper >
113- < Heading level = { 4 } > Serde properties</ Heading >
114- { propsFields
115- . filter (
116- ( propItem ) =>
117- ( propItem as unknown as { serdeIndex : number } )
118- . serdeIndex === index
119- )
120- . map ( ( propsField , propsIndex ) => (
121- < S . SerdeProperties key = { propsField . id } >
122- < div >
123- < Input
124- name = { `serde.${ index } .properties.${ propsIndex } .key` }
125- placeholder = "Key"
126- type = "text"
127- withError
128- />
129- </ div >
130- < div >
131- < Input
132- name = { `serde.${ index } .properties.${ propsIndex } .value` }
133- placeholder = "Value"
134- type = "text"
135- withError
136- />
137- </ div >
138- < S . SerdePropertiesActions
139- aria-label = "deleteProperty"
140- onClick = { ( ) => removeProps ( index ) }
141- >
142- < CloseCircleIcon aria-hidden />
143- </ S . SerdePropertiesActions >
144- </ S . SerdeProperties >
145- ) ) }
146- < div >
147- < Button
148- type = "button"
149- buttonSize = "M"
150- buttonType = "secondary"
151- onClick = { ( ) =>
152- appendProps ( { key : '' , value : '' , serdeIndex : index } )
153- }
154- >
155- < PlusIcon />
156- Add Property
157- </ Button >
158- </ div >
159- </ S . GroupFieldWrapper >
91+ < PropertiesFields nestedId = { index } />
16092 </ FlexGrow1 >
16193 < S . RemoveButton onClick = { ( ) => remove ( index ) } >
16294 < IconButtonWrapper aria-label = "deleteProperty" >
0 commit comments