1.3.0 • Published 3 years ago

react-fuzzy v1.3.0

Weekly downloads
71,617
License
MIT
Repository
github
Last release
3 years ago

react-fuzzy

fuzzy search in React

Installation

npm install --save react-fuzzy

Basic Usage

const list = [{
  id: 1,
  title: 'The Great Gatsby',
  author: 'F. Scott Fitzgerald'
}, {
  id: 2,
  title: 'The DaVinci Code',
  author: 'Dan Brown'
}, {
  id: 3,
  title: 'Angels & Demons',
  author: 'Dan Brown'
}];

<FuzzySearch
      list={list}
      keys={['author', 'title']}
      width={430}
      onSelect={(newSelectedItem) => {
        // Local state setter defined elsewhere
        setSelectedItem(newSelectedItem)
      }}
    />

Custom Result Template

<FuzzySearch
  list={list}
  keys={['author', 'title']}
  width={430}
  onSelect={(newSelectedItem) => {
    // Local state setter defined elsewhere
    setSelectedItem(newSelectedItem)
  }}
  resultsTemplate={(props, state, styles, clickHandler) => {
    return state.results.map((val, i) => {
      const style = state.selectedIndex === i ? styles.selectedResultStyle : styles.resultsStyle;
      return (
        <div
          key={i}
          style={style}
          onClick={() => clickHandler(i)}
        >
          {val.title}
          <span style={{ float: 'right', opacity: 0.5 }}>by {val.author}</span>
        </div>
      );
    });
  }}
/>

Options

attributedefaultdescription
caseSensitivefalseIndicates whether comparisons should be case sensitive.
classNamenullgive a custom class name to the root element
inputProps{}Props passed directly to the input element. i.e. defaultValue, onChange, etc.
inputStyle{}Styles passed directly to the input element.
inputWrapperStyle{}Styles passed directly to the input wrapper div.
isDropdownfalseHide the result list on blur.
listItemStyle{}Styles passed to each item in the dropdown list.
listWrapperStyle{}Styles passed directly to the dropdown wrapper.
selectedListItemStyle{}Styles passed directly to current 'active' item.
width430width of the fuzzy searchbox
distance100Determines how close the match must be to the fuzzy location (specified by location). An exact letter match which is distance characters away from the fuzzy location would score as a complete mismatch. A distance of 0 requires the match be at the exact location specified, a distance of 1000 would require a perfect match to be within 800 characters of the location to be found using a threshold of 0.8.
idnullThe name of the identifier property. If specified, the returned result will be a list of the items' identifiers, otherwise it will be a list of the items.
include[]An array of values that should be included from the searcher's output. When this array contains elements, each result in the list will be of the form { item: ..., include1: ..., include2: ... }. Values you can include are score, matches. Eg: { include: ['score', 'matches' ] }
maxPatternLength32The maximum length of the pattern. The longer the pattern, the more intensive the search operation will be. Whenever the pattern exceeds the maxPatternLength, an error will be thrown.
onSelectnoopFunction to be executed on selection of any result.
keyForDisplayNametitleThe key which should be used for list item text.
keysallArrayList of properties that will be searched. This also supports nested properties.
listnullArray of properties to be filtered.
maxResults10Max number of results to show at once.
placeholder'Search'Placeholder of the searchbox
resultsTemplateFuncTemplate of the dropdown divs
shouldShowDropdownAtStartfalseAllow the searchbox to act as a filter dropdown with initial values. Yields all results when the search value is blank.
shouldSorttrueWhether to sort the result list, by score.
sortFnArray.prototype.sortThe function that is used for sorting the result list.
threshold0.6At what point does the match algorithm give up. A threshold of 0.0 requires a perfect match (of both letters and location), a threshold of 1.0 would match anything.
tokenizefalseWhen true, the search algorithm will search individual words and the full string, computing the final score as a function of both. Note that when tokenize is true, the threshold, distance, and location are inconsequential for individual tokens.
verbosefalseWill print to the console. Useful for debugging.

License

MIT @ Ritesh Kumar

1.3.0

3 years ago

1.2.0

3 years ago

1.1.0

4 years ago

1.0.0

5 years ago

0.5.2

6 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.3

8 years ago

0.2.3

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago

0.0.0

8 years ago