diff --git a/src/components/shared/Table.tsx b/src/components/shared/Table.tsx index bbcb32c15e..2f408e12ca 100644 --- a/src/components/shared/Table.tsx +++ b/src/components/shared/Table.tsx @@ -1,4 +1,4 @@ -import React, { JSX, useEffect, useRef, useState } from "react"; +import React, { JSX, useEffect, useRef } from "react"; import { useTranslation } from "react-i18next"; import { getMultiSelect, @@ -44,8 +44,8 @@ import { ParseKeys } from "i18next"; import { LuChevronDown, LuChevronLeft, LuChevronRight, LuChevronUp } from "react-icons/lu"; import { AsyncThunk } from "@reduxjs/toolkit"; import { useLocation } from "react-router"; - -const containerPageSize = React.createRef(); +import Select, { components } from "react-select"; +import { pageSizeStyles } from "../../utils/componentStyles"; export type TemplateMap = { [key: string]: ({ row }: { row: any }) => JSX.Element | JSX.Element[] @@ -397,26 +397,14 @@ const PageSize = ({ forceDeselectAll }: { forceDeselectAll: () => unknown }) => const dispatch = useAppDispatch(); const pagination = useAppSelector(state => getTablePagination(state)); - const sizeOptions = [10, 20, 50, 100, 1000]; // Size options for pagination - const [showPageSizes, setShowPageSizes] = useState(false); - - useEffect(() => { - // Function for handling clicks outside of an open dropdown menu - const handleClickOutside = (e: MouseEvent) => { - if ( - e && containerPageSize.current && !containerPageSize.current.contains(e.target as Node) - ) { - setShowPageSizes(false); - } - }; - - // Event listener for handle a click outside of dropdown menu - window.addEventListener("mousedown", handleClickOutside); - - return () => { - window.removeEventListener("mousedown", handleClickOutside); - }; - }); + const sizeOptions = React.useMemo( + () => + [10, 20, 50, 100, 1000].map(size => ({ + value: size, + label: size.toString(), + })), + [], + ); const changePageSize = (size: number) => { forceDeselectAll(); @@ -425,31 +413,28 @@ const PageSize = ({ forceDeselectAll }: { forceDeselectAll: () => unknown }) => dispatch(updatePages()); }; + const DropdownIndicator = (props: any) => { + return ( + + + + ); + }; + return ( -
setShowPageSizes(!showPageSizes)} - ref={containerPageSize} - role="button" - tabIndex={0} - > - {pagination.limit} - - {/* Drop down menu for selection of page size */} - {showPageSizes && ( -
    - {sizeOptions.map((size, key) => ( -
  • - changePageSize(size)} - > - {size} - -
  • - ))} -
- )} -
+