// Copyright (C) 2022-present Daniel31x13 // This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. // You should have received a copy of the GNU General Public License along with this program. If not, see . import useCollectionStore from "@/store/collections"; import { faBox, faEllipsis, faPlus, faSort, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import CollectionCard from "@/components/CollectionCard"; import Dropdown from "@/components/Dropdown"; import { ChangeEvent, useEffect, useState } from "react"; import Modal from "@/components/Modal"; import MainLayout from "@/layouts/MainLayout"; import ClickAwayHandler from "@/components/ClickAwayHandler"; import RadioButton from "@/components/RadioButton"; import CollectionModal from "@/components/Modal/CollectionModal"; import { useSession } from "next-auth/react"; export default function () { const { collections } = useCollectionStore(); const [expandDropdown, setExpandDropdown] = useState(false); const [sortDropdown, setSortDropdown] = useState(false); const [sortBy, setSortBy] = useState("Name (A-Z)"); const [sortedCollections, setSortedCollections] = useState(collections); const [collectionModal, setCollectionModal] = useState(false); const session = useSession(); const toggleCollectionModal = () => { setCollectionModal(!collectionModal); }; const handleSortChange = (event: ChangeEvent) => { setSortBy(event.target.value); }; useEffect(() => { const collectionsArray = [...collections]; if (sortBy === "Name (A-Z)") setSortedCollections( collectionsArray.sort((a, b) => a.name.localeCompare(b.name)) ); else if (sortBy === "Description (A-Z)") setSortedCollections( collectionsArray.sort((a, b) => a.description.localeCompare(b.description) ) ); else if (sortBy === "Name (Z-A)") setSortedCollections( collectionsArray.sort((a, b) => b.name.localeCompare(a.name)) ); else if (sortBy === "Description (Z-A)") setSortedCollections( collectionsArray.sort((a, b) => b.description.localeCompare(a.description) ) ); else if (sortBy === "Date (Newest First)") setSortedCollections( collectionsArray.sort( (a, b) => new Date(b.createdAt as string).getTime() - new Date(a.createdAt as string).getTime() ) ); else if (sortBy === "Date (Oldest First)") setSortedCollections( collectionsArray.sort( (a, b) => new Date(a.createdAt as string).getTime() - new Date(b.createdAt as string).getTime() ) ); }, [collections, sortBy]); return ( // ml-80

All Collections

setExpandDropdown(!expandDropdown)} id="expand-dropdown" className="inline-flex rounded-md cursor-pointer hover:bg-white hover:border-sky-500 border-sky-100 border duration-100 p-1" >
{expandDropdown ? ( { toggleCollectionModal(); setExpandDropdown(false); }, }, ]} onClickOutside={(e: Event) => { const target = e.target as HTMLInputElement; if (target.id !== "expand-dropdown") setExpandDropdown(false); }} className="absolute top-8 left-0 w-36" /> ) : null}
setSortDropdown(!sortDropdown)} id="sort-dropdown" className="inline-flex rounded-md cursor-pointer hover:bg-white hover:border-sky-500 border-sky-100 border duration-100 p-1" >
{sortDropdown ? ( { const target = e.target as HTMLInputElement; if (target.id !== "sort-dropdown") setSortDropdown(false); }} className="absolute top-8 right-0 shadow-md bg-gray-50 rounded-md p-2 z-10 border border-sky-100 w-48" >

Sort by

) : null}
{sortedCollections.map((e, i) => { return ; })}

New Collection

{collectionModal ? ( ) : null}
); }