@@ -12,8 +12,9 @@ import { TableBody, TableHeader } from 'react-stately';
12
12
export type Names < T > = { [ Property in keyof T ] ?: string } ;
13
13
14
14
export interface ObjectInspectorTableProps < T extends object > {
15
- objects : T [ ] ;
15
+ objects : ( T | null ) [ ] ;
16
16
names : Names < T > ;
17
+ labelWidth ?: number ;
17
18
selection ?: keyof T ;
18
19
onSelect ?: ( prop ?: keyof T ) => void ;
19
20
render ?: < K extends keyof T > ( value : T [ K ] , prop : K ) => ReactNode ;
@@ -22,6 +23,7 @@ export interface ObjectInspectorTableProps<T extends object> {
22
23
export function ObjectInspectorTable < T extends object > ( {
23
24
objects,
24
25
names,
26
+ labelWidth,
25
27
selection,
26
28
onSelect,
27
29
render = ( value , _prop ) => < ObjectInspectorValue value = { value } /> ,
@@ -40,10 +42,10 @@ export function ObjectInspectorTable<T extends object>({
40
42
? ( Object . keys ( names ) as ( keyof T ) [ ] ) . map ( prop => ( {
41
43
key : prop as string ,
42
44
prop,
43
- values : [ names [ prop ] , ... objects . map ( v => v [ prop ] ) ] as [
44
- string ,
45
- ...T [ keyof T ] [ ] ,
46
- ] ,
45
+ values : [
46
+ names [ prop ] ,
47
+ ...objects . map ( v => ( v === null ? undefined : v [ prop ] ) ) ,
48
+ ] as [ string , ... T [ keyof T ] [ ] ] ,
47
49
} ) )
48
50
: [ ] ,
49
51
[ objects , names ]
@@ -63,6 +65,7 @@ export function ObjectInspectorTable<T extends object>({
63
65
return (
64
66
< Table
65
67
hideHeader
68
+ layout = "fixed"
66
69
classNames = { {
67
70
table : 'bg-red' ,
68
71
} }
@@ -74,18 +77,24 @@ export function ObjectInspectorTable<T extends object>({
74
77
aria-label = "Lamp monitoring values"
75
78
>
76
79
< TableHeader columns = { columns } >
77
- { column => < TableColumn key = { column . key } > { column . key } </ TableColumn > }
80
+ { column => (
81
+ < TableColumn key = { column . key } align = "end" >
82
+ { column . key }
83
+ </ TableColumn >
84
+ ) }
78
85
</ TableHeader >
79
86
< TableBody items = { rows } >
80
87
{ item => (
81
88
< TableRow key = { item . key } >
82
89
{ columnKey => {
83
90
const i = parseInt ( columnKey as string ) ;
84
91
return (
85
- < TableCell key = { i } >
92
+ < TableCell key = { i } width = { i === 0 ? labelWidth : undefined } >
86
93
{ i === 0
87
94
? item . values [ 0 ]
88
- : render ( item . values [ i ] as T [ keyof T ] , item . prop ) }
95
+ : item . values [ i ] !== undefined
96
+ ? render ( item . values [ i ] as T [ keyof T ] , item . prop )
97
+ : undefined }
89
98
</ TableCell >
90
99
) ;
91
100
} }
0 commit comments