1
1
// Libraries
2
- import React , { forwardRef } from "react"
2
+ import React from "react"
3
3
import {
4
4
Icon ,
5
5
Center ,
9
9
Tab ,
10
10
TabPanels ,
11
11
TabPanel ,
12
+ Box ,
13
+ type TabsProps ,
12
14
} from "@chakra-ui/react"
13
15
import { useTranslation } from "gatsby-plugin-react-i18next"
14
16
import { BsArrowCounterclockwise } from "react-icons/bs"
@@ -52,8 +54,7 @@ const FilterTab = ({
52
54
/>
53
55
)
54
56
55
- interface WalletFilterSidebarProps {
56
- showMobileSidebar : boolean
57
+ interface WalletFilterSidebarProps extends Omit < TabsProps , "children" > {
57
58
filters : FiltersType
58
59
resetWalletFilter : React . MutableRefObject < ( ) => void >
59
60
resetFilters : ( ) => void
@@ -64,74 +65,47 @@ interface WalletFilterSidebarProps {
64
65
updateFilterOptions : ( keys : any , value : any ) => void
65
66
}
66
67
67
- const WalletFilterSidebar = forwardRef <
68
- HTMLDivElement ,
69
- WalletFilterSidebarProps
70
- > (
71
- /**
72
- * Note: forwardRef here comes from React and not Chakra
73
- * Chakra's version throws error of `children` prop missing
74
- */
75
- ( props , ref ) => {
76
- const {
77
- showMobileSidebar,
78
- filters,
79
- resetWalletFilter,
80
- resetFilters,
81
- setFilters,
82
- selectedPersona,
83
- setSelectedPersona,
84
- updateFilterOption,
85
- updateFilterOptions,
86
- } = props
68
+ const WalletFilterSidebar : React . FC < WalletFilterSidebarProps > = ( {
69
+ filters,
70
+ resetWalletFilter,
71
+ resetFilters,
72
+ setFilters,
73
+ selectedPersona,
74
+ setSelectedPersona,
75
+ updateFilterOption,
76
+ updateFilterOptions,
77
+ top,
78
+ ...tabsProps
79
+ } ) => {
80
+ const theme = useTheme ( )
81
+ const { t } = useTranslation ( )
82
+ return (
83
+ < Tabs
84
+ bg = "background.base"
85
+ transition = "0.5s all"
86
+ sx = { {
87
+ scrollbarWidth : "thin" ,
88
+ scrollbarColor : `${ theme . colors . lightBorder } ${ theme . colors . background } ` ,
87
89
88
- const theme = useTheme ( )
89
- const { t } = useTranslation ( )
90
- return (
91
- < Tabs
92
- ref = { ref }
93
- maxW = "330px"
94
- overflowY = "scroll"
95
- bg = "background.base"
96
- transition = "0.5s all"
97
- zIndex = { 20 }
98
- borderTopRightRadius = "lg"
99
- pointerEvents = "auto"
100
- sx = { {
101
- scrollbarWidth : "thin" ,
102
- scrollbarColor : `${ theme . colors . lightBorder } ${ theme . colors . background } ` ,
103
-
104
- "::-webkit-scrollbar" : {
105
- width : 2 ,
106
- } ,
107
- "::-webkit-scrollbar-track" : {
108
- bg : "background.base" ,
109
- } ,
110
- "::-webkit-scrollbar-thumb" : {
111
- bgColor : "lightBorder" ,
112
- borderRadius : "base" ,
113
- border : "2px solid" ,
114
- borderColor : "background.base" ,
115
- } ,
116
- } }
117
- width = { { base : "90%" , sm : "350px" , lg : "full" } }
118
- height = { { base : "full" , lg : "auto" } }
119
- hideBelow = { ! showMobileSidebar ? "lg" : undefined }
120
- position = { {
121
- base : showMobileSidebar ? "absolute" : "relative" ,
122
- lg : "static" ,
123
- } }
124
- boxShadow = { {
125
- base : showMobileSidebar ? "0 800px 0 800px rgb(0 0 0 / 65%)" : "none" ,
126
- lg : "none" ,
127
- } }
128
- left = { showMobileSidebar ? 0 : "-400px" }
129
- >
90
+ "::-webkit-scrollbar" : {
91
+ width : 2 ,
92
+ } ,
93
+ "::-webkit-scrollbar-track" : {
94
+ bg : "background.base" ,
95
+ } ,
96
+ "::-webkit-scrollbar-thumb" : {
97
+ bgColor : "lightBorder" ,
98
+ borderRadius : "base" ,
99
+ border : "2px solid" ,
100
+ borderColor : "background.base" ,
101
+ } ,
102
+ } }
103
+ { ...tabsProps }
104
+ >
105
+ < Box position = "sticky" top = { top ?? 0 } >
130
106
< TabList
131
107
borderBottom = "1px solid"
132
108
borderBottomColor = "primary.base"
133
- position = "sticky"
134
- top = { 0 }
135
109
bg = "background.base"
136
110
sx = { {
137
111
".chakra-tabs__tab" : {
@@ -162,63 +136,63 @@ const WalletFilterSidebar = forwardRef<
162
136
)
163
137
</ FilterTab >
164
138
</ TabList >
165
- < Center
166
- as = "button"
167
- borderRadius = "base "
168
- color = "primary. base"
169
- fontSize = "xs "
170
- gap = { 1 }
171
- mx = "auto"
172
- my = "0.55rem "
173
- py = { 0.5 }
174
- px = { 1 }
175
- _hover = { {
176
- color : "selectHover" ,
177
- } }
178
- onClick = { ( ) => {
179
- resetFilters ( )
180
- resetWalletFilter . current ( )
181
- trackCustomEvent ( {
182
- eventCategory : "WalletFilterReset" ,
183
- eventAction : ` WalletFilterReset clicked` ,
184
- eventName : `reset filters ` ,
185
- } )
186
- } }
187
- >
188
- < Icon as = { BsArrowCounterclockwise } aria-hidden = "true" fontSize = "sm" / >
189
- { "Reset filters" . toUpperCase ( ) }
190
- </ Center >
191
- < TabPanels
192
- m = { 0 }
193
- sx = { {
194
- ".chakra-tabs__tab-panel" : {
195
- bg : "transparent" ,
196
- border : "none " ,
197
- p : 0 ,
198
- } ,
199
- } }
200
- >
201
- < TabPanel >
202
- < WalletFilterPersonas
203
- resetFilters = { resetFilters }
204
- setFilters = { setFilters }
205
- selectedPersona = { selectedPersona }
206
- setSelectedPersona = { setSelectedPersona }
207
- />
208
- </ TabPanel >
209
- < TabPanel >
210
- < WalletFilterProfile
211
- resetWalletFilter = { resetWalletFilter }
212
- filters = { filters }
213
- updateFilterOption = { updateFilterOption }
214
- updateFilterOptions = { updateFilterOptions }
215
- />
216
- </ TabPanel >
217
- </ TabPanels >
218
- </ Tabs >
219
- )
220
- }
221
- )
139
+ </ Box >
140
+ < Center
141
+ as = "button "
142
+ borderRadius = " base"
143
+ color = "primary.base "
144
+ fontSize = "xs"
145
+ gap = { 1 }
146
+ mx = "auto "
147
+ mt = "0.55rem"
148
+ py = { 0.5 }
149
+ px = { 1 }
150
+ _hover = { {
151
+ color : "selectHover" ,
152
+ } }
153
+ onClick = { ( ) => {
154
+ resetFilters ( )
155
+ resetWalletFilter . current ( )
156
+ trackCustomEvent ( {
157
+ eventCategory : " WalletFilterReset" ,
158
+ eventAction : `WalletFilterReset clicked ` ,
159
+ eventName : `reset filters` ,
160
+ } )
161
+ } }
162
+ >
163
+ < Icon as = { BsArrowCounterclockwise } aria-hidden = "true" fontSize = "sm" />
164
+ { "Reset filters" . toUpperCase ( ) }
165
+ </ Center >
166
+ < TabPanels
167
+ m = { 0 }
168
+ sx = { {
169
+ ".chakra-tabs__tab-panel" : {
170
+ bg : "transparent " ,
171
+ border : "none" ,
172
+ p : 0 ,
173
+ } ,
174
+ } }
175
+ >
176
+ < TabPanel >
177
+ < WalletFilterPersonas
178
+ resetFilters = { resetFilters }
179
+ setFilters = { setFilters }
180
+ selectedPersona = { selectedPersona }
181
+ setSelectedPersona = { setSelectedPersona }
182
+ / >
183
+ </ TabPanel >
184
+ < TabPanel >
185
+ < WalletFilterProfile
186
+ resetWalletFilter = { resetWalletFilter }
187
+ filters = { filters }
188
+ updateFilterOption = { updateFilterOption }
189
+ updateFilterOptions = { updateFilterOptions }
190
+ / >
191
+ </ TabPanel >
192
+ </ TabPanels >
193
+ </ Tabs >
194
+ )
195
+ }
222
196
223
197
WalletFilterSidebar . displayName = "WalletFilterSidebar"
224
198
0 commit comments