Skip to content

Commit 07fdc2f

Browse files
authored
Merge pull request #59 from include-davis/homepage-carousel-cms-integration
Homepage Carousel CMS integration
2 parents e1ed048 + aa4db1d commit 07fdc2f

File tree

3 files changed

+58
-16
lines changed

3 files changed

+58
-16
lines changed

app/(pages)/(home)/page.jsx

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,44 @@ async function getHomeCards() {
6969
}
7070
}
7171

72+
async function getHomepageCarouselCards() {
73+
try {
74+
const res = await fetch(
75+
`${process.env.CMS_BASE_URL}/api/content/homepage-carousel-cards?_published=true`,
76+
{ next: { tag: "cms" } }
77+
);
78+
const data = await res.json();
79+
if (!data.ok || !data.body || data.body.length === 0) {
80+
throw new Error(data.error);
81+
}
82+
console.log(data);
83+
const parsedData = data.body.map((card) => {
84+
let button_text, button_link;
85+
if (card.button_text_and_link) {
86+
[button_text, button_link] = card.button_text_and_link.split(",");
87+
}
88+
return {
89+
title: card.title,
90+
hours: card.hours,
91+
appointment_instruction: card.appointment_instruction,
92+
image: card.image[0],
93+
image_alt_text: card.image_alt_text,
94+
button_text: button_text,
95+
button_link: button_link,
96+
};
97+
});
98+
console.log(parsedData);
99+
return parsedData;
100+
} catch (e) {
101+
console.error(`Failed to fetch homepage-carousel-cards: ${e.message}`);
102+
return HomeCardsFallbackData;
103+
}
104+
}
105+
72106
export default async function Home() {
73107
const generalData = await getHomeGeneralInfo();
74108
const homeData = await getHomeCards();
109+
const homeCarouselData = await getHomepageCarouselCards();
75110

76111
return (
77112
<main className={styles.body}>
@@ -151,7 +186,7 @@ export default async function Home() {
151186
</div>
152187
</div>
153188

154-
<HomepageCarousel data={data.carousel} />
189+
<HomepageCarousel data={homeCarouselData} />
155190

156191
<div className={styles.contactCard}>
157192
<div className={styles.dots3}>

app/(pages)/_components/HomepageCarousel/HomepageCarousel.jsx

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@ import "swiper/css";
1212
import "swiper/css/free-mode";
1313

1414
export default function HomepageCarousel({ data }) {
15-
const slides = Object.values(data);
15+
let slides = Object.values(data);
16+
if (Object.keys(data).length < 4) {
17+
slides = Object.values([...data, ...data])
18+
}
19+
20+
console.log(slides);
21+
1622
const swiperRef = useRef(null);
1723
const [activeIndex, setActiveIndex] = useState(1);
1824
const numSlides = 4;
@@ -65,8 +71,8 @@ export default function HomepageCarousel({ data }) {
6571
>
6672
<div className={styles.imageContainer}>
6773
<Image
68-
src={slideinfo.src}
69-
alt="image"
74+
src={slideinfo.image}
75+
alt={slideinfo.image_alt_text}
7076
fill
7177
style={{ objectFit: "cover" }}
7278
sizes={"(max-width: 1048px) 50vw, (max-width: 720px) 33vw"}
@@ -80,18 +86,18 @@ export default function HomepageCarousel({ data }) {
8086
size={20}
8187
color="var(--emerald)"
8288
/>
83-
<p>{slideinfo.time}</p>
89+
<p>{slideinfo.hours}</p>
8490
</div>
8591
<div>
8692
<IoMdInformationCircle
8793
className={styles.icon}
8894
size={20}
8995
color="var(--emerald)"
9096
/>
91-
<p>{slideinfo.info}</p>
97+
<p>{slideinfo.appointment_instruction}</p>
9298
</div>
93-
<a href="/clinic-schedule" className="btn">
94-
Schedule Now
99+
<a href={slideinfo.button_link} className="btn">
100+
{slideinfo.button_text}
95101
</a>
96102
</div>
97103
</div>

app/(pages)/_components/HomepageCarousel/HomepageCarousel.module.scss

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
color: var(--dark-grey);
2424
}
2525

26-
.swiper {
27-
width: calc(8px * 123);
28-
display: flex;
29-
justify-content: center;
30-
align-items: center;
31-
margin: auto;
32-
overflow: visible !important;
26+
.swiper{
27+
width: calc(8px * 123);
28+
// display: flex;
29+
justify-content: center;
30+
align-items: center;
31+
margin: auto;
32+
overflow: visible !important;
3333
}
3434

3535
.swiperslide {
@@ -68,7 +68,8 @@
6868
}
6969

7070
.unshown {
71-
display: none;
71+
opacity: 1;
72+
pointer-events: none !important;
7273
}
7374

7475
.imageContainer {

0 commit comments

Comments
 (0)