diff --git a/src/app/ItemSearchPage.js b/src/app/ItemSearchPage.js
index 5126c6b..d679df0 100644
--- a/src/app/ItemSearchPage.js
+++ b/src/app/ItemSearchPage.js
@@ -1,8 +1,8 @@
import React from "react";
-import { Box, Button, Flex, Wrap, WrapItem } from "@chakra-ui/react";
+import { Box, Wrap, WrapItem } from "@chakra-ui/react";
import gql from "graphql-tag";
import { useQuery } from "@apollo/client";
-import { Link, useHistory, useLocation, useParams } from "react-router-dom";
+import { useHistory, useLocation, useParams } from "react-router-dom";
import SearchToolbar, {
emptySearchQuery,
@@ -12,6 +12,7 @@ import SquareItemCard, {
SquareItemCardSkeleton,
} from "./components/SquareItemCard";
import { Delay, ErrorMessage, useCommonStyles, useDebounce } from "./util";
+import PaginationToolbar from "./components/PaginationToolbar";
function ItemSearchPage() {
const [query, offset, setQuery] = useSearchQueryInUrl();
@@ -170,11 +171,11 @@ function ItemSearchPageResults({ query: latestQuery, offset }) {
if (loading) {
return (
-
+
-
+
);
}
@@ -202,8 +203,8 @@ function ItemSearchPageResults({ query: latestQuery, offset }) {
return (
-
@@ -213,54 +214,14 @@ function ItemSearchPageResults({ query: latestQuery, offset }) {
))}
-
);
}
-function ItemSearchPagePagination({ isLoading, numTotalItems, ...props }) {
- const { search } = useLocation();
-
- const currentOffset =
- parseInt(new URLSearchParams(search).get("offset")) || 0;
-
- const prevPageSearchParams = new URLSearchParams(search);
- const prevPageOffset = currentOffset - 30;
- prevPageSearchParams.set("offset", prevPageOffset);
- const prevPageUrl = "?" + prevPageSearchParams.toString();
- const prevPageIsDisabled = isLoading || prevPageOffset < 0;
-
- const nextPageSearchParams = new URLSearchParams(search);
- const nextPageOffset = currentOffset + 30;
- nextPageSearchParams.set("offset", nextPageOffset);
- const nextPageUrl = "?" + nextPageSearchParams.toString();
- const nextPageIsDisabled = isLoading || nextPageOffset >= numTotalItems;
-
- return (
-
-
-
-
- );
-}
-
function ItemSearchPageResultsLoading() {
return (
diff --git a/src/app/components/PaginationToolbar.js b/src/app/components/PaginationToolbar.js
new file mode 100644
index 0000000..759901d
--- /dev/null
+++ b/src/app/components/PaginationToolbar.js
@@ -0,0 +1,45 @@
+import React from "react";
+import { Button, Flex } from "@chakra-ui/react";
+import { Link, useLocation } from "react-router-dom";
+
+function PaginationToolbar({ isLoading, totalCount, ...props }) {
+ const { search } = useLocation();
+
+ const currentOffset =
+ parseInt(new URLSearchParams(search).get("offset")) || 0;
+
+ const prevPageSearchParams = new URLSearchParams(search);
+ const prevPageOffset = currentOffset - 30;
+ prevPageSearchParams.set("offset", prevPageOffset);
+ const prevPageUrl = "?" + prevPageSearchParams.toString();
+ const prevPageIsDisabled = isLoading || prevPageOffset < 0;
+
+ const nextPageSearchParams = new URLSearchParams(search);
+ const nextPageOffset = currentOffset + 30;
+ nextPageSearchParams.set("offset", nextPageOffset);
+ const nextPageUrl = "?" + nextPageSearchParams.toString();
+ const nextPageIsDisabled = isLoading || nextPageOffset >= totalCount;
+
+ return (
+
+
+
+
+ );
+}
+
+export default PaginationToolbar;