1
- import { ColumnsType } from 'antd/es/table' ;
1
+ import { ColumnsType , ColumnType } from 'antd/es/table' ;
2
2
import Link from 'next/link' ;
3
- import { Key , SyntheticEvent } from 'react' ;
3
+ import { Key , ReactEventHandler , SyntheticEvent } from 'react' ;
4
4
import { ResizeCallbackData } from 'react-resizable' ;
5
5
import { CircuitSchemaProps } from '../type' ;
6
6
7
7
import { ChevronRight } from '@/components/icons' ;
8
8
import { classNames } from '@/util/utils' ;
9
+ import { ensureNumber } from '@/util/type-guards' ;
9
10
10
11
export type ResizableColumnType = ColumnsType < CircuitSchemaProps > [ number ] & {
11
12
onHeaderCell ?: ( column : ResizableColumnType ) => React . HTMLAttributes < HTMLElement > & {
@@ -14,6 +15,10 @@ export type ResizableColumnType = ColumnsType<CircuitSchemaProps>[number] & {
14
15
} ;
15
16
} ;
16
17
18
+ type HeaderCellHandler = ReactEventHandler < any > &
19
+ ReactEventHandler < HTMLElement > &
20
+ ( ( e : SyntheticEvent , data : ResizeCallbackData ) => void ) ;
21
+
17
22
const columns = (
18
23
expandedRowKeys : Key | Key [ ] ,
19
24
calculateSubcircuitsForParent : ( row : CircuitSchemaProps ) => number ,
@@ -29,9 +34,9 @@ const columns = (
29
34
{ record . name }
30
35
</ Link >
31
36
) ,
32
- onHeaderCell : ( column ) => ( {
33
- width : column . width ?? 150 ,
34
- onResize : handleResize ( column . key as string ) ,
37
+ onHeaderCell : ( column : ColumnType < CircuitSchemaProps > ) => ( {
38
+ width : ensureNumber ( column . width , 150 ) ,
39
+ onResize : handleResize ( column . key as string ) as HeaderCellHandler ,
35
40
} ) ,
36
41
} ,
37
42
{
@@ -65,9 +70,9 @@ const columns = (
65
70
</ button >
66
71
) ;
67
72
} ,
68
- onHeaderCell : ( column ) => ( {
69
- width : column . width ?? 150 ,
70
- onResize : handleResize ( column . key as string ) ,
73
+ onHeaderCell : ( column : ColumnType < CircuitSchemaProps > ) => ( {
74
+ width : ensureNumber ( column . width , 150 ) ,
75
+ onResize : handleResize ( column . key as string ) as HeaderCellHandler ,
71
76
} ) ,
72
77
} ,
73
78
{
@@ -77,9 +82,9 @@ const columns = (
77
82
render : ( _value : any , record : CircuitSchemaProps , _index : number ) => (
78
83
< div className = "text-ellipsis whitespace-nowrap font-normal" > { record . description } </ div >
79
84
) ,
80
- onHeaderCell : ( column ) => ( {
81
- width : column . width ?? 150 ,
82
- onResize : handleResize ( column . key as string ) ,
85
+ onHeaderCell : ( column : ColumnType < CircuitSchemaProps > ) => ( {
86
+ width : ensureNumber ( column . width , 150 ) ,
87
+ onResize : handleResize ( column . key as string ) as HeaderCellHandler ,
83
88
} ) ,
84
89
} ,
85
90
{
@@ -89,9 +94,9 @@ const columns = (
89
94
render : ( _value : any , record : CircuitSchemaProps , _index : number ) => (
90
95
< div className = "whitespace-nowrap font-normal" > { record . brainRegion } </ div >
91
96
) ,
92
- onHeaderCell : ( column ) => ( {
93
- width : column . width ?? 150 ,
94
- onResize : handleResize ( column . key as string ) ,
97
+ onHeaderCell : ( column : ColumnType < CircuitSchemaProps > ) => ( {
98
+ width : ensureNumber ( column . width , 150 ) ,
99
+ onResize : handleResize ( column . key as string ) as HeaderCellHandler ,
95
100
} ) ,
96
101
} ,
97
102
{
@@ -101,9 +106,9 @@ const columns = (
101
106
render : ( _value : any , record : CircuitSchemaProps , _index : number ) => (
102
107
< div className = "whitespace-nowrap font-normal" > { record . numberOfNeurons } </ div >
103
108
) ,
104
- onHeaderCell : ( column ) => ( {
105
- width : column . width ?? 150 ,
106
- onResize : handleResize ( column . key as string ) ,
109
+ onHeaderCell : ( column : ColumnType < CircuitSchemaProps > ) => ( {
110
+ width : ensureNumber ( column . width , 150 ) ,
111
+ onResize : handleResize ( column . key as string ) as HeaderCellHandler ,
107
112
} ) ,
108
113
} ,
109
114
{
@@ -113,9 +118,9 @@ const columns = (
113
118
render : ( _value : any , record : CircuitSchemaProps , _index : number ) => (
114
119
< div className = "whitespace-nowrap font-normal" > { record . species } </ div >
115
120
) ,
116
- onHeaderCell : ( column ) => ( {
117
- width : column . width ?? 150 ,
118
- onResize : handleResize ( column . key as string ) ,
121
+ onHeaderCell : ( column : ColumnType < CircuitSchemaProps > ) => ( {
122
+ width : ensureNumber ( column . width , 150 ) ,
123
+ onResize : handleResize ( column . key as string ) as HeaderCellHandler ,
119
124
} ) ,
120
125
} ,
121
126
{
@@ -125,9 +130,9 @@ const columns = (
125
130
render : ( _value : any , record : CircuitSchemaProps , _index : number ) => (
126
131
< div className = "whitespace-nowrap font-normal" > { record . metadata . contributorSimple } </ div >
127
132
) ,
128
- onHeaderCell : ( column ) => ( {
129
- width : column . width ?? 150 ,
130
- onResize : handleResize ( column . key as string ) ,
133
+ onHeaderCell : ( column : ColumnType < CircuitSchemaProps > ) => ( {
134
+ width : ensureNumber ( column . width , 150 ) ,
135
+ onResize : handleResize ( column . key as string ) as HeaderCellHandler ,
131
136
} ) ,
132
137
} ,
133
138
{
@@ -137,9 +142,9 @@ const columns = (
137
142
render : ( _value : any , record : CircuitSchemaProps , _index : number ) => (
138
143
< div className = "whitespace-nowrap font-normal" > { record . metadata . registrationDate } </ div >
139
144
) ,
140
- onHeaderCell : ( column ) => ( {
141
- width : column . width ?? 150 ,
142
- onResize : handleResize ( column . key as string ) ,
145
+ onHeaderCell : ( column : ColumnType < CircuitSchemaProps > ) => ( {
146
+ width : ensureNumber ( column . width , 150 ) ,
147
+ onResize : handleResize ( column . key as string ) as HeaderCellHandler ,
143
148
} ) ,
144
149
} ,
145
150
] ;
0 commit comments