@@ -210,6 +210,13 @@ export default function KeyValue({
210210 canRenameTheCurrentPath = canRenamePathsAtDepth ( depth ) ;
211211 }
212212
213+ const hasChildren =
214+ typeof value === 'object' &&
215+ value !== null &&
216+ ( canEditValues ||
217+ ( isArray ( value ) && value . length > 0 ) ||
218+ Object . entries ( value ) . length > 0 ) ;
219+
213220 let renderedName ;
214221 if ( isDirectChildOfAnArray ) {
215222 if ( canDeletePaths ) {
@@ -218,27 +225,37 @@ export default function KeyValue({
218225 ) ;
219226 } else {
220227 renderedName = (
221- < span className = { styles . Name } >
228+ < span
229+ className = { styles . Name }
230+ onClick = { isInspectable || hasChildren ? toggleIsOpen : null } >
222231 { name }
223232 { ! ! hookName && < span className = { styles . HookName } > ({ hookName } )</ span > }
233+ < span className = { styles . AfterName } > :</ span >
224234 </ span >
225235 ) ;
226236 }
227237 } else if ( canRenameTheCurrentPath ) {
228238 renderedName = (
229- < EditableName
230- allowEmpty = { canDeletePaths }
231- className = { styles . EditableName }
232- initialValue = { name }
233- overrideName = { renamePath }
234- path = { path }
235- />
239+ < >
240+ < EditableName
241+ allowEmpty = { canDeletePaths }
242+ className = { styles . EditableName }
243+ initialValue = { name }
244+ overrideName = { renamePath }
245+ path = { path }
246+ />
247+ < span className = { styles . AfterName } > :</ span >
248+ </ >
236249 ) ;
237250 } else {
238251 renderedName = (
239- < span className = { styles . Name } data-testname = "NonEditableName" >
252+ < span
253+ className = { styles . Name }
254+ data-testname = "NonEditableName"
255+ onClick = { isInspectable || hasChildren ? toggleIsOpen : null } >
240256 { name }
241257 { ! ! hookName && < span className = { styles . HookName } > ({ hookName } )</ span > }
258+ < span className = { styles . AfterName } > :</ span >
242259 </ span >
243260 ) ;
244261 }
@@ -286,7 +303,6 @@ export default function KeyValue({
286303 style = { style } >
287304 < div className = { styles . ExpandCollapseToggleSpacer } />
288305 { renderedName }
289- < div className = { styles . AfterName } > :</ div >
290306 { canEditValues ? (
291307 < EditableValue
292308 overrideValue = { overrideValue }
@@ -328,7 +344,6 @@ export default function KeyValue({
328344 style = { style } >
329345 < div className = { styles . ExpandCollapseToggleSpacer } />
330346 { renderedName }
331- < div className = { styles . AfterName } > :</ div >
332347 < span
333348 className = { styles . Link }
334349 onClick = { ( ) => {
@@ -365,7 +380,6 @@ export default function KeyValue({
365380 < div className = { styles . ExpandCollapseToggleSpacer } />
366381 ) }
367382 { renderedName }
368- < div className = { styles . AfterName } > :</ div >
369383 < span
370384 className = { styles . Value }
371385 onClick = { isInspectable ? toggleIsOpen : undefined } >
@@ -388,7 +402,6 @@ export default function KeyValue({
388402 }
389403 } else {
390404 if ( isArray ( value ) ) {
391- const hasChildren = value . length > 0 || canEditValues ;
392405 const displayName = getMetaValueLabel ( value ) ;
393406
394407 children = value . map ( ( innerValue , index ) => (
@@ -449,12 +462,11 @@ export default function KeyValue({
449462 ref = { contextMenuTriggerRef }
450463 style = { style } >
451464 { hasChildren ? (
452- < ExpandCollapseToggle isOpen = { isOpen } setIsOpen = { setIsOpen } />
465+ < ExpandCollapseToggle isOpen = { isOpen } setIsOpen = { toggleIsOpen } />
453466 ) : (
454467 < div className = { styles . ExpandCollapseToggleSpacer } />
455468 ) }
456469 { renderedName }
457- < div className = { styles . AfterName } > :</ div >
458470 < span
459471 className = { styles . Value }
460472 onClick = { hasChildren ? toggleIsOpen : undefined } >
@@ -472,7 +484,6 @@ export default function KeyValue({
472484 entries . sort ( alphaSortEntries ) ;
473485 }
474486
475- const hasChildren = entries . length > 0 || canEditValues ;
476487 const displayName = getMetaValueLabel ( value ) ;
477488
478489 children = entries . map ( ( [ key , keyValue ] ) : ReactElement < any > => (
@@ -531,12 +542,11 @@ export default function KeyValue({
531542 ref = { contextMenuTriggerRef }
532543 style = { style } >
533544 { hasChildren ? (
534- < ExpandCollapseToggle isOpen = { isOpen } setIsOpen = { setIsOpen } />
545+ < ExpandCollapseToggle isOpen = { isOpen } setIsOpen = { toggleIsOpen } />
535546 ) : (
536547 < div className = { styles . ExpandCollapseToggleSpacer } />
537548 ) }
538549 { renderedName }
539- < div className = { styles . AfterName } > :</ div >
540550 < span
541551 className = { styles . Value }
542552 onClick = { hasChildren ? toggleIsOpen : undefined } >
@@ -567,7 +577,10 @@ function DeleteToggle({deletePath, name, path}) {
567577 title = "Delete entry" >
568578 < ButtonIcon type = "delete" />
569579 </ Button >
570- < span className = { styles . Name } > { name } </ span >
580+ < span className = { styles . Name } >
581+ { name }
582+ < span className = { styles . AfterName } > :</ span >
583+ </ span >
571584 </ >
572585 ) ;
573586}
0 commit comments