add button for disabling all filters
This commit is contained in:
@ -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}>
|
||||||
|
@ -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>
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user