11import React from "react" ;
22import PropTypes from "prop-types" ;
3+ import { YEARS } from "../../../constants" ;
34
45const Filter = ( { filters, setFilters } ) => (
5- < div className = "filter" >
6- < div className = "filterWrapper" >
7- < h3 > Filters</ h3 >
8- < div className = "filterLabel" > Launch Year</ div >
9- < hr />
10- < div className = "filters" >
11- { Array ( 15 )
12- . fill ( )
13- . map ( ( _ , i ) => (
14- < button
6+ < div className = "filter" >
7+ < div className = "filterWrapper" >
8+ < h3 > Filters</ h3 >
9+ < div className = "filterLabel" > Launch Year</ div >
10+ < hr />
11+ < div className = "filters" >
12+ { YEARS
13+ . map ( ( item , i ) => (
14+ < button
1515 type = "button"
16- onClick = { ( ) => {
17- setFilters ( { ...filters , ...{ launch_year : 2006 + i } } ) ;
18- } }
19- aria-label = { ( 2006 + i ) . toString ( ) }
20- className = { `filterItem ${
21- parseInt ( filters . launch_year ) === 2006 + i ? "selected" : ""
16+ onClick = { ( ) => {
17+ setFilters ( { ...filters , ...{ launch_year : item } } ) ;
18+ } }
19+ aria-label = { ( item ) . toString ( ) }
20+ className = { `filterItem ${ parseInt ( filters . launch_year ) === item ? "selected" : ""
2221 } `}
23- key = { `year-${ i } ` } >
24- { 2006 + i }
25- </ button >
26- ) ) }
27- </ div >
22+ key = { `year-${ i } ` } >
23+ { item }
24+ </ button >
25+ ) ) }
2826 </ div >
29- < div className = "filterWrapper" >
30- < div className = "filterLabel" > Successful Launch</ div >
31- < hr />
32- < div className = "filters" >
33- < button
27+ </ div >
28+ < div className = "filterWrapper" >
29+ < div className = "filterLabel" > Successful Launch</ div >
30+ < hr />
31+ < div className = "filters" >
32+ < button
3433 type = "button"
35- className = { `filterItem ${
36- filters . launch_success === "true" || filters . launch_success === true
37- ? "selected"
38- : ""
34+ className = { `filterItem ${ filters . launch_success === "true" || filters . launch_success === true
35+ ? "selected"
36+ : ""
3937 } `}
40- aria-label = "launch-true"
41- onClick = { ( ) => {
42- setFilters ( { ...filters , ...{ launch_success : true } } ) ;
43- } } >
44- True
38+ aria-label = "launch-true"
39+ onClick = { ( ) => {
40+ setFilters ( { ...filters , ...{ launch_success : true } } ) ;
41+ } } >
42+ True
4543 </ button >
46- < button
44+ < button
4745 type = "button"
48- className = { `filterItem ${
49- filters . launch_success === false ||
50- filters . launch_success === "false"
51- ? "selected"
52- : ""
46+ className = { `filterItem ${ filters . launch_success === false ||
47+ filters . launch_success === "false"
48+ ? "selected"
49+ : ""
5350 } `}
54- aria-label = "launch-false"
55- onClick = { ( ) => {
56- setFilters ( { ...filters , ...{ launch_success : false } } ) ;
57- } } >
58- False
51+ aria-label = "launch-false"
52+ onClick = { ( ) => {
53+ setFilters ( { ...filters , ...{ launch_success : false } } ) ;
54+ } } >
55+ False
5956 </ button >
60- </ div >
6157 </ div >
62- < div className = "filterWrapper" >
63- < div className = "filterLabel" > Successful Landing</ div >
64- < hr />
65- < div className = "filters" >
66- < button
58+ </ div >
59+ < div className = "filterWrapper" >
60+ < div className = "filterLabel" > Successful Landing</ div >
61+ < hr />
62+ < div className = "filters" >
63+ < button
6764 type = "button"
68- className = { `filterItem ${
69- filters . land_success === "true" || filters . land_success === true
70- ? "selected"
71- : ""
65+ className = { `filterItem ${ filters . land_success === "true" || filters . land_success === true
66+ ? "selected"
67+ : ""
7268 } `}
73- aria-label = "land-true"
74- onClick = { ( ) => {
75- setFilters ( { ...filters , ...{ land_success : true } } ) ;
76- } } >
77- True
69+ aria-label = "land-true"
70+ onClick = { ( ) => {
71+ setFilters ( { ...filters , ...{ land_success : true } } ) ;
72+ } } >
73+ True
7874 </ button >
79- < button
75+ < button
8076 type = "button"
81- className = { `filterItem ${
82- filters . land_success === false || filters . land_success === "false"
83- ? "selected"
84- : ""
77+ className = { `filterItem ${ filters . land_success === false || filters . land_success === "false"
78+ ? "selected"
79+ : ""
8580 } `}
86- aria-label = "land-false"
87- onClick = { ( ) => {
88- setFilters ( { ...filters , ...{ land_success : false } } ) ;
89- } } >
90- False
81+ aria-label = "land-false"
82+ onClick = { ( ) => {
83+ setFilters ( { ...filters , ...{ land_success : false } } ) ;
84+ } } >
85+ False
9186 </ button >
92- </ div >
93- < div className = "filterReset" >
94- < button
87+ </ div >
88+ < div className = "filterReset" >
89+ < button
9590 type = "button"
96- className = "filterItem"
97- aria-label = "reset"
98- onClick = { ( ) => {
99- setFilters ( { limit : 100 } ) ;
100- } } >
101- Reset
91+ className = "filterItem"
92+ aria-label = "reset"
93+ onClick = { ( ) => {
94+ setFilters ( { limit : 100 } ) ;
95+ } } >
96+ Reset
10297 </ button >
103- </ div >
10498 </ div >
10599 </ div >
106- ) ;
100+ </ div >
101+ ) ;
107102
108103Filter . propTypes = {
109104 filters : PropTypes . shape ( {
@@ -112,7 +107,7 @@ Filter.propTypes = {
112107 PropTypes . string ,
113108 PropTypes . bool ,
114109 ] ) ,
115- launch_success :PropTypes . oneOfType ( [ PropTypes . string , PropTypes . bool ] ) ,
110+ launch_success : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . bool ] ) ,
116111 limit : PropTypes . oneOfType ( [ PropTypes . string , PropTypes . bool ] ) ,
117112 } ) ,
118113 setFilters : PropTypes . func ,
0 commit comments