add button for disabling all filters

This commit is contained in:
2024-07-10 19:03:53 +02:00
parent b819796e29
commit 73ffdf517c
2 changed files with 25 additions and 2 deletions

View File

@ -43,6 +43,12 @@ export const EventContainer = ({
const [organizer, setOrganizer] = useQueryState("organizer", parseAsString); const [organizer, setOrganizer] = useQueryState("organizer", parseAsString);
const [venue, setVenue] = useQueryState("venue", parseAsString); const [venue, setVenue] = useQueryState("venue", parseAsString);
const resetFilters = () => {
setCategory(null)
setOrganizer(null)
setVenue(null)
}
/* Allow filtering on all categories that are configured to be shown */ /* Allow filtering on all categories that are configured to be shown */
const filterableCategories = eventCategories.filter((x) => x.showInFilters); const filterableCategories = eventCategories.filter((x) => x.showInFilters);
@ -138,6 +144,8 @@ export const EventContainer = ({
venues={filterableVenues} venues={filterableVenues}
setVenue={setVenue} setVenue={setVenue}
activeVenue={venue} activeVenue={venue}
resetFilters={resetFilters}
toggleVisibility={toggleFilter}
isVisible={showFilter} isVisible={showFilter}
/> />
<EventFilterExplained <EventFilterExplained
@ -155,8 +163,6 @@ export const EventContainer = ({
); );
}; };
const ActiveFilterExplained = ({})
const EventList = ({ events }: { events: EventFragment[] }) => { const EventList = ({ events }: { events: EventFragment[] }) => {
return ( return (
<ul className={styles.eventList}> <ul className={styles.eventList}>

View File

@ -2,6 +2,7 @@ import { EventCategory, EventOrganizer } from "@/lib/event";
import styles from "./eventFilter.module.scss"; import styles from "./eventFilter.module.scss";
import { VenueFragment } from "@/gql/graphql"; import { VenueFragment } from "@/gql/graphql";
import Icon from "../general/Icon";
export const EventFilter = ({ export const EventFilter = ({
eventCategories, eventCategories,
@ -13,6 +14,8 @@ export const EventFilter = ({
venues, venues,
activeVenue, activeVenue,
setVenue, setVenue,
resetFilters,
toggleVisibility,
isVisible, isVisible,
}: { }: {
eventCategories: EventCategory[]; eventCategories: EventCategory[];
@ -24,6 +27,8 @@ export const EventFilter = ({
venues: VenueFragment[]; venues: VenueFragment[];
activeVenue: string | null; activeVenue: string | null;
setVenue: (slug: string | null) => void; setVenue: (slug: string | null) => void;
resetFilters: () => void;
toggleVisibility: () => void;
isVisible: boolean; isVisible: boolean;
}) => { }) => {
const onOrganizerSelect = (e: React.ChangeEvent<HTMLSelectElement>) => { const onOrganizerSelect = (e: React.ChangeEvent<HTMLSelectElement>) => {
@ -34,6 +39,10 @@ export const EventFilter = ({
const venue = e.target.value; const venue = e.target.value;
setVenue(venue === "" ? null : venue); setVenue(venue === "" ? null : venue);
}; };
const onResetFilters = (e: React.MouseEvent<HTMLButtonElement>) => {
resetFilters();
toggleVisibility();
};
return ( return (
<div className={styles.eventFilter} data-show={isVisible}> <div className={styles.eventFilter} data-show={isVisible}>
@ -101,6 +110,14 @@ export const EventFilter = ({
</select> </select>
</div> </div>
</div> </div>
{(activeCategory || activeOrganizer || activeVenue) && (
<div className={styles.filterItem}>
<button onClick={onResetFilters} className="button tertiary">
<span>Vis alle</span>
<Icon />
</button>
</div>
)}
</div> </div>
</div> </div>
); );