Skip to content

Commit e975744

Browse files
authored
Clear all search results on search when opened programmatically (#1085)
* Clear search results if re-opened from outside * Update * FIx
1 parent ec392f4 commit e975744

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

packages/core/src/docs/06-search.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ const onSearchClose = React.useCallback(() => setShowSearch(false), []);
182182
return <DataEditor {...rest} showSearch={showSearch} getCellsForSelection={true} onSearchClose={onSearchClose} />
183183
`}
184184
</Highlight>
185-
<button onClick={() => setShowSearch(true)}>Show Search</button>
185+
<button onClick={() => setShowSearch(prev => !prev)}>Show Search</button>
186186
<Wrapper height={200}>
187187
<DataEditor
188188
showSearch={showSearch}

packages/core/src/internal/data-grid-search/data-grid-search.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,12 @@ const DataGridSearch: React.FunctionComponent<DataGridSearchProps> = p => {
152152
if (searchHandle.current !== undefined) {
153153
window.cancelAnimationFrame(searchHandle.current);
154154
searchHandle.current = undefined;
155+
}
156+
// Always abort and replace the controller to ensure a fresh, non-aborted signal
157+
if (abortControllerRef.current !== undefined) {
155158
abortControllerRef.current.abort();
156159
}
160+
abortControllerRef.current = new AbortController();
157161
}, []);
158162

159163
const cellYOffsetRef = React.useRef(cellYOffset);
@@ -295,10 +299,23 @@ const DataGridSearch: React.FunctionComponent<DataGridSearchProps> = p => {
295299

296300
React.useEffect(() => {
297301
if (showSearch && searchInputRef.current !== null) {
302+
// Reset search whenever it gets shown:
298303
setSearchString("");
304+
setSearchStatus(undefined);
305+
setSearchResultsInner([]);
306+
onSearchResultsChanged?.([], -1);
307+
cancelSearch();
299308
searchInputRef.current.focus({ preventScroll: true });
300309
}
301-
}, [showSearch, searchInputRef, setSearchString]);
310+
}, [
311+
showSearch,
312+
searchInputRef,
313+
setSearchString,
314+
setSearchStatus,
315+
setSearchResultsInner,
316+
onSearchResultsChanged,
317+
cancelSearch,
318+
]);
302319

303320
const onNext = React.useCallback(
304321
(ev?: React.MouseEvent) => {

0 commit comments

Comments
 (0)