diff --git a/src/components/ResourceTable.tsx b/src/components/ResourceTable.tsx index fb68cbc..3f58ce8 100644 --- a/src/components/ResourceTable.tsx +++ b/src/components/ResourceTable.tsx @@ -4,6 +4,8 @@ import { ClipboardDocumentListIcon } from '@heroicons/react/24/outline'; import Image from 'next/image'; import Link from 'next/link'; import { translateEnumPlatform } from '~/utils/enumWordLut'; +import { type ChangeEvent, type Dispatch, type SetStateAction, useState } from 'react'; +import { ChevronDownIcon } from '@heroicons/react/24/outline'; const ResourceEntry = ({resource}: {resource: AuditoryResource}) => { const ResourceInfo = ({resource}: {resource: AuditoryResource}) => { @@ -123,7 +125,14 @@ const ResourceEntry = ({resource}: {resource: AuditoryResource}) => { ) } -const PagesNavigation = ({currentPage, pageCount}: {currentPage: number, pageCount: number}) => { +interface PagesNavigationProps { + currentPage: number; + pageCount: number; + resultsPerPage: number; + updateResultsPerPage: Dispatch>; +} + +const PagesNavigation = ({currentPage, pageCount, resultsPerPage, updateResultsPerPage}: PagesNavigationProps) => { const PageButton = ({number}: {number: number}) => { return (
  • @@ -139,11 +148,33 @@ const PagesNavigation = ({currentPage, pageCount}: {currentPage: number, pageCou ) }); + + const handleChange = (event: ChangeEvent) => { + updateResultsPerPage(parseInt(event.target.value)); + }; return ( -
    -

    Pages

    -
      +
      +
      +
      + +
      + +
      +
      +
      +

      Results Per Page

      +
      +
      +
        {pages}
      @@ -151,7 +182,7 @@ const PagesNavigation = ({currentPage, pageCount}: {currentPage: number, pageCou } const ResourceTable = ({resources, currentPage}: {resources?: AuditoryResource[], currentPage: number}) => { - const resourcesPerPage = 10; + const [resourcesPerPage, setResourcesPerPage] = useState(10); const totalPages = Math.ceil((resources?.length ?? 0) / resourcesPerPage); const pageResources = resources?.slice(resourcesPerPage*(currentPage-1), (resourcesPerPage*currentPage)) ?? []; const resourceElements = pageResources?.map((resource, index) => { @@ -161,7 +192,7 @@ const ResourceTable = ({resources, currentPage}: {resources?: AuditoryResource[] return(
      - + diff --git a/src/pages/resources/index.tsx b/src/pages/resources/index.tsx index 8df20af..f3a45bd 100644 --- a/src/pages/resources/index.tsx +++ b/src/pages/resources/index.tsx @@ -1,6 +1,5 @@ import { createProxySSGHelpers } from "@trpc/react-query/ssg"; import Head from "next/head"; -import Link from "next/link"; import { useRouter } from "next/router"; import ResourceTable from "~/components/ResourceTable"; import { appRouter } from "~/server/api/root"; diff --git a/src/pages/resources/search.tsx b/src/pages/resources/search.tsx new file mode 100644 index 0000000..e69de29