forked from jonas-wedemeyer/envolution-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFilterForm.jsx
More file actions
125 lines (117 loc) · 3.49 KB
/
FilterForm.jsx
File metadata and controls
125 lines (117 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import React, { useState } from 'react';
import { useDispatch } from 'react-redux';
import { setFilters } from '../redux/reducers/projects/actions';
import {
Answers,
Fieldset,
FilterWrapper,
QuestionTitle,
SubmitButton,
} from '../styled-components';
function FilterForm() {
const [availability, setAvailability] = useState(null);
const [category, setCategory] = useState({});
const [isHidden, setVisibility] = useState(true);
const dispatch = useDispatch();
const toggleComponent = () => {
setVisibility(!isHidden);
};
const handleChangeAvailability = (e) => {
// update local state
setAvailability(e.target.value);
};
const handleChangeCategory = (e) => {
// update local state
setCategory({
...category,
[e.target.name]: e.target.checked || undefined,
});
};
const handleSubmit = (e) => {
// dispatch action to update global state
e.preventDefault();
dispatch(setFilters(availability, category));
};
return (
<FilterWrapper>
<form onSubmit={handleSubmit}>
<Fieldset>
<fieldset id='availability'>
<QuestionTitle>Availability</QuestionTitle>
<label htmlFor='availability'>
<input
type='radio'
name='short'
checked={availability === 'short'}
value='short'
onChange={handleChangeAvailability}
/>
Short Term
</label>
<label htmlFor='availability'>
<input
type='radio'
name='long'
checked={availability === 'long'}
value='long'
onChange={handleChangeAvailability}
/>
Long Term
</label>
</fieldset>
</Fieldset>
<Fieldset>
<fieldset id='category'>
<QuestionTitle>Categories</QuestionTitle>
<Answers>
<label htmlFor='ocean'>
<input
type='checkbox'
name='Ocean'
onChange={handleChangeCategory}
/>
Ocean Preservation
</label>
<label htmlFor='land'>
<input
type='checkbox'
name='Land'
onChange={handleChangeCategory}
/>
Land Preservation
</label>
<label htmlFor='air'>
<input
type='checkbox'
name='Air'
onChange={handleChangeCategory}
/>
Air Preservation
</label>
<label htmlFor='wildlife'>
<input
type='checkbox'
name='Wildlife'
onChange={handleChangeCategory}
/>
Wildlife Preservation
</label>
<label htmlFor='forest'>
<input
type='checkbox'
name='Forest'
onChange={handleChangeCategory}
/>
Forest Preservation
</label>
</Answers>
</fieldset>
</Fieldset>
<SubmitButton isHidden={!isHidden} onClick={toggleComponent}>
Submit
</SubmitButton>
</form>
</FilterWrapper>
);
}
export default FilterForm;