Skip to content

Commit c648c39

Browse files
authored
Feature: Occurrence fixes (#1213)
1 parent 2f12e59 commit c648c39

3 files changed

Lines changed: 30 additions & 32 deletions

File tree

frontend/src/components/common/EventCard/index.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,13 +344,25 @@ export function EventCard({event, compact = false}: EventCardProps) {
344344
)}
345345
</div>
346346
<div className={classes.footer}>
347-
<NavLink
348-
to={`/manage/organizer/${event?.organizer?.id}`}
347+
<span
348+
role="link"
349+
tabIndex={0}
349350
className={classes.organizer}
350-
onClick={(e) => e.stopPropagation()}
351+
onClick={(e) => {
352+
e.preventDefault();
353+
e.stopPropagation();
354+
navigate(`/manage/organizer/${event?.organizer?.id}`);
355+
}}
356+
onKeyDown={(e) => {
357+
if (e.key === 'Enter' || e.key === ' ') {
358+
e.preventDefault();
359+
e.stopPropagation();
360+
navigate(`/manage/organizer/${event?.organizer?.id}`);
361+
}
362+
}}
351363
>
352364
{event?.organizer?.name}
353-
</NavLink>
365+
</span>
354366
{ticketAvailability && (
355367
<span className={`${classes.ticketStatus} ${classes[`ticket-${ticketAvailability.status}`]}`}>
356368
{ticketAvailability.text}

frontend/src/components/common/EventDateRange/index.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,19 @@ export const EventDateRange = ({event, occurrence}: EventDateRangeProps) => {
4242
}
4343

4444
if (event.type === EventType.RECURRING) {
45-
const activeOccurrences = (event.occurrences || [])
46-
.filter(o => o.status === EventOccurrenceStatus.ACTIVE && !o.is_past)
45+
const upcomingOccurrences = (event.occurrences || [])
46+
.filter(o => o.status !== EventOccurrenceStatus.CANCELLED && !o.is_past)
4747
.sort((a, b) => a.start_date.localeCompare(b.start_date));
4848

49-
if (activeOccurrences.length > 0) {
50-
const next = activeOccurrences[0];
51-
if (activeOccurrences.length === 1) {
49+
if (upcomingOccurrences.length > 0) {
50+
const next = upcomingOccurrences[0];
51+
if (upcomingOccurrences.length === 1) {
5252
return formatRange(next.start_date, next.end_date, event.timezone);
5353
}
5454
const nextFormatted = formatDateWithLocale(next.start_date, "shortDateTime", event.timezone);
5555
return (
5656
<span>
57-
{t`Next: ${nextFormatted}`} · {t`${activeOccurrences.length} upcoming dates`}
57+
{t`Next: ${nextFormatted}`} · {t`${upcomingOccurrences.length} upcoming dates`}
5858
</span>
5959
);
6060
}

frontend/src/components/layouts/EventHomepage/index.tsx

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import "../../../styles/widget/default.scss";
44
import React, {useEffect, useRef, useState} from "react";
55
import {EventDocumentHead} from "../../common/EventDocumentHead";
66
import {eventCoverImage, eventHomepageUrl, imageUrl, organizerHomepageUrl} from "../../../utilites/urlHelper.ts";
7-
import {Event, EventOccurrence, EventOccurrenceStatus, EventType, LocationType, OrganizerStatus} from "../../../types.ts";
7+
import {Event, EventOccurrence, EventType, LocationType, OrganizerStatus} from "../../../types.ts";
88
import {EventNotAvailable} from "./EventNotAvailable";
99
import {
1010
IconArrowUpRight,
@@ -392,29 +392,15 @@ const EventHomepage = ({...loaderData}: EventHomepageProps) => {
392392
</div>
393393

394394
{/* Event Ended */}
395-
{event.type === EventType.RECURRING ? (
396-
(event.occurrences || []).filter(o => o.status === EventOccurrenceStatus.ACTIVE && !o.is_past).length === 0 &&
397-
(event.occurrences || []).length > 0 && (
398-
<div className={classes.metaItem}>
399-
<div className={classes.metaIconBox}>
400-
<IconCalendarOff/>
401-
</div>
402-
<div className={classes.metaContent}>
403-
<div className={classes.metaPrimary}>{t`No upcoming dates`}</div>
404-
</div>
395+
{event.type !== EventType.RECURRING && event.end_date && isDateInPast(event.end_date) && (
396+
<div className={classes.metaItem}>
397+
<div className={classes.metaIconBox}>
398+
<IconCalendarOff/>
405399
</div>
406-
)
407-
) : (
408-
event.end_date && isDateInPast(event.end_date) && (
409-
<div className={classes.metaItem}>
410-
<div className={classes.metaIconBox}>
411-
<IconCalendarOff/>
412-
</div>
413-
<div className={classes.metaContent}>
414-
<div className={classes.metaPrimary}>{t`This event has ended`}</div>
415-
</div>
400+
<div className={classes.metaContent}>
401+
<div className={classes.metaPrimary}>{t`This event has ended`}</div>
416402
</div>
417-
)
403+
</div>
418404
)}
419405

420406
{/* Online Event */}

0 commit comments

Comments
 (0)