Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@leofab86
leofab86 / getSearchResults.js
Last active May 17, 2019 05:10
Fuzzy search autocomplete v1.0.0
getSearchResults = () => {
const {searchTerm} = this.state;
return searchTerm ? this.searchEngine.search(searchTerm) : []
// searchEngine.search is the expensive search algorithm
};
@leofab86
leofab86 / autoComplete-snippet.js
Last active May 17, 2019 05:51
Fuzzy search autocomplete v1.0.0
render () {
return (
<Autocomplete
value={this.state.searchTerm}
items={this.getSearchResults()}
renderMenu={this.reactVirtualizedList}
renderItem={this.renderItem}
getItemValue={ item => item.name }
onChange={(e, value) => this.setState({searchTerm: value})}
/>
@leofab86
leofab86 / server.js
Last active May 19, 2019 02:21
Fuzzy search autocomplete v1.2.0
app.route('/prep-staging/testSearch')
.post(bodyParser.json(), (req, res) => {
const {data, searchTerm} = req.body
const engine = new SearchEngine(data)
const searchResults = engine.search(searchTerm)
res.send({searchResult})
@leofab86
leofab86 / searchResults-workerArray.js
Last active May 20, 2019 12:04
Fuzzy search autocomplete v1.2.4
//searchResults.js
export default class SearchResults extends React.Component {
constructor (props) {
super();
this.state = {
searchResults: [],
}
//initiate the worker array:
this.workerArray = new WorkerArrayController({
@leofab86
leofab86 / searchResults-componentDidUpdate.js
Last active May 20, 2019 12:10
Fuzzy search autocomplete v1.1.0
//searchResults.js
componentDidUpdate(prevProps) {
const {searchTerm, searchEngine} = this.props;
if(searchTerm && searchTerm !== prevProps.searchTerm) {
this.setState({
searchResults: searchEngine.search(searchTerm)
})
}
}
@leofab86
leofab86 / autocomplete-split-components.js
Last active May 20, 2019 12:11
Fuzzy search autocomplete v1.1.0
//autocomplete.js
render () {
return (
<div>
<input
onChange={ e => this.setState({searchTerm: e.target.value})}
value={this.state.searchTerm}/>
<SearchResults
@leofab86
leofab86 / autocomplete.js
Last active May 20, 2019 12:11
Fuzzy search autosuggest v1.2.0
//autocomplete.js
render () {
return (
<div>
<input
onChange={ e => this.setState({searchTerm: e.target.value})}
value={this.state.searchTerm}/>
<SearchResults
searchEngine={this.props.searchEngine}
export function useClickOutside ({container, handler, dependencies, addListenerConditional = true}) {
useEffect(() => {
if(addListenerConditional) {
document.addEventListener('mousedown', handleClickOutside);
}
return () => document.removeEventListener('mousedown', handleClickOutside)
}, dependencies);
function handleClickOutside (e) {
if(!container.current.contains(e.target)) {
@leofab86
leofab86 / searchResults.js
Last active May 23, 2019 04:38
Fuzzy search autocomplete v1.2.2
//searchResults.js
export default class SearchResults extends React.Component {
constructor (props) {
super();
this.state = {
searchResults: [],
}
//initiate the webworker:
this.webWorker = new Worker('...path to webWorker.js')
@leofab86
leofab86 / webWorker-confirm.js
Last active May 23, 2019 16:32
Fuzzy search autocomplete v1.2.2
//webWorker.js
self.importScripts('...the search engine script, provides the SearchEngine constructor');
let searchEngine;
let cache = {}
function initiateSearchEngine (data) {
searchEngine = new SearchEngine(data);
cache = {};
}