Skip to content

Commit 8a545b9

Browse files
authored
Merge pull request #1885 from kleros/refactor/jurors-page-scroll
refactor(web): jurors-page-scroll
2 parents 8822904 + b5da6d7 commit 8a545b9

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

web/src/hooks/useScrollTop.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import { OverlayScrollContext } from "context/OverlayScrollContext";
44
export const useScrollTop = () => {
55
const osInstanceRef = useContext(OverlayScrollContext);
66

7-
const scrollTop = () => {
8-
osInstanceRef?.current?.osInstance().elements().viewport.scroll({ top: 0 });
7+
const scrollTop = (smooth = false) => {
8+
osInstanceRef?.current
9+
?.osInstance()
10+
.elements()
11+
.viewport.scroll({ top: 0, behavior: smooth ? "smooth" : "auto" });
912
};
1013

1114
return scrollTop;

web/src/pages/Jurors/DisplayJurors.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { isUndefined } from "utils/index";
66
import { StandardPagination } from "@kleros/ui-components-library";
77

88
import { useJurorsByCoherenceScore } from "queries/useJurorsByCoherenceScore";
9-
import useIsDesktop from "hooks/useIsDesktop";
109

1110
import { OrderDirection } from "src/graphql/graphql";
1211

@@ -15,6 +14,7 @@ import JurorCard from "../Home/TopJurors/JurorCard";
1514
import { ListContainer, StyledLabel } from "../Home/TopJurors";
1615
import Header from "../Home/TopJurors/Header";
1716
import { decodeURIFilter } from "utils/uri";
17+
import { useScrollTop } from "hooks/useScrollTop";
1818

1919
interface IDisplayJurors {
2020
totalLeaderboardJurors: number;
@@ -28,10 +28,10 @@ const StyledPagination = styled(StandardPagination)`
2828

2929
const DisplayJurors: React.FC<IDisplayJurors> = ({ totalLeaderboardJurors }) => {
3030
const { page, order, filter } = useParams();
31+
const scrollTop = useScrollTop();
3132
const { id: searchValue } = decodeURIFilter(filter ?? "all");
3233
const navigate = useNavigate();
33-
const isDesktop = useIsDesktop();
34-
const jurorsPerPage = isDesktop ? 20 : 10;
34+
const jurorsPerPage = 10;
3535
const currentPage = parseInt(page ?? "1");
3636
const jurorSkip = jurorsPerPage * (currentPage - 1);
3737
const { data: queryJurors } = useJurorsByCoherenceScore(
@@ -62,6 +62,7 @@ const DisplayJurors: React.FC<IDisplayJurors> = ({ totalLeaderboardJurors }) =>
6262
);
6363

6464
const handlePageChange = (newPage: number) => {
65+
scrollTop(true);
6566
navigate(`/jurors/${newPage}/${order}/${filter}`);
6667
};
6768

0 commit comments

Comments
 (0)