@@ -10,6 +10,28 @@ const GRANULARITY_OPTS = [
1010 { value : "annually" , label : "Annually" } ,
1111] ;
1212
13+ function FilterField ( { label, children, isDark } ) {
14+ const labelStyle = {
15+ color : isDark ? "#e0e0e0" : "#111111" ,
16+ display : "flex" ,
17+ flexDirection : "column" ,
18+ fontSize : "0.9rem" ,
19+ } ;
20+
21+ return (
22+ < label style = { labelStyle } >
23+ < span > { label } </ span >
24+ { children }
25+ </ label >
26+ ) ;
27+ }
28+
29+ FilterField . propTypes = {
30+ label : PropTypes . string . isRequired ,
31+ children : PropTypes . node . isRequired ,
32+ isDark : PropTypes . bool . isRequired ,
33+ } ;
34+
1335function JobAnalyticsFilters ( { filters, setFilters } ) {
1436 const [ roleOptions , setRoleOptions ] = useState ( [ "All" ] ) ;
1537 const [ loadingRoles , setLoadingRoles ] = useState ( false ) ;
@@ -98,13 +120,6 @@ function JobAnalyticsFilters({ filters, setFilters }) {
98120
99121 const nonTotalsDisabled = filters . dateMode !== "Custom" ;
100122
101- const labelStyle = {
102- color : isDark ? "#e0e0e0" : "#111111" ,
103- display : "flex" ,
104- flexDirection : "column" ,
105- fontSize : "0.9rem" ,
106- } ;
107-
108123 const inputStyle = {
109124 backgroundColor : isDark ? "#1b2a41" : "#ffffff" ,
110125 color : isDark ? "#e0e0e0" : "#111111" ,
@@ -115,8 +130,7 @@ function JobAnalyticsFilters({ filters, setFilters }) {
115130
116131 return (
117132 < div style = { { display : "flex" , flexWrap : "wrap" , gap : "1rem" } } >
118- < label style = { labelStyle } >
119- < span > Dates</ span >
133+ < FilterField label = "Dates" isDark = { isDark } >
120134 < select
121135 name = "dateMode"
122136 value = { filters . dateMode }
@@ -126,36 +140,33 @@ function JobAnalyticsFilters({ filters, setFilters }) {
126140 < option value = "All" > All</ option >
127141 < option value = "Custom" > Custom</ option >
128142 </ select >
129- </ label >
143+ </ FilterField >
130144
131145 { filters . dateMode === "Custom" && (
132146 < >
133- < label style = { labelStyle } >
134- < span > Start Date</ span >
147+ < FilterField label = "Start Date" isDark = { isDark } >
135148 < input
136149 type = "date"
137150 name = "startDate"
138151 value = { filters . startDate }
139152 onChange = { onChange }
140153 style = { inputStyle }
141154 />
142- </ label >
155+ </ FilterField >
143156
144- < label style = { labelStyle } >
145- < span > End Date</ span >
157+ < FilterField label = "End Date" isDark = { isDark } >
146158 < input
147159 type = "date"
148160 name = "endDate"
149161 value = { filters . endDate }
150162 onChange = { onChange }
151163 style = { inputStyle }
152164 />
153- </ label >
165+ </ FilterField >
154166 </ >
155167 ) }
156168
157- < label style = { labelStyle } >
158- < span > Role</ span >
169+ < FilterField label = "Role" isDark = { isDark } >
159170 < select
160171 name = "roles"
161172 value = { filters . roles }
@@ -169,10 +180,9 @@ function JobAnalyticsFilters({ filters, setFilters }) {
169180 </ option >
170181 ) ) }
171182 </ select >
172- </ label >
183+ </ FilterField >
173184
174- < label style = { labelStyle } >
175- < span > Granularity</ span >
185+ < FilterField label = "Granularity" isDark = { isDark } >
176186 < select
177187 name = "granularity"
178188 value = { filters . granularity }
@@ -189,7 +199,7 @@ function JobAnalyticsFilters({ filters, setFilters }) {
189199 </ option >
190200 ) ) }
191201 </ select >
192- </ label >
202+ </ FilterField >
193203 </ div >
194204 ) ;
195205}
@@ -205,4 +215,4 @@ JobAnalyticsFilters.propTypes = {
205215 setFilters : PropTypes . func . isRequired ,
206216} ;
207217
208- export default JobAnalyticsFilters ;
218+ export default JobAnalyticsFilters ;
0 commit comments