@samitouri / QOS-React-2 / commits / 29a6bf2a7b

Feature: tweak search behaviour (#353)

Merge PR #353 from @fanny This change changes search beahvior to initially select the result nearest the currently selected element (rather than selecting the first result in the set).

Fanny committed Jul 27, 2019 at 13:04 UTC 29a6bf2a7bb07be2bace750409afc08a8171b9d7
1 file changed +14 -9
src/devtools/views/Components/TreeContext.js
+14 -9
@@ -277,7 +277,6 @@ function reduceSearchState(store: Store, state: State, action: Action): State {
277 selectedElementIndex,
278 } = state;
279
280 - const prevSearchIndex = searchIndex;
280 const prevSearchText = searchText;
281 const numPrevSearchResults = searchResults.length;
282
@@ -380,15 +379,11 @@ function reduceSearchState(store: Store, state: State, action: Action): State {
379 store.roots.forEach(rootID => {
380 recursivelySearchTree(store, rootID, regExp, searchResults);
381 });
383 -
382 if (searchResults.length > 0) {
385 - if (prevSearchIndex === null) {
386 - searchIndex = 0;
383 + if (selectedElementID !== null) {
384 + searchIndex = getNearestResult(searchResults, selectedElementID);
385 } else {
388 - searchIndex = Math.min(
389 - ((prevSearchIndex: any): number),
390 - searchResults.length - 1
391 - );
386 + searchIndex = 0;
387 }
388 }
389 }
@@ -760,7 +755,6 @@ function TreeContextController({
755 </TreeStateContext.Provider>
756 );
757 }
763 -
758 function recursivelySearchTree(
759 store: Store,
760 elementID: number,
@@ -780,4 +774,15 @@ function recursivelySearchTree(
774 );
775 }
776
777 +function getNearestResult(
778 + searchResults: Array<number>,
779 + selectedElementID: number | null
780 +) {
781 + const result = searchResults.findIndex(
782 + value => value >= ((selectedElementID: any): number)
783 + );
784 +
785 + return result === -1 ? 0 : result;
786 +}
787 +
788 export { TreeDispatcherContext, TreeStateContext, TreeContextController };