1
1
import React , { Component } from "react" ;
2
- import { Form } from "react-bootstrap" ;
2
+ import { Form , InputGroup , FormControl , Button } from "react-bootstrap" ;
3
3
import { connect } from "react-redux" ;
4
- import { fetchDataToFilter , fetchDataToServer } from "../actions/index" ;
4
+ import { fetchDataToFilter , fetchDataToServer , search } from "../actions/index" ;
5
5
class ShopSideBar extends Component {
6
+ constructor ( props ) {
7
+ super ( props ) ;
8
+ this . state = {
9
+ keyword : ""
10
+ } ;
11
+ }
6
12
filterByName = event => {
7
13
const filter = event . target . value ;
8
14
let name = "" ;
@@ -22,6 +28,15 @@ class ShopSideBar extends Component {
22
28
}
23
29
this . props . fetchDataToFilter ( name ) ;
24
30
} ;
31
+ onChange = e => {
32
+ this . setState ( {
33
+ keyword : e . target . value
34
+ } ) ;
35
+ } ;
36
+ onSearch = e => {
37
+ e . preventDefault ( ) ;
38
+ this . props . search ( this . state . keyword ) ;
39
+ } ;
25
40
render ( ) {
26
41
return (
27
42
< div >
@@ -65,123 +80,23 @@ class ShopSideBar extends Component {
65
80
</ li >
66
81
</ ul >
67
82
68
- < h4 className = "m-text14 p-b-32" > Filters</ h4 >
69
- < div className = "filter-price p-t-22 p-b-50 bo3" >
70
- < div className = "m-text15 p-b-17" > Price</ div >
71
- < div className = "wra-filter-bar" >
72
- < div id = "filter-bar" />
73
- </ div >
74
- < div className = "flex-sb-m flex-w p-t-16" >
75
- < div className = "w-size11" >
76
- < button className = "flex-c-m size4 bg7 bo-rad-15 hov1 s-text14 trans-0-4" >
77
- Filter
78
- </ button >
79
- </ div >
80
- < div className = "s-text3 p-t-10 p-b-10" >
81
- Range: $< span id = "value-lower" > 610</ span > - $
82
- < span id = "value-upper" > 980</ span >
83
- </ div >
84
- </ div >
85
- </ div >
86
- < div className = "filter-color p-t-22 p-b-50 bo3" >
87
- < div className = "m-text15 p-b-12" > Color</ div >
88
- < ul className = "flex-w" >
89
- < li className = "m-r-10" >
90
- < input
91
- className = "checkbox-color-filter"
92
- id = "color-filter1"
93
- type = "checkbox"
94
- name = "color-filter1"
95
- />
96
- < label
97
- className = "color-filter color-filter1"
98
- htmlFor = "color-filter1"
99
- />
100
- </ li >
101
- < li className = "m-r-10" >
102
- < input
103
- className = "checkbox-color-filter"
104
- id = "color-filter2"
105
- type = "checkbox"
106
- name = "color-filter2"
107
- />
108
- < label
109
- className = "color-filter color-filter2"
110
- htmlFor = "color-filter2"
111
- />
112
- </ li >
113
- < li className = "m-r-10" >
114
- < input
115
- className = "checkbox-color-filter"
116
- id = "color-filter3"
117
- type = "checkbox"
118
- name = "color-filter3"
119
- />
120
- < label
121
- className = "color-filter color-filter3"
122
- htmlFor = "color-filter3"
123
- />
124
- </ li >
125
- < li className = "m-r-10" >
126
- < input
127
- className = "checkbox-color-filter"
128
- id = "color-filter4"
129
- type = "checkbox"
130
- name = "color-filter4"
131
- />
132
- < label
133
- className = "color-filter color-filter4"
134
- htmlFor = "color-filter4"
135
- />
136
- </ li >
137
- < li className = "m-r-10" >
138
- < input
139
- className = "checkbox-color-filter"
140
- id = "color-filter5"
141
- type = "checkbox"
142
- name = "color-filter5"
143
- />
144
- < label
145
- className = "color-filter color-filter5"
146
- htmlFor = "color-filter5"
147
- />
148
- </ li >
149
- < li className = "m-r-10" >
150
- < input
151
- className = "checkbox-color-filter"
152
- id = "color-filter6"
153
- type = "checkbox"
154
- name = "color-filter6"
155
- />
156
- < label
157
- className = "color-filter color-filter6"
158
- htmlFor = "color-filter6"
159
- />
160
- </ li >
161
- < li className = "m-r-10" >
162
- < input
163
- className = "checkbox-color-filter"
164
- id = "color-filter7"
165
- type = "checkbox"
166
- name = "color-filter7"
167
- />
168
- < label
169
- className = "color-filter color-filter7"
170
- htmlFor = "color-filter7"
171
- />
172
- </ li >
173
- </ ul >
174
- </ div >
175
- < div className = "search-product pos-relative bo4 of-hidden" >
176
- < input
177
- className = "s-text7 size6 p-l-23 p-r-50"
178
- type = "text"
179
- name = "search-product"
180
- placeholder = "Search Products..."
181
- />
182
- < button className = "flex-c-m size5 ab-r-m color2 color0-hov trans-0-4" >
183
- < i className = "fs-12 fa fa-search" aria-hidden = "true" />
184
- </ button >
83
+ < h4 className = "m-text14 p-b-32" > Search</ h4 >
84
+ < div className = "filter-price p-t-22 p-b-50" >
85
+ < InputGroup className = "mb-3" >
86
+ < FormControl
87
+ placeholder = "Search"
88
+ aria-label = "Search"
89
+ aria-describedby = "basic-addon2"
90
+ name = "keyword"
91
+ value = { this . state . keyword }
92
+ onChange = { e => this . onChange ( e ) }
93
+ />
94
+ < InputGroup . Append >
95
+ < Button variant = "outline-secondary" onClick = { this . onSearch } >
96
+ Search
97
+ </ Button >
98
+ </ InputGroup . Append >
99
+ </ InputGroup >
185
100
</ div >
186
101
</ div >
187
102
</ div >
@@ -195,6 +110,9 @@ const mapDispatchToProps = (dispatch, props) => {
195
110
} ,
196
111
fetchDataToServer : ( ) => {
197
112
dispatch ( fetchDataToServer ( ) ) ;
113
+ } ,
114
+ search : keyword => {
115
+ dispatch ( search ( keyword ) ) ;
198
116
}
199
117
} ;
200
118
} ;
0 commit comments