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 };