From bb4ff66889b0db0b267675b5928e3f3ee87faaa0 Mon Sep 17 00:00:00 2001
From: Guilherme Eduardo <gegs23@inf.ufpr.br>
Date: Tue, 1 Apr 2025 11:55:24 -0300
Subject: [PATCH] Issue #274: UPDATE filter on resources page

---
 src/app/components/ButtonsPages.js |   2 +-
 src/app/components/FiltersModal.js |   4 +-
 src/app/components/FormFilters.js  | 194 ++++++++++++++++-------------
 3 files changed, 112 insertions(+), 88 deletions(-)

diff --git a/src/app/components/ButtonsPages.js b/src/app/components/ButtonsPages.js
index 68873491..1d55b204 100644
--- a/src/app/components/ButtonsPages.js
+++ b/src/app/components/ButtonsPages.js
@@ -39,7 +39,7 @@ export default function ButtonsPages({ searchPage, handlePageChange }) {
 
                             return (
                                 <div key={index} onClick={() => { handlePageChange(item.title) }}
-                                    className={` flex w-40 h-14 rounded-lg text-center items-center justify-center font-bold normal-case ${searchPage === item.title ? "bg-turquoise text-white-HC-dark-underline" : "bg-ice-HC-dark"} text-darkGray-HC-white`}
+                                    className={` flex w-40 h-14 rounded-lg text-center items-center justify-center font-bold normal-case outline outline-1 outline-ice-HC-white ${searchPage === item.title ? "bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark text-white-HC-dark-underline hover:text-white" : "bg-ice-HC-dark hover:bg-darkGray-HC-white hover:text-white-HC-dark-underline"} text-darkGray-HC-white`}
                                 > {tradutor(item.title)} </div>
                             )
                         })
diff --git a/src/app/components/FiltersModal.js b/src/app/components/FiltersModal.js
index 6a6bbf24..c9d23a3f 100644
--- a/src/app/components/FiltersModal.js
+++ b/src/app/components/FiltersModal.js
@@ -42,9 +42,9 @@ export default function FiltersModal({
                     },
                   }}
             >
-                <div className='flex flex-col w-[60%] h-[80%] bg-white-HC-dark  overflow-x-auto rounded-lg'>
+                <div className='flex flex-col w-[60%] h-[80%] bg-white-HC-dark overflow-x-auto rounded-lg outline outline-1 outline-ice-HC-white'>
                     <div>
-                        <div className='fixed z-20 w-[60%] '>
+                        <div className='fixed z-20 w-[60%]'>
                             <div className='flex justify-between bg-white-HC-dark  rounded-lg p-4'>
                                 <p className=' text-2xl font-bold text-darkGray-HC-white  '>
                                     Filtros de Pesquisa
diff --git a/src/app/components/FormFilters.js b/src/app/components/FormFilters.js
index fb83d5f9..b6cead33 100644
--- a/src/app/components/FormFilters.js
+++ b/src/app/components/FormFilters.js
@@ -10,6 +10,9 @@ import FieldLabel from "../publicar/components/FieldLabel";
 import { useRouter, useSearchParams } from "next/navigation";
 import { Search } from "@mui/icons-material";
 import LocalLibraryIcon from "@mui/icons-material/LocalLibrary";
+import CustomCheckbox from "../publicar/components/CustomCheckbox";
+import CloseIcon from '@mui/icons-material/Close';
+
 
 
 export default function FormFilters({
@@ -157,92 +160,113 @@ export default function FormFilters({
     };
 
     return (
-        <form className="mt-12" onSubmit={handleSubmit} onKeyDown={(e) => { if (e.key === "Enter") e.preventDefault() }}>
-            <Divider />
-            <ButtonsPages searchPage={filterStateDraft.searchClass} handlePageChange={handlePageChange} />
-            <Divider />
-
-            <p className="font-bold text-darkGray-HC-white text-xl py-2">
-                Tipo de recurso
-            </p>
-            <div className="flex flex-wrap justify-start ml-8">
-                {objectTypes.map((object, index) => {
-                    return (
-                        <div
-                            key={index}
-                            onClick={() => handleObjectType(object)}
-                            className={`bg-ice-HC-dark hover:bg-ice-HC-dark-hover ${filterStateDraft.objectTypes.some(obj => obj.id === object.id) ? "border-2 border-secondary bg-ice-HC-dark-hover" : "bg-ice-HC-dark"} hover:cursor-pointer h-20 w-20 max-lg:h-20 max-lg:w-20 flex flex-col m-3 items-center p-2 text-center justify-center rounded-lg `}
-                        >
+        <>
+            <form className="mt-12" onSubmit={handleSubmit} onKeyDown={(e) => { if (e.key === "Enter") e.preventDefault() }}>
+                <Divider />
+                <ButtonsPages searchPage={filterStateDraft.searchClass} handlePageChange={handlePageChange} />
+                <Divider />
+
+                <p className="font-bold text-darkGray-HC-white text-xl py-2">
+                    Tipo de recurso
+                </p>
+                <div className="flex flex-wrap justify-start ml-8">
+                    {objectTypes.map((object, index) => {
+                        return (
                             <div
-                                alt={object.name}
-                                className="w-12 h-12 max-lg:w-8 max-sm:hidden max-lg:h-8 fill-current text-turquoise-HC-underline "
-                                dangerouslySetInnerHTML={{ __html: object.image }}
-                            ></div>
-                            {/* <Image alt={object.name} height={0} width={0} className="w-10 h-10 max-lg:w-8 max-lg:h-8" src={object.image} /> */}
-                            <span className="text-turquoise-HC-underline  text-xs max-lg:text-xs">{object.name}</span>
-                        </div>
-                    )
-                })}
-            </div>
-
-            <Divider />
-
-            <FieldLabel
-                name="Nível de ensino"
-                description="(Selecione uma ou mais opções)"
-            />
-            <FormGroup className="flex flex-wrap mt-5 mb-10">
-                {scholarityLevelsAvailable.map((sl, index) => (
-                    <FormControlLabel
-                        onChange={handleEducationalStage}
-                        key={index}
-                        control={<Checkbox checked={filterStateDraft.educationalStages.some(obj => sl.id === obj.id)} />}
-                        value={JSON.stringify(sl)}
-                        label={<span className="text-darkGray-HC-white-underline">{sl.name}</span>}
-                    />
-                ))}
-            </FormGroup>
-
-            <Divider />
-
-            <FieldLabel name="Idiomas do Recurso" />
-            <FormGroup className="flex flex-wrap mb-5" row>
-                {languagesAvailable?.map((language, index) => (
-                    <FormControlLabel
-                        className="w-64"
-                        onChange={handleLanguagesChange}
-                        key={index}
-                        control={<Checkbox checked={filterStateDraft.languages.some(l => l.name === language.name)} />}
-                        value={JSON.stringify(language)}
-                        label={<span className="text-darkGray-HC-white-underline">{language.name}</span>}
-                    />
-                ))}
-            </FormGroup>
-
-            <Divider />
-
-            <FieldLabel name="Grandes Áreas" />
-
-            <FormGroup className="flex flex-wrap mb-5 " row >
-                {subjectsAvailable?.map((subj, index) => (
-                    <FormControlLabel
-                        className="w-64"
-                        onChange={handleFilterSubject}
-                        key={index}
-                        control={<Checkbox checked={filterStateDraft.subjects.some(s => s.name === subj.name)} />}
-                        value={JSON.stringify(subj)}
-                        label={<span className="text-darkGray-HC-white-underline">{subj.name}</span>}
-                    />
-                ))}
-            </FormGroup>
-
-
-            <div className="relative ">
-                <div className="flex justify-end">
-                    <Button onClick={handleResetFilters} className="text-darkGray-HC-white normal-case font-semibold text-base hover:bg-ice-HC-dark cursor-pointer mx-2">Remover filtros</Button>
-                    <Button type="submit" className="bg-turquoise text-white-HC-dark-underline normal-case font-semibold text-base hover:bg-turquoise-hover cursor-pointer">Mostrar resultados</Button>
+                                key={index}
+                                onClick={() => handleObjectType(object)}
+                                className={`
+                                ${filterStateDraft.objectTypes.some(obj => obj.id === object.id)
+                                        ? "border-2 border-turquoise-HC-white bg-lightGray-HC-white text-turquoise-HC-dark-underline"
+                                        : "bg-ice-HC-dark text-turquoise-HC-white-underline"}
+                                
+                                hover:bg-lightGray-HC-white
+                                hover:text-turquoise-HC-dark
+                                hover:cursor-pointer
+                              
+                                
+                              
+                                h-20 w-20
+                                max-lg:h-20 max-lg:w-20
+                              
+                                flex flex-col items-center justify-center
+                                m-3 p-2 text-center
+                              
+                                rounded-lg
+                                outline outline-1 outline-ice-HC-white
+                              `}
+                            >
+                                <div
+                                    alt={object.name}
+                                    className="w-12 h-12 max-lg:w-8 max-sm:hidden max-lg:h-8 fill-current"
+                                    dangerouslySetInnerHTML={{ __html: object.image }}
+                                ></div>
+                                {/* <Image alt={object.name} height={0} width={0} className="w-10 h-10 max-lg:w-8 max-lg:h-8" src={object.image} /> */}
+                                <span className="text-xs max-lg:text-xs">{object.name}</span>
+                            </div>
+                        )
+                    })}
                 </div>
-            </div>
-        </form>
+
+                <Divider />
+
+                <FieldLabel
+                    name="Nível de ensino"
+                    description="(Selecione uma ou mais opções)"
+                />
+                <FormGroup className="flex flex-wrap mt-5 mb-10">
+                    {scholarityLevelsAvailable.map((sl, index) => (
+                        <FormControlLabel
+                            onChange={handleEducationalStage}
+                            key={index}
+                            control={< CustomCheckbox checked={filterStateDraft.educationalStages.some(obj => sl.id === obj.id)} />}
+                            value={JSON.stringify(sl)}
+                            label={<span className="text-darkGray-HC-white">{sl.name}</span>}
+                        />
+                    ))}
+                </FormGroup>
+
+                <Divider />
+
+                <FieldLabel name="Idiomas do Recurso" />
+                <FormGroup className="flex flex-wrap mb-5" row>
+                    {languagesAvailable?.map((language, index) => (
+                        <FormControlLabel
+                            className="w-64"
+                            onChange={handleLanguagesChange}
+                            key={index}
+                            control={< CustomCheckbox checked={filterStateDraft.languages.some(l => l.name === language.name)} />}
+                            value={JSON.stringify(language)}
+                            label={<span className="text-darkGray-HC-white">{language.name}</span>}
+                        />
+                    ))}
+                </FormGroup>
+
+                <Divider />
+
+                <FieldLabel name="Grandes Áreas" />
+
+                <FormGroup className="flex flex-wrap mb-5 " row >
+                    {subjectsAvailable?.map((subj, index) => (
+                        <FormControlLabel
+                            className="w-64"
+                            onChange={handleFilterSubject}
+                            key={index}
+                            control={< CustomCheckbox checked={filterStateDraft.subjects.some(s => s.name === subj.name)} />}
+                            value={JSON.stringify(subj)}
+                            label={<span className="text-darkGray-HC-white">{subj.name}</span>}
+                        />
+                    ))}
+                </FormGroup>
+
+                <div className="fixed bottom-[10%] z-20 bg-white-HC-dark p-4 w-[56%] flex justify-end">
+                    <div className="flex">
+                        <Button onClick={handleResetFilters} className="text-darkGray-HC-white-underline normal-case font-semibold text-base hover:bg-ice-HC-dark cursor-pointer mx-2 outline outline-1 outline-ice-HC-white">Remover filtros</Button>
+                        <Button type="submit" className="bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark text-white-HC-dark-underline hover:text-white normal-case font-semibold text-base hover:bg-turquoise-hover cursor-pointer outline outline-1 outline-ice-HC-white">Mostrar resultados</Button>
+                    </div>
+                </div>
+            </form>
+
+        </>
     )
 }
\ No newline at end of file
-- 
GitLab