@@ -35,7 +35,7 @@ export function NestedCollapsible({
3535 const regex = / ^ < c l a s s \s + ' .* ' > $ / ;
3636
3737 for ( const [ key , value ] of Object . entries ( data || { } ) ) {
38- if ( typeof value === "object" && ! Array . isArray ( value ) ) {
38+ if ( typeof value === "object" && value !== null && ! Array . isArray ( value ) ) {
3939 objects [ key ] = value ;
4040 } else if ( Array . isArray ( value ) ) {
4141 arrays [ key ] = value ;
@@ -44,8 +44,6 @@ export function NestedCollapsible({
4444 }
4545 }
4646
47- if ( Object . keys ( data || { } ) . length === 0 ) return null ;
48-
4947 const values = Object . entries ( nonObjects ) ;
5048 values . sort ( ( a , b ) => a [ 0 ] . localeCompare ( b [ 0 ] ) ) ;
5149
@@ -57,40 +55,46 @@ export function NestedCollapsible({
5755 intent = { intent }
5856 title = { title }
5957 >
60- < div className = "flex flex-col gap-3" >
61- < dl className = "grid grid-cols-1 gap-x-[10px] gap-y-2 md:grid-cols-3 md:gap-y-4" >
62- { values . map ( ( [ key , value ] ) => (
63- < KeyValue
64- key = { key }
65- label = {
66- < TooltipProvider >
67- < Tooltip >
68- < TooltipTrigger className = "cursor-default truncate" > { key } </ TooltipTrigger >
69- < TooltipContent className = "max-w-[480px]" > { key } </ TooltipContent >
70- </ Tooltip >
71- </ TooltipProvider >
72- }
73- value = {
74- < >
75- { typeof value === "boolean" ? (
76- < div className = "py-1" > { JSON . stringify ( value ) } </ div >
77- ) : regex . test ( value ) ? (
78- < Codesnippet className = "py-1" highlightCode code = { value } />
79- ) : (
80- < div className = "overflow-x-auto py-1" > { value } </ div >
81- ) }
82- </ >
83- }
84- />
58+ { Object . keys ( data || { } ) . length === 0 ? (
59+ < p > Not available</ p >
60+ ) : (
61+ < div className = "flex flex-col gap-3" >
62+ < dl className = "grid grid-cols-1 gap-x-[10px] gap-y-2 md:grid-cols-3 md:gap-y-4" >
63+ { values . map ( ( [ key , value ] ) => (
64+ < KeyValue
65+ key = { key }
66+ label = {
67+ < TooltipProvider >
68+ < Tooltip >
69+ < TooltipTrigger className = "cursor-default truncate" > { key } </ TooltipTrigger >
70+ < TooltipContent className = "max-w-[480px]" > { key } </ TooltipContent >
71+ </ Tooltip >
72+ </ TooltipProvider >
73+ }
74+ value = {
75+ < >
76+ { typeof value === "boolean" ? (
77+ < div className = "py-1" > { JSON . stringify ( value ) } </ div >
78+ ) : regex . test ( value ) ? (
79+ < Codesnippet className = "py-1" highlightCode code = { value } />
80+ ) : value === null ? (
81+ < div className = "overflow-x-auto" > null</ div >
82+ ) : (
83+ < div className = "overflow-x-auto py-1" > { value } </ div >
84+ ) }
85+ </ >
86+ }
87+ />
88+ ) ) }
89+ </ dl >
90+ { Object . entries ( arrays ) . map ( ( [ key , value ] ) => (
91+ < RenderArray key = { key } title = { key } value = { value } />
92+ ) ) }
93+ { Object . entries ( objects ) . map ( ( [ key , value ] ) => (
94+ < NestedCollapsible intent = "secondary" title = { key } data = { value } key = { key } />
8595 ) ) }
86- </ dl >
87- { Object . entries ( arrays ) . map ( ( [ key , value ] ) => (
88- < RenderArray key = { key } title = { key } value = { value } />
89- ) ) }
90- { Object . entries ( objects ) . map ( ( [ key , value ] ) => (
91- < NestedCollapsible intent = "secondary" title = { key } data = { value } key = { key } />
92- ) ) }
93- </ div >
96+ </ div >
97+ ) }
9498 </ CollapsibleCard >
9599 ) ;
96100}
0 commit comments