diff --git a/frontend/src/main-page/grants/GrantPage.tsx b/frontend/src/main-page/grants/GrantPage.tsx index 4ba371d..149cac6 100644 --- a/frontend/src/main-page/grants/GrantPage.tsx +++ b/frontend/src/main-page/grants/GrantPage.tsx @@ -3,6 +3,7 @@ import GrantSearch from "./filter-bar/GrantSearch.tsx"; import NewGrantModal from "./new-grant/NewGrantModal.tsx"; import { useEffect, useState } from "react"; import { Grant } from "../../../../middle-layer/types/Grant.ts"; +import FilterBar from "./filter-bar/FilterBar.tsx"; import GrantItem from "./grant-view/GrantView.tsx"; import { useAuthContext } from "../../context/auth/authContext"; import { @@ -114,7 +115,9 @@ function GrantPage({}: GrantPageProps) {
-
diff --git a/frontend/src/main-page/grants/filter-bar/FilterBar.tsx b/frontend/src/main-page/grants/filter-bar/FilterBar.tsx index 729f6f2..8b54f0d 100644 --- a/frontend/src/main-page/grants/filter-bar/FilterBar.tsx +++ b/frontend/src/main-page/grants/filter-bar/FilterBar.tsx @@ -1,5 +1,5 @@ import React, { useState } from "react"; -import { Link } from "react-router-dom"; +//import { Link } from "react-router-dom"; import { Status, stringToStatus, @@ -8,8 +8,9 @@ import { updateFilter, } from "../../../external/bcanSatchel/actions.ts"; import { observer } from "mobx-react-lite"; -import CalendarDropdown from "./CalendarDropdown.tsx"; -import { FaChevronRight } from "react-icons/fa"; +//import CalendarDropdown from "./CalendarDropdown.tsx"; +//import { FaChevronRight } from "react-icons/fa"; +import StatusDropdown from "./StatusDropdown"; interface FilterBarProps { name: string; @@ -44,40 +45,24 @@ const FilterBar: React.FC = observer(() => { } return ( -
-
-
{"Filter by Date"}
- -
-
-
{"Filter by Status"}
-
    - {linkList.map((item, index) => ( -
  • - categoryClicked(e, item.name, item.linkTo)} - to={item.linkTo ? item.linkTo : "#"} - > -
    -
    - {item.name} - -
    -
    - -
  • - ))} -
-
-
+
+ + + + + + +
); }); diff --git a/frontend/src/main-page/grants/filter-bar/StatusDropdown.tsx b/frontend/src/main-page/grants/filter-bar/StatusDropdown.tsx new file mode 100644 index 0000000..d5c467f --- /dev/null +++ b/frontend/src/main-page/grants/filter-bar/StatusDropdown.tsx @@ -0,0 +1,72 @@ + +import React, { useState } from "react"; +import { + Status, + getColorStatus, +} from "../../../../../middle-layer/types/Status.ts"; +import { updateFilter } from "../../../external/bcanSatchel/actions.ts"; +import { observer } from "mobx-react-lite"; + +const StatusDropdown: React.FC = observer(() => { + const [isOpen, setIsOpen] = useState(false); + const [selected, setSelected] = useState(null); + + const statuses = [ + Status.Active, + Status.Pending, + Status.Potential, + Status.Rejected, + Status.Inactive, + ]; + + function handleSelect(status: Status) { + const newSelected = selected === status ? null : status; + setSelected(newSelected); + updateFilter(newSelected); + } + + + return ( +
+ + + {isOpen && ( +
+ +
+ {statuses.map((status) => ( +
handleSelect(status)} + > + handleSelect(status)} + className="cursor-pointer w-4 h-4 flex-shrink-0" + /> + + {status} + +
+ ))} +
+
+ )} +
+ ); +}); + +export default StatusDropdown; \ No newline at end of file