@@ -7,17 +7,15 @@ import InputGroup from '../InputGroup/InputGroup';
77import Menu from '../Menu/Menu' ;
88import Popover from '../Popover/Popover' ;
99import PropTypes from 'prop-types' ;
10- import React , { Component } from 'react' ;
10+ import React , { PureComponent } from 'react' ;
1111
12- class SearchInput extends Component {
12+ class SearchInput extends PureComponent {
1313 constructor ( props ) {
1414 super ( props ) ;
1515 this . state = {
1616 isExpanded : false ,
1717 searchExpanded : false ,
18- value : props . inputProps ?. value ? props . inputProps . value : '' ,
19- searchList : props . searchList ,
20- filteredResult : props . inputProps ?. value ? this . filterList ( props . searchList , props . inputProps . value ) : props . searchList
18+ value : props . inputProps ?. value ? props . inputProps . value : ''
2119 } ;
2220 }
2321
@@ -32,26 +30,24 @@ class SearchInput extends Component {
3230 } ;
3331
3432 handleListItemClick = ( event , item ) => {
35- this . setState ( ( prevState ) => ( {
33+ this . setState ( {
3634 value : item . text ,
3735 isExpanded : false ,
38- searchExpanded : false ,
39- filteredResult : this . filterList ( prevState . searchList , item . text )
40- } ) , ( ) => {
36+ searchExpanded : false
37+ } , ( ) => {
4138 item ?. callback ( ) ;
4239 this . props . onSelect ( event , item ) ;
4340 } ) ;
4441 } ;
4542
4643 handleChange = event => {
4744 let filteredResult ;
48- if ( this . state . searchList ) {
49- filteredResult = this . filterList ( this . state . searchList , event . target . value ) ;
45+ if ( this . props . searchList ) {
46+ filteredResult = this . filterList ( this . props . searchList , event . target . value ) ;
5047 }
5148 this . setState ( {
5249 value : event . target . value ,
53- isExpanded : true ,
54- filteredResult : filteredResult
50+ isExpanded : true
5551 } , ( ) => {
5652 this . props . onChange ( event , filteredResult ) ;
5753 } ) ;
@@ -90,9 +86,7 @@ class SearchInput extends Component {
9086 this . setState ( {
9187 isExpanded : false ,
9288 searchExpanded : false ,
93- value : '' ,
94- searchList : this . props . searchList ,
95- filteredResult : this . props . searchList
89+ value : ''
9690 } ) ;
9791 }
9892 } ;
@@ -135,12 +129,12 @@ class SearchInput extends Component {
135129 [ `is-${ validationState ?. state } ` ] : validationState ?. state
136130 }
137131 ) : inputGroupClasses ;
138-
132+ let filteredResult = this . state . value && this . props . searchList ? this . filterList ( this . props . searchList , this . state . value ) : this . props . searchList ;
139133 const popoverBody = (
140134 < Menu disableStyles = { disableStyles } >
141135 < Menu . List { ...listProps } >
142- { this . state . filteredResult && this . state . filteredResult . length > 0 ? (
143- this . state . filteredResult . map ( ( item , index ) => {
136+ { filteredResult && filteredResult . length > 0 ? (
137+ filteredResult . map ( ( item , index ) => {
144138 return (
145139 < Menu . Item
146140 key = { index }
@@ -166,11 +160,11 @@ class SearchInput extends Component {
166160 body = {
167161 ( < >
168162 { validationState &&
169- < FormMessage
170- disableStyles = { disableStyles }
171- type = { validationState . state } >
172- { validationState . text }
173- </ FormMessage >
163+ < FormMessage
164+ disableStyles = { disableStyles }
165+ type = { validationState . state } >
166+ { validationState . text }
167+ </ FormMessage >
174168 }
175169 { popoverBody }
176170 </ > ) }
0 commit comments