Skip to content

Commit 4ab456c

Browse files
Fix: enable Join Now button rendering and add reliable redirect handler for event listings
1 parent df2dbab commit 4ab456c

File tree

1 file changed

+28
-8
lines changed
  • src/components/UpcomingEventCard

1 file changed

+28
-8
lines changed

src/components/UpcomingEventCard/index.js

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,38 +13,58 @@ const UpcomingEvents = ({ data }) => {
1313
return (
1414
<UpcomingEventsWrapper>
1515
<div className="blog-slider swiper">
16-
<div style={{
17-
display: "block"
18-
}} className="blog-slider__wrp swiper-wrapper"
19-
>
20-
16+
<div style={{ display: "block" }} className="blog-slider__wrp swiper-wrapper">
2117
<Swiper
2218
spaceBetween={50}
2319
slidesPerView={1}
2420
modules={[Mousewheel, Pagination]}
2521
pagination={{ clickable: true }}
2622
>
2723
{data.nodes.map(item => {
24+
const joinUrl = item.frontmatter.eurl || item.frontmatter.joinLink || item.frontmatter.registration || "";
25+
const isValidUrl = joinUrl && /^https?:\/\//i.test(joinUrl);
2826
return (
2927
<SwiperSlide key={item.id}>
3028
<div className="blog-slider_item swiper-slide">
3129
<div className="blog-slider_img">
3230
<Link to={`/community/events/${slugify(item.frontmatter.title)}`}>
33-
<Image {...item.frontmatter.thumbnail} alt={item.frontmatter.title} />
31+
<Image {...item.frontmatter.thumbnail} alt={item.frontmatter.title} />
3432
</Link>
3533
</div>
3634
<div className="blog-slider_content">
3735
<h3 className="blog-slider_title">{item.frontmatter.title}</h3>
3836
<p className="blog-slider_date">{item.frontmatter.date}</p>
3937
<p className="blog-slider_description">{item.frontmatter.abstract}</p>
40-
<Button $secondary className="blog-slider_button" $url={item.frontmatter.eurl} title="Join Now" $external={true} />
38+
{isValidUrl ? (
39+
<Button
40+
$secondary
41+
className="blog-slider_button"
42+
$url={joinUrl}
43+
title="Join Now"
44+
$external={true}
45+
aria-label={`Join ${item.frontmatter.title} event`}
46+
/>
47+
) : (
48+
<Button
49+
$secondary
50+
className="blog-slider_button"
51+
title="Join Now"
52+
aria-label={`Join ${item.frontmatter.title} event (link unavailable)`}
53+
disabled
54+
style={{ opacity: 0.5, cursor: "not-allowed" }}
55+
onClick={() => {
56+
57+
console.error(`No valid join link for event: ${item.frontmatter.title}`);
58+
}}
59+
>Join Now
60+
</Button>
61+
)}
4162
</div>
4263
</div>
4364
</SwiperSlide>
4465
);
4566
})}
4667
</Swiper>
47-
4868
</div>
4969
</div>
5070
</UpcomingEventsWrapper>

0 commit comments

Comments
 (0)