@@ -38,7 +38,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
3838 }
3939
4040 init ( ) {
41- const { value, field } = this . props ;
41+ const { value, field, onChange } = this . props ;
4242 const items : SettingField [ ] = [ ] ;
4343 const valueLength = value && Array . isArray ( value ) ? value . length : 0 ;
4444
@@ -54,7 +54,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
5454 } ) ;
5555 items . push ( item ) ;
5656 }
57- field . setValue ( value ) ;
57+ onChange ?. ( value ) ;
5858 this . state = { items } ;
5959 }
6060
@@ -75,7 +75,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
7575 ) ;
7676 return ;
7777 }
78- const { field } = this . props ;
78+ const { field, value : fieldValue } = this . props ;
7979 const { items } = this . state ;
8080 const { path } = field ;
8181 if ( path [ 0 ] !== targetPath [ 0 ] ) {
@@ -84,7 +84,6 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
8484 ) ;
8585 return ;
8686 }
87- const fieldValue = field . getValue ( ) ;
8887 try {
8988 const index = + targetPath [ targetPath . length - 2 ] ;
9089 if ( typeof index === 'number' && ! isNaN ( index ) ) {
@@ -97,10 +96,9 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
9796 } ;
9897
9998 onSort ( sortedIds : Array < string | number > ) {
100- const { field } = this . props ;
99+ const { onChange , value : oldValues } = this . props ;
101100 const { items } = this . state ;
102101 const values : any [ ] = [ ] ;
103- const oldValues = field . getValue ( ) ;
104102 const newItems : SettingField [ ] = [ ] ;
105103 sortedIds . map ( ( id , index ) => {
106104 const item = items [ + id ] ;
@@ -109,15 +107,15 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
109107 newItems [ index ] = item ;
110108 return id ;
111109 } ) ;
112- field . setValue ( values ) ;
110+ onChange ?. ( values ) ;
113111 this . setState ( { items : newItems } ) ;
114112 }
115113
116114 onAdd ( newValue ?: { [ key : string ] : any } ) {
117115 const { items = [ ] } = this . state ;
118- const { itemSetter, field } = this . props ;
119- const values = field . getValue ( ) || [ ] ;
120- const { initialValue } = itemSetter ;
116+ const { itemSetter, field, onChange , value = [ ] } = this . props ;
117+ const values = value || [ ] ;
118+ const initialValue = ( itemSetter as any ) ?. initialValue ;
121119 const defaultValue = newValue ? newValue : ( typeof initialValue === 'function' ? initialValue ( field ) : initialValue ) ;
122120 const item = field . createField ( {
123121 name : items . length ,
@@ -128,18 +126,17 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
128126 setValue : this . onItemChange ,
129127 } ,
130128 } ) ;
131- values . push ( defaultValue ) ;
132-
133129 items . push ( item ) ;
130+ values . push ( defaultValue ) ;
134131 this . scrollToLast = true ;
135- field ?. setValue ( values ) ;
132+ onChange ?. ( values ) ;
136133 this . setState ( { items } ) ;
137134 }
138135
139136 onRemove ( removed : SettingField ) {
140- const { field } = this . props ;
137+ const { onChange , value } = this . props ;
141138 const { items } = this . state ;
142- const values = field . getValue ( ) || [ ] ;
139+ const values = value || [ ] ;
143140 let i = items . indexOf ( removed ) ;
144141 items . splice ( i , 1 ) ;
145142 values . splice ( i , 1 ) ;
@@ -150,7 +147,7 @@ export class ListSetter extends Component<ArraySetterProps, ArraySetterState> {
150147 }
151148 removed . remove ( ) ;
152149 const pureValues = values . map ( ( item : any ) => typeof ( item ) === 'object' ? Object . assign ( { } , item ) :item ) ;
153- field ?. setValue ( pureValues ) ;
150+ onChange ?. ( pureValues ) ;
154151 this . setState ( { items } ) ;
155152 }
156153
0 commit comments