diff --git a/plugins/search/src/components/SearchBarNext/SearchBarNext.tsx b/plugins/search/src/components/SearchBarNext/SearchBarNext.tsx index 0e8c626b6f..0a42bfd296 100644 --- a/plugins/search/src/components/SearchBarNext/SearchBarNext.tsx +++ b/plugins/search/src/components/SearchBarNext/SearchBarNext.tsx @@ -37,7 +37,7 @@ type Props = { export const SearchBarNext = ({ debounceTime = 200 }: Props) => { const classes = useStyles(); - const { term, setTerm, setPageCursor } = useSearch(); + const { term, setTerm } = useSearch(); const [value, setValue] = useState(term); useDebounce( @@ -55,7 +55,6 @@ export const SearchBarNext = ({ debounceTime = 200 }: Props) => { const handleClearSearchBar = () => { setTerm(''); - setPageCursor(''); }; return ( diff --git a/plugins/search/src/components/SearchContext/SearchContext.tsx b/plugins/search/src/components/SearchContext/SearchContext.tsx index ac264ccf32..40a9c78cf6 100644 --- a/plugins/search/src/components/SearchContext/SearchContext.tsx +++ b/plugins/search/src/components/SearchContext/SearchContext.tsx @@ -19,8 +19,9 @@ import React, { createContext, useContext, useState, + useEffect, } from 'react'; -import { useAsync } from 'react-use'; +import { useAsync, usePrevious } from 'react-use'; import { useApi } from '@backstage/core'; import { SearchResultSet } from '@backstage/search-common'; import { searchApiRef } from '../../apis'; @@ -60,6 +61,7 @@ export const SearchContextProvider = ({ const [filters, setFilters] = useState(initialState.filters); const [term, setTerm] = useState(initialState.term); const [types, setTypes] = useState(initialState.types); + const prevTerm = usePrevious(term); const result = useAsync( () => @@ -72,6 +74,13 @@ export const SearchContextProvider = ({ [term, filters, types, pageCursor], ); + useEffect(() => { + // Any time a term is reset, we want to start from page 0. + if (term && prevTerm && term !== prevTerm) { + setPageCursor(''); + } + }, [term, prevTerm]); + const value: SearchContextValue = { result, filters, diff --git a/plugins/search/src/components/SearchPageNext/SearchPageNext.tsx b/plugins/search/src/components/SearchPageNext/SearchPageNext.tsx index bae5be6042..cd069b8d2e 100644 --- a/plugins/search/src/components/SearchPageNext/SearchPageNext.tsx +++ b/plugins/search/src/components/SearchPageNext/SearchPageNext.tsx @@ -48,11 +48,12 @@ export const SearchPageNext = () => { const query = qs.parse(location.search.substring(1), { arrayLimit: 0 }) || {}; const filters = (query.filters as JsonObject) || {}; const queryString = (query.query as string) || ''; + const pageCursor = (query.pageCursor as string) || ''; const initialState = { term: queryString || '', types: [], - pageCursor: '', + pageCursor, filters, };