Skip to content

Commit 798c873

Browse files
authored
feat: 🎸 added search indexing (#123)
this will allow consumers to specify a custom indexer that will allow them to be in full control over the rendering pipeline
1 parent 2db0eed commit 798c873

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ export interface FilteringContainerProps {
103103
selectedGroup?: string;
104104
groupRenderer?: React.StatelessComponent<GroupRendererProps> | React.Component<GroupRendererProps>;
105105
onSelectedGroupChange?: (c: string) => void;
106+
indexSearch: (searchTerm: string, nodes: FlattenedNode[]) => (node: FlattenedNode) => boolean;
106107
}
107108

108109
export class FilteringContainer extends React.Component<FilteringContainerProps> {}

src/FilteringContainer.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import DefaultGroupRenderer from './filtering/DefaultGroupRenderer';
77
import {Node} from './shapes/nodeShapes';
88
import {filterNodes} from './selectors/filtering';
99

10-
const nameMatchesSearchTerm = searchTerm => ({name}) => {
10+
const indexByName = searchTerm => ({name}) => {
1111
const upperCaseName = name.toUpperCase();
1212
const upperCaseSearchTerm = searchTerm.toUpperCase();
1313

@@ -31,6 +31,7 @@ export default class FilteringContainer extends React.Component {
3131
static defaultProps = {
3232
debouncer: debounce,
3333
groupRenderer: DefaultGroupRenderer,
34+
indexSearch: indexByName,
3435
};
3536

3637
constructor(props) {
@@ -60,6 +61,7 @@ export default class FilteringContainer extends React.Component {
6061
selectedGroup,
6162
groupRenderer: GroupRenderer,
6263
onSelectedGroupChange,
64+
indexSearch,
6365
} = this.props;
6466

6567
const relevantNodes =
@@ -68,7 +70,7 @@ export default class FilteringContainer extends React.Component {
6870
: {nodes, nodeParentMappings: {}};
6971

7072
const {nodes: filteredNodes, nodeParentMappings} = filterTerm
71-
? filterNodes(nameMatchesSearchTerm(filterTerm), relevantNodes.nodes)
73+
? filterNodes(indexSearch(filterTerm, relevantNodes.nodes), relevantNodes.nodes)
7274
: relevantNodes;
7375

7476
return (
@@ -91,4 +93,5 @@ FilteringContainer.propTypes = {
9193
selectedGroup: PropTypes.string,
9294
groupRenderer: PropTypes.func,
9395
onSelectedGroupChange: PropTypes.func,
96+
indexSearch: PropTypes.func,
9497
};

0 commit comments

Comments
 (0)