@@ -33,11 +33,15 @@ const propTypes = {
3333 editButtonElement : PropTypes . element ,
3434 inputElement : PropTypes . element ,
3535 textareaElement : PropTypes . element ,
36+ minusMenuElement : PropTypes . element ,
37+ plusMenuElement : PropTypes . element ,
3638} ;
3739// Default props
3840const defaultProps = {
3941 keyPath : [ ] ,
4042 deep : 0 ,
43+ minusMenuElement : < span > - </ span > ,
44+ plusMenuElement : < span > + </ span > ,
4145} ;
4246
4347/* ************************************* */
@@ -196,16 +200,20 @@ class JsonArray extends Component {
196200
197201 renderCollapsed ( ) {
198202 const { name, data, keyPath, deep } = this . state ;
199- const { handleRemove, readOnly, getStyle, dataType } = this . props ;
203+ const { handleRemove, readOnly, getStyle, dataType, minusMenuElement } = this . props ;
200204
201205 const { minus, collapsed } = getStyle ( name , data , keyPath , deep , dataType ) ;
202206 const collapseValue = ' [...]' ;
203207 const numberOfItems = data . length ;
204208 let minusElement = null ;
205209 // Check if readOnly is activated
206210 if ( ! readOnly ) {
207- minusElement = ( deep !== 0 ) ?
208- ( < span className = "rejt-minus-menu" onClick = { handleRemove } style = { minus } > - </ span > ) : null ;
211+ const minusMenuLayout = React . cloneElement ( minusMenuElement , {
212+ onClick : handleRemove ,
213+ className : 'rejt-minus-menu' ,
214+ style : minus ,
215+ } ) ;
216+ minusElement = ( deep !== 0 ) ? minusMenuLayout : null ;
209217 }
210218
211219 const itemName = ( numberOfItems > 1 ) ? 'items' : 'item' ;
@@ -232,14 +240,20 @@ class JsonArray extends Component {
232240 editButtonElement,
233241 inputElement,
234242 textareaElement,
243+ minusMenuElement,
244+ plusMenuElement,
235245 } = this . props ;
236246 const { minus, plus, delimiter, ul, addForm } = getStyle ( name , data , keyPath , deep , dataType ) ;
237247
238248 let minusElement = null ;
239249 // Check if readOnly is activated
240250 if ( ! readOnly ) {
241- minusElement = ( deep !== 0 ) ?
242- ( < span className = "rejt-minus-menu" onClick = { handleRemove } style = { minus } > - </ span > ) : null ;
251+ const minusMenuLayout = React . cloneElement ( minusMenuElement , {
252+ onClick : handleRemove ,
253+ className : 'rejt-minus-menu' ,
254+ style : minus ,
255+ } ) ;
256+ minusElement = ( deep !== 0 ) ? minusMenuLayout : null ;
243257 }
244258
245259 const list = data
@@ -261,12 +275,19 @@ class JsonArray extends Component {
261275 editButtonElement = { editButtonElement }
262276 inputElement = { inputElement }
263277 textareaElement = { textareaElement }
278+ minusMenuElement = { minusMenuElement }
279+ plusMenuElement = { plusMenuElement }
264280 /> ) ;
265281
266282 const onlyValue = true ;
267283 let menu = null ;
268284 // Check if readOnly is activated
269285 if ( ! readOnly ) {
286+ const plusMenuLayout = React . cloneElement ( plusMenuElement , {
287+ onClick : this . handleAddMode ,
288+ className : 'rejt-plus-menu' ,
289+ style : plus ,
290+ } ) ;
270291 menu = addFormVisible ?
271292 ( < span className = "rejt-add-form" style = { addForm } > < JsonAddValue
272293 handleAdd = { this . handleAddValueAdd }
@@ -277,7 +298,7 @@ class JsonArray extends Component {
277298 inputElement = { inputElement }
278299 /> </ span > ) :
279300 ( < span >
280- < span className = "rejt-plus-menu" onClick = { this . handleAddMode } style = { plus } > + </ span > { minusElement }
301+ { plusMenuLayout } { minusElement }
281302 </ span > ) ;
282303 }
283304
0 commit comments