Skip to content

Commit bcb4430

Browse files
authored
Merge pull request #279 from zigzagdev/fix/navigate-heading-search-result
Navigating heading Search Results page
2 parents edcc75a + eff011c commit bcb4430

2 files changed

Lines changed: 21 additions & 14 deletions

File tree

client/src/app/features/search/components/SearchResultsPage.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ export default function SearchResultsPage({
4141
<div className="flex items-center justify-between gap-4">
4242
<div className="min-w-0">
4343
<div className="flex items-center gap-3">
44-
<h1 className="text-2xl font-extrabold tracking-tight text-indigo-700 md:text-3xl">
44+
<h1
45+
className="text-2xl font-extrabold tracking-tight text-indigo-700 md:text-3xl"
46+
onClick={onBackToAllSites}
47+
>
4548
Search Results
4649
</h1>
4750

client/src/app/features/search/containers/search-heritage-result-container.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99

1010
import { useHeritageSearchQuery } from "../../search/hooks/use-search-heritage-query";
1111
import SearchResultsPage from "../components/SearchResultsPage";
12+
import type { WorldHeritageVm } from "../../../../domain/types";
1213
import { toWorldHeritageListVm } from "@features/heritages/mappers/to-world-heritage-vm";
1314
import type { Pagination } from "../types";
1415
import { HeritageSubHeader } from "@features/top/components/HeritageSubHeader";
@@ -160,34 +161,36 @@ export function SearchHeritageResultsContainer(): React.ReactElement {
160161
[draft, navigate, setDraft],
161162
);
162163

164+
// Hooks must be called at the top level before any early returns.
165+
const handleBackToAllSites = React.useCallback(() => {
166+
navigate("/heritages", { replace: true });
167+
}, [navigate]);
168+
163169
const header = (
164170
<HeritageSubHeader value={draft} onChange={handleChange} onSubmit={handleSubmit} />
165171
);
166172

173+
const baseProps = {
174+
header,
175+
onBackToAllSites: handleBackToAllSites,
176+
items: [] as WorldHeritageVm[],
177+
pagination: null,
178+
};
179+
167180
if (isLoading) {
168-
return <SearchResultsPage header={header} items={[]} pagination={null} rangeText="Loading…" />;
181+
return <SearchResultsPage {...baseProps} pagination={null} rangeText="Loading…" />;
169182
}
170183

171184
if (error) {
172185
const message = error instanceof Error ? error.message : "Failed";
173186

174-
return (
175-
<SearchResultsPage
176-
header={header}
177-
items={[]}
178-
pagination={null}
179-
rangeText="Failed to load."
180-
errorMessage={message}
181-
/>
182-
);
187+
return <SearchResultsPage {...baseProps} rangeText="Failed to load." errorMessage={message} />;
183188
}
184189

185190
if (!data || !isValidListResult(data)) {
186191
return (
187192
<SearchResultsPage
188-
header={header}
189-
items={[]}
190-
pagination={null}
193+
{...baseProps}
191194
rangeText="Unexpected response."
192195
errorMessage={!data ? undefined : "Invalid data structure: items or pagination missing."}
193196
/>
@@ -206,6 +209,7 @@ export function SearchHeritageResultsContainer(): React.ReactElement {
206209
rangeText={rangeText}
207210
onClickItem={handleClickItem}
208211
onPageChange={handlePageChange}
212+
onBackToAllSites={handleBackToAllSites}
209213
/>
210214
);
211215
}

0 commit comments

Comments
 (0)