Skip to content

Commit fc9a0ec

Browse files
committed
feat: add ScrollToTop component to reset scroll on route change
1 parent 2d2fc39 commit fc9a0ec

File tree

2 files changed

+42
-24
lines changed

2 files changed

+42
-24
lines changed

src/components/Routes.tsx

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import ScrollToTop from "./ScrollToTop";
12
import FullScreen from "design/Layouts/FullScreen";
23
import AboutPage from "pages/AboutPage";
34
import DatabasePage from "pages/DatabasePage";
@@ -11,34 +12,37 @@ import { Navigate, Route, Routes as RouterRoutes } from "react-router-dom";
1112
import RoutesEnum from "types/routes.enum";
1213

1314
const Routes = () => (
14-
<RouterRoutes>
15-
{/* FullScreen Layout */}
16-
<Route element={<FullScreen />}>
17-
{/* Home Page */}
18-
<Route path={RoutesEnum.HOME} element={<Home />} />
19-
{/* Databases Page */}
20-
<Route path={RoutesEnum.DATABASES} element={<DatabasePage />} />
15+
<>
16+
<ScrollToTop />
17+
<RouterRoutes>
18+
{/* FullScreen Layout */}
19+
<Route element={<FullScreen />}>
20+
{/* Home Page */}
21+
<Route path={RoutesEnum.HOME} element={<Home />} />
22+
{/* Databases Page */}
23+
<Route path={RoutesEnum.DATABASES} element={<DatabasePage />} />
2124

22-
{/* Dataset List Page */}
23-
<Route
24-
path={`${RoutesEnum.DATABASES}/:dbName`}
25-
// element={<DatasetPage />}
26-
element={<NewDatasetPage />}
27-
/>
25+
{/* Dataset List Page */}
26+
<Route
27+
path={`${RoutesEnum.DATABASES}/:dbName`}
28+
// element={<DatasetPage />}
29+
element={<NewDatasetPage />}
30+
/>
2831

29-
{/* Dataset Details Page */}
30-
<Route
31-
path={`${RoutesEnum.DATABASES}/:dbName/:docId`}
32-
element={<DatasetDetailPage />}
33-
/>
32+
{/* Dataset Details Page */}
33+
<Route
34+
path={`${RoutesEnum.DATABASES}/:dbName/:docId`}
35+
element={<DatasetDetailPage />}
36+
/>
3437

35-
{/* Search Page */}
36-
<Route path={RoutesEnum.SEARCH} element={<SearchPage />} />
38+
{/* Search Page */}
39+
<Route path={RoutesEnum.SEARCH} element={<SearchPage />} />
3740

38-
{/* About Page */}
39-
<Route path={RoutesEnum.ABOUT} element={<AboutPage />} />
40-
</Route>
41-
</RouterRoutes>
41+
{/* About Page */}
42+
<Route path={RoutesEnum.ABOUT} element={<AboutPage />} />
43+
</Route>
44+
</RouterRoutes>
45+
</>
4246
);
4347

4448
export default Routes;

src/components/ScrollToTop.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { useEffect } from "react";
2+
import { useLocation } from "react-router-dom";
3+
4+
const ScrollToTop = () => {
5+
const { pathname } = useLocation();
6+
7+
useEffect(() => {
8+
window.scrollTo({ top: 0, left: 0, behavior: "instant" as ScrollBehavior });
9+
}, [pathname]);
10+
11+
return null;
12+
};
13+
14+
export default ScrollToTop;

0 commit comments

Comments
 (0)