diff --git a/src/components/Filter/Filter.jsx b/src/components/Filter/Filter.jsx new file mode 100644 index 0000000..f726364 --- /dev/null +++ b/src/components/Filter/Filter.jsx @@ -0,0 +1,36 @@ +import styles from "./Filter.module.css"; + +function Filter({isFilterVisible, filters, setFilters}){ + const setAlphabeticalOrder = (order) => { + setFilters(prev => ({ + ...prev, + alphabetical : prev.alphabetical === order ? null : order + })); + }; + + const setYearOrder = (order) => { + setFilters(prev => ({ + ...prev, + yearOrder: prev.yearOrder === order ? null : order + })); + }; + + return ( +
+ + +
+ ) +} + +export default Filter; \ No newline at end of file diff --git a/src/components/Filter/Filter.module.css b/src/components/Filter/Filter.module.css new file mode 100644 index 0000000..cdfc895 --- /dev/null +++ b/src/components/Filter/Filter.module.css @@ -0,0 +1,44 @@ +.filterContainer { + display: flex; + flex-direction: column; + gap: 0.4rem; +} + +.filterOpen { + display: flex; +} + +.filterClose{ + display: none; +} + + +.filterTag { + border: none; + background: none; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + width: 45px; + height: 45px; +} + +.filterTag:focus { + outline: none; +} +.filterTag:focus-visible { + outline: 2px solid black; +} + +.filterTag:hover { + cursor: pointer; + svg{ + fill: #019AFF; + } +} + + +.filterTag svg { + transform: scale(4); +} \ No newline at end of file diff --git a/src/index.css b/src/index.css index b6c5ed6..5ed7c85 100644 --- a/src/index.css +++ b/src/index.css @@ -25,7 +25,7 @@ .content { padding: 1.5rem; z-index: 1; - + min-height: 100vh; } diff --git a/src/pages/Events/EventsPage.jsx b/src/pages/Events/EventsPage.jsx index 16abc09..46f2770 100644 --- a/src/pages/Events/EventsPage.jsx +++ b/src/pages/Events/EventsPage.jsx @@ -1,12 +1,23 @@ import {useState} from "react"; import Event from "../../components/Event/Event.jsx"; import {Link} from "react-router"; -import styles from "./EventsPage.module.css" +import styles from "./EventsPage.module.css"; +import Filter from "../../components/Filter/Filter.jsx"; function EventsPage(){ - const [events, setEvents] = useState([ + const [isFilterVisible, setIsFilterVisible] = useState(false); + const toggleFilters = () => { + setIsFilterVisible(prev => !prev); + }; + + const [filters, setFilters] = useState({ + alphabetical: "asc", + yearOrder: "asc", + }); + + const [events] = useState([ { id: 1, name: "Marathon de la Ville", @@ -184,11 +195,16 @@ function EventsPage(){ className={`${styles.createButton} glassCard`}> + - +
+ +
+ +
+
) diff --git a/src/pages/Events/EventsPage.module.css b/src/pages/Events/EventsPage.module.css index 6e949d2..19c0be3 100644 --- a/src/pages/Events/EventsPage.module.css +++ b/src/pages/Events/EventsPage.module.css @@ -23,6 +23,17 @@ } +.filterContainer{ + padding: 0; + border-radius: 30px; + overflow: visible; +} + +.filterMenu{ + padding: 5px 5px 5px 5px; +} + + .createButton, .sortButton { display: flex; align-items: center; @@ -40,13 +51,16 @@ } .sortButton svg { - transform: scale(0.8); + transform: scale(1.5); fill: #019AFF; } -.createButton:hover, .sortButton:hover { - transform: translateY(-5px); +.sortButton:hover { + cursor: pointer; +} +.createButton:hover, .mobileFilter:hover { + transform: translateY(-5px); }