Simple React component for a search input, providing a filter function.
npm install react-search-input --save
import SearchInput, {createFilter} from 'react-search-input'
import emails from './mails'
const KEYS_TO_FILTERS = ['user.name', 'subject', 'dest.name']
const App = React.createClass({
getInitialState () {
return { searchTerm: '' }
},
render () {
const filteredEmails = emails.filter(createFilter(this.state.searchTerm, KEYS_TO_FILTERS))
return (
<div>
<SearchInput className="search-input" onChange={this.searchUpdated} />
{filteredEmails.map(email => {
return (
<div className="mail" key={email.id}>
<div className="from">{email.user.name}</div>
<div className="subject">{email.subject}</div>
</div>
)
})}
</div>
)
},
searchUpdated (term) {
this.setState({searchTerm: term})
}
})
All props are optional. All other props will be passed to the DOM input.
Class of the Component (in addition of search-input
).
Function called when the search term is changed (will be passed as an argument).
Either an [String]
or a String
. Will be use by the filter
method if no argument is passed there.
Reduce call frequency to the onChange
function (in ms). Default is 200
.
Define if the search should be case sensitive. Default is false
Define if the search should be fuzzy. Default is false
Define the value of the input.
Return a function which can be used to filter an array. keys
can be String
, [String]
or null
.
If an array keys
is an array, the function will return true if at least one of the keys of the item matches the serch term.
Return a function which can be used to filter an array. searchTerm
can be a regex
or a String
. keys
can be String
, [String]
or null
.
If an array keys
is an array, the function will return true if at least one of the keys of the item matches the serch term.
Look at react-search-input.css for an idea on how to style this component.
MIT Licensed